Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm raid: add documentation for takeover/reshape raid1 -> raid5 table line examples

Also enhance possible takeover/reshape information and do some reformatting.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>

authored by

Heinz Mauelshagen and committed by
Mikulas Patocka
7799eaec ab08f9c8

+73 -7
+73 -7
Documentation/admin-guide/device-mapper/dm-raid.rst
··· 20 20 raid0 RAID0 striping (no resilience) 21 21 raid1 RAID1 mirroring 22 22 raid4 RAID4 with dedicated last parity disk 23 - raid5_n RAID5 with dedicated last parity disk supporting takeover 23 + raid5_n RAID5 with dedicated last parity disk supporting takeover from/to raid1 24 24 Same as raid4 25 25 26 - - Transitory layout 26 + - Transitory layout for takeover from/to raid1 27 27 raid5_la RAID5 left asymmetric 28 28 29 29 - rotating parity 0 with data continuation ··· 48 48 raid6_n_6 RAID6 with dedicate parity disks 49 49 50 50 - parity and Q-syndrome on the last 2 disks; 51 - layout for takeover from/to raid4/raid5_n 52 - raid6_la_6 Same as "raid_la" plus dedicated last Q-syndrome disk 51 + layout for takeover from/to raid0/raid4/raid5_n 52 + raid6_la_6 Same as "raid_la" plus dedicated last Q-syndrome disk supporting takeover from/to raid5 53 53 54 54 - layout for takeover from raid5_la from/to raid6 55 55 raid6_ra_6 Same as "raid5_ra" dedicated last Q-syndrome disk ··· 173 173 The delta_disks option value (-251 < N < +251) triggers 174 174 device removal (negative value) or device addition (positive 175 175 value) to any reshape supporting raid levels 4/5/6 and 10. 176 - RAID levels 4/5/6 allow for addition of devices (metadata 177 - and data device tuple), raid10_near and raid10_offset only 178 - allow for device addition. raid10_far does not support any 176 + RAID levels 4/5/6 allow for addition and removal of devices 177 + (metadata and data device tuple), raid10_near and raid10_offset 178 + only allow for device addition. raid10_far does not support any 179 179 reshaping at all. 180 180 A minimum of devices have to be kept to enforce resilience, 181 181 which is 3 devices for raid4/5 and 4 devices for raid6. ··· 370 370 to safely enable discard support for RAID 4/5/6: 371 371 372 372 'devices_handle_discards_safely' 373 + 374 + 375 + Takeover/Reshape Support 376 + ------------------------ 377 + The target natively supports these two types of MDRAID conversions: 378 + 379 + o Takeover: Converts an array from one RAID level to another 380 + 381 + o Reshape: Changes the internal layout while maintaining the current RAID level 382 + 383 + Each operation is only valid under specific constraints imposed by the existing array's layout and configuration. 384 + 385 + 386 + Takeover: 387 + linear -> raid1 with N >= 2 mirrors 388 + raid0 -> raid4 (add dedicated parity device) 389 + raid0 -> raid5 (add dedicated parity device) 390 + raid0 -> raid10 with near layout and N >= 2 mirror groups (raid0 stripes have to become first member within mirror groups) 391 + raid1 -> linear 392 + raid1 -> raid5 with 2 mirrors 393 + raid4 -> raid5 w/ rotating parity 394 + raid5 with dedicated parity device -> raid4 395 + raid5 -> raid6 (with dedicated Q-syndrome) 396 + raid6 (with dedicated Q-syndrome) -> raid5 397 + raid10 with near layout and even number of disks -> raid0 (select any in-sync device from each mirror group) 398 + 399 + Reshape: 400 + linear: not possible 401 + raid0: not possible 402 + raid1: change number of mirrors 403 + raid4: add and remove stripes (minimum 3), change stripesize 404 + raid5: add and remove stripes (minimum 3, special case 2 for raid1 takeover), change rotating parity algorithms, change stripesize 405 + raid6: add and remove stripes (minimum 4), change rotating syndrome algorithms, change stripesize 406 + raid10 near: add stripes (minimum 4), change stripesize, no stripe removal possible, change to offset layout 407 + raid10 offset: add stripes, change stripesize, no stripe removal possible, change to near layout 408 + raid10 far: not possible 409 + 410 + Table line examples: 411 + 412 + ### raid1 -> raid5 413 + # 414 + # 2 devices limitation in raid1. 415 + # raid5 personality is able to just map 2 like raid1. 416 + # Reshape after takeover to change to full raid5 layout 417 + 418 + 0 1960886272 raid raid1 3 0 region_size 2048 2 /dev/dm-0 /dev/dm-1 /dev/dm-2 /dev/dm-3 419 + 420 + # dm-0 and dm-2 are e.g. 4MiB large metadata devices, dm-1 and dm-3 have to be at least 1960886272 big. 421 + # 422 + # Table line to takeover to raid5 423 + 424 + 0 1960886272 raid raid5 3 0 region_size 2048 2 /dev/dm-0 /dev/dm-1 /dev/dm-2 /dev/dm-3 425 + 426 + # Add required out-of-place reshape space to the beginniong of the given 2 data devices, 427 + # allocate another metadata/data device tuple with the same sizes for the parity space 428 + # and zero the first 4K of the metadata device. 429 + # 430 + # Example table of the out-of-place reshape space addition for one data device, e.g. dm-1 431 + 432 + 0 8192 linear 8:0 0 1960903888 # <- must be free space segment 433 + 8192 1960886272 linear 8:0 0 2048 # previous data segment 434 + 435 + # Mapping table for e.g. raid5_rs reshape causing the size of the raid device to double-fold once the reshape finishes. 436 + # Check the status output (e.g. "dmsetup status $RaidDev") for progess. 437 + 438 + 0 $((2 * 1960886272)) raid raid5 7 0 region_size 2048 data_offset 8192 delta_disk 1 2 /dev/dm-0 /dev/dm-1 /dev/dm-2 /dev/dm-3 373 439 374 440 375 441 Version History