Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

IBM's storage systems as well as Linux' mdraid do support RAID level 1E to be able to use an odd number of disks for a 50% redundancy:

RAID 1E

Would I achieve the same effect creating a zpool with an odd number of single-disk vdevs while setting copies=2? How does this work from a management perspective - would I still be able to do a zpool replace to replace a disk? How would the pool behave upon a disk failure in such a setup?

share|improve this question
1  
Isn't RAID 1E like ZFS's triple-mirroring? Or no.. –  ewwhite Jun 15 '13 at 22:35
1  
@ewwhite nope - it is a striping technique where the stripes are written to disks in a round-robin fashion - creating redundancy with 50% of the capacity. –  syneticon-dj Jun 16 '13 at 6:45
    
What's the advantage of 1E over RAID5 or raidz1? –  longneck Jul 25 '13 at 19:18
    
If anyone has any questions about RAID 1E, read What are the different widely used RAID levels and when should I consider them? first. –  Chris S Jul 25 '13 at 19:20
    
Yes! With 27 physical disk, you may build 9 raid 1E using HW-Raid controlers, than you could build 3 Linux MD Raid-1e, useable as 3 physical devices for ZFS, from where you may use copies=2 to be able to use 1.5x size of 1 disk... data would be redundants! –  F. Hauri Jul 25 '13 at 19:20
show 2 more comments

2 Answers

up vote 2 down vote accepted

As far as I know, no.

'zpool copies' creates redundant bits as you know, and as I recall, it is supposed to try to push those redundant bits as far away geographically as possible, but I don't believe it is a hard & fast requirement like it is for mirrored bits in a mirror vdev; space constraints, other moving pieces could I believe lead to a scenario where copy #2 is still on the same disk. If that happens even once, then losing a drive from such a config would be a problem, data retention wise.

Nor is it something that the pool administrative commands are designed to treat in the same way they'd treat mirrored vdevs. Nor is it something the ZFS workflow is designed to treat the same way it does mirrored or parity vdevs -- if you lost a disk out of a pool that had multiple disks as top-level vdevs, even if you had copies=2 or higher set right from day 1, I would expect ZFS to complain mightily, and possibly begin returning errors for data access.

I would not expect copies=2 (or more) to act like RAID 1E. However, if you created multiple partitions on your disks, and set them up in the proper mirrored vdevs, you could probably replicate the idea of RAID 1E with ZFS. If you had 3 drives, each with 2 partitions, and you set up the mirror vdevs so that each pair of partitions are not from the same drive, then the resulting pool could survive a single disk loss. The performance characteristics of such a pool, however, have never been explored to my knowledge (I'd surmise they would be bad).

share|improve this answer
    
Your assumptions seem to be backed by other people's findings: serverfault.com/questions/377892/…, copies are not guaranteed to be on different vdevs and the pool will go to a FAILED state after losing a vdev, no matter the number of copies. –  syneticon-dj Jul 26 '13 at 7:48
    
Partitioning the device to mimic RAID1E seems to do the trick and balance I/O evenly if in an array with N disks you create 2 partitions on each disk and create a zpool of mirrored vdevs pairing up D(1)P(1) - D(2)P(1) ... D(N)P(1) - D(1)P(2) ...D(N-1)P(2) - D(N)P(2) . It obviously would break sequential writes, though. –  syneticon-dj Jul 26 '13 at 8:15
add comment

ZFS does not support RAID 1E because RAID-Z does not suffer from a RAID 5 write hole. RAID-Z offers better space utilization, no performance difference, and the same fault tolerance.

Setting copies=2 does not force those copies to be on different physical disks. So it offers no fault protection for physical disk faults. Setting the number to more than 1, the default, makes copies called ditto blocks. These are useful for recovering from URE or power loss data corruption (as there will be another copy of the data, hopefully with a valid checksum). ZFS offers inherent data corruption detection, not protection; this is protection against certain types of corruption.

share|improve this answer
    
There is a significant difference in performance characteristics for the small reads workload. As RAIDZ would read all stripes of a set and recalculate the parity for validation, small reads would keep the array busy quickly. –  syneticon-dj Jul 26 '13 at 6:39
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.