pub struct RaidArray {
pub name: String,
pub uuid: [u8; 16],
pub level: RaidLevel,
pub chunk_size: u64,
pub disks: Vec<RaidDisk>,
pub spares: Vec<RaidDisk>,
pub state: ArrayState,
pub superblock: Superblock,
pub rebuild_progress: u8,
}Expand description
A RAID array composed of multiple disks.
Fields§
§name: StringArray name.
uuid: [u8; 16]Array UUID.
level: RaidLevelRAID level.
chunk_size: u64Chunk size in blocks.
disks: Vec<RaidDisk>Member disks.
spares: Vec<RaidDisk>Hot spare disks.
state: ArrayStateArray state.
superblock: SuperblockSuperblock.
rebuild_progress: u8Rebuild progress (0-100).
Implementations§
Source§impl RaidArray
impl RaidArray
Sourcepub fn new(
name: &str,
level: RaidLevel,
disks: Vec<RaidDisk>,
) -> Result<Self, RaidError>
pub fn new( name: &str, level: RaidLevel, disks: Vec<RaidDisk>, ) -> Result<Self, RaidError>
Create a new RAID array.
Sourcepub fn stripe_map(&self, logical_block: u64) -> Result<StripeMap, RaidError>
pub fn stripe_map(&self, logical_block: u64) -> Result<StripeMap, RaidError>
Map a logical block to a physical stripe location (RAID0).
Sourcepub fn raid5_map(&self, logical_block: u64) -> Result<StripeMap, RaidError>
pub fn raid5_map(&self, logical_block: u64) -> Result<StripeMap, RaidError>
Map a logical block for RAID5 (left-symmetric parity rotation).
Sourcepub fn read_stripe(&self, logical_block: u64) -> Result<StripeMap, RaidError>
pub fn read_stripe(&self, logical_block: u64) -> Result<StripeMap, RaidError>
Read a stripe (dispatch by RAID level).
Sourcepub fn write_stripe(
&self,
logical_block: u64,
) -> Result<Vec<StripeMap>, RaidError>
pub fn write_stripe( &self, logical_block: u64, ) -> Result<Vec<StripeMap>, RaidError>
Write a stripe (dispatch by RAID level, returns all disks to write).
Sourcepub fn compute_parity(blocks: &[&[u8]]) -> Vec<u8>
pub fn compute_parity(blocks: &[&[u8]]) -> Vec<u8>
Compute XOR parity across data blocks.
Sourcepub fn rebuild(&mut self, failed_disk_idx: usize) -> Result<(), RaidError>
pub fn rebuild(&mut self, failed_disk_idx: usize) -> Result<(), RaidError>
Rebuild a failed disk from parity and remaining data.
Sourcepub fn check_health(&mut self) -> ArrayState
pub fn check_health(&mut self) -> ArrayState
Check array health and update state.
Sourcepub fn replace_disk(&mut self, failed_disk_idx: usize) -> Result<(), RaidError>
pub fn replace_disk(&mut self, failed_disk_idx: usize) -> Result<(), RaidError>
Replace a failed disk with a spare.
Sourcepub fn active_disk_count(&self) -> usize
pub fn active_disk_count(&self) -> usize
Get the number of active disks.
Sourcepub fn failed_disk_count(&self) -> usize
pub fn failed_disk_count(&self) -> usize
Get the number of failed disks.
Sourcepub fn capacity_blocks(&self) -> u64
pub fn capacity_blocks(&self) -> u64
Get usable capacity in blocks.