pub struct Disk {
pub id: String,
pub name: String,
pub disk_type: DiskType,
pub block_size: u64,
pub num_of_blocks: u64,
pub status: u64,
pub system_id: String,
pub location: Option<String>,
pub rpm: Option<i32>,
pub link_type: Option<DiskLinkType>,
pub vpd83: Option<String>,
/* private fields */
}
Fields§
§id: String
Identifier.
name: String
Human friendly name.
disk_type: DiskType
Disk type.
block_size: u64
Block size in bytes.
num_of_blocks: u64
Count of block.
status: u64
Disk status stored in bitmap. Valid status value are:
Disk::STATUS_UNKNOWN
Disk::STATUS_OK
Disk::STATUS_OTHER
Disk::STATUS_PREDICTIVE_FAILURE
Disk::STATUS_ERROR
Disk::STATUS_REMOVED
Disk::STATUS_STARTING
Disk::STATUS_STOPPING
Disk::STATUS_STOPPED
Disk::STATUS_INITIALIZING
Disk::STATUS_MAINTENANCE_MODE
Disk::STATUS_SPARE_DISK
Disk::STATUS_RECONSTRUCT
Disk::STATUS_FREE
if (d.status & Disk::STATUS_OK) == 0 {
println!("Disk {}/{} is not healthy", d.name, d.id);
}
system_id: String
Identifier of owner system.
location: Option<String>
Disk location in storage topology.
rpm: Option<i32>
Disk rotation speed - revolutions per minute(RPM):
-
-1
– Unknown RPM speed. -
0
– Non-rotating medium (e.g., SSD). -
1
– Rotational disk with unknown speed. -
> 1
– Normal rotational disk (e.g., HDD).
link_type: Option<DiskLinkType>
Disk data link type.
vpd83: Option<String>
SCSI VPD 0x83 NAA type identifier.
Udev treat it as ID_WWN_WITH_EXTENSION
Implementations§
source§impl Disk
impl Disk
sourcepub const STATUS_UNKNOWN: u64 = 1u64
pub const STATUS_UNKNOWN: u64 = 1u64
Plugin failed to query out the status of disk.
sourcepub const STATUS_OTHER: u64 = 4u64
pub const STATUS_OTHER: u64 = 4u64
Vendor specific status.
sourcepub const STATUS_PREDICTIVE_FAILURE: u64 = 8u64
pub const STATUS_PREDICTIVE_FAILURE: u64 = 8u64
Disk is still functional but will fail soon.
sourcepub const STATUS_ERROR: u64 = 16u64
pub const STATUS_ERROR: u64 = 16u64
Error make disk not functional.
sourcepub const STATUS_REMOVED: u64 = 32u64
pub const STATUS_REMOVED: u64 = 32u64
Disk was removed by administrator.
sourcepub const STATUS_STARTING: u64 = 64u64
pub const STATUS_STARTING: u64 = 64u64
Disk is starting up.
sourcepub const STATUS_STOPPING: u64 = 128u64
pub const STATUS_STOPPING: u64 = 128u64
Disk is shutting down.
sourcepub const STATUS_STOPPED: u64 = 256u64
pub const STATUS_STOPPED: u64 = 256u64
Disk is stopped by administrator.
sourcepub const STATUS_INITIALIZING: u64 = 512u64
pub const STATUS_INITIALIZING: u64 = 512u64
Disk is not functional yet, internal storage system is initializing this disk, it could be:
-
Initialising new disk.
-
Zeroing disk.
-
Scrubbing disk data.
sourcepub const STATUS_MAINTENANCE_MODE: u64 = 1_024u64
pub const STATUS_MAINTENANCE_MODE: u64 = 1_024u64
In maintenance for bad sector scan, integrity check and etc It might be
combined with Disk::STATUS_OK
or Disk::STATUS_STOPPED
for online
maintenance or offline maintenance.
sourcepub const STATUS_SPARE_DISK: u64 = 2_048u64
pub const STATUS_SPARE_DISK: u64 = 2_048u64
Disk is configured as spare disk.
sourcepub const STATUS_RECONSTRUCT: u64 = 4_096u64
pub const STATUS_RECONSTRUCT: u64 = 4_096u64
Disk is reconstructing its data.
sourcepub const STATUS_FREE: u64 = 8_192u64
pub const STATUS_FREE: u64 = 8_192u64
Indicate the whole disk is not holding any data or acting as a dedicate
spare disk. This disk could be assigned as a dedicated spare disk or
used for creating pool. If any spare disk(like those on NetApp ONTAP)
does not require any explicit action when assigning to pool, it should
be treated as free disk and marked as
Disk::STATUS_FREE | Disk::STATUS_SPARE_DISK
.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Disk
impl<'de> Deserialize<'de> for Disk
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Disk
impl RefUnwindSafe for Disk
impl Send for Disk
impl Sync for Disk
impl Unpin for Disk
impl UnwindSafe for Disk
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)