On 2015-11-12 12:23, Dmitry Katsubo wrote: > On 2015-11-12 13:47, Austin S Hemmelgarn wrote: >>> That's a pretty unusual setup, so I'm not surprised there's no quick and >>> easy answer. The best solution in my opinion would be to shuffle your >>> partitions around and combine sda3 and sda8 into a single partition. >>> There's generally no reason to present btrfs with two different >>> partitions on the same disk. >>> >>> If there's something that prevents you from doing that, you may be able >>> to use RAID10 or RAID6 somehow. I'm not really sure, though, so I'll >>> defer to others on the list for implementation details. >> RAID10 has the same issue. Assume you have 1 block. This gets stored >> as 2 copies, each with 2 stripes, with the stripes split symmetrically. >> For this, call the first half of the first copy 1a, the second half 1b, >> and likewise for 2a and 2b with the second copy. 1a and 2a have >> identical contents, and 1b and 2b have identical contents. It is fully >> possible that you will end up with this block striped such that 1a and >> 2a are on one disk, and 1b and 2b on the other. Based on this, losing >> one disk would mean losing half the block, which would mean based on how >> BTRFS works that you would lose the whole block (because neither copy >> would be complete). > > Does it equally apply to RAID1? Namely, if I create > > mkfs.btrfs -mraid1 -draid1 /dev/sda3 /dev/sda8 > > then btrfs will "believe" that these are different drives and mistakenly > think that RAID pre-condition is satisfied. Am I right? If so then I > think this is a trap, and mkfs.btrfs should at least warn (or require > --force) if two partitions are on the same drive for raid1/raid5/raid10. > In other words, the only scenario when this check should be skipped is: > > mkfs.btrfs -mraid0 -draid0 /dev/sda3 /dev/sda8 > Yes, BTRFS will assume you know what you are doing in that case and just do it. We probably should have some kind of warning, but that gets tricky when you throw in stuff like LVM (which can have any arbitrary name for the logical volumes, and there isn't any way, even using the tools, to easily figure out what disk a given LV is on).