Skip to content

Commit 7799eae

Browse files
mauelshaMikulas Patocka
authored andcommitted
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>
1 parent ab08f9c commit 7799eae

1 file changed

Lines changed: 73 additions & 7 deletions

File tree

Documentation/admin-guide/device-mapper/dm-raid.rst

Lines changed: 73 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ The target is named "raid" and it accepts the following parameters::
2020
raid0 RAID0 striping (no resilience)
2121
raid1 RAID1 mirroring
2222
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
2424
Same as raid4
2525

26-
- Transitory layout
26+
- Transitory layout for takeover from/to raid1
2727
raid5_la RAID5 left asymmetric
2828

2929
- rotating parity 0 with data continuation
@@ -48,8 +48,8 @@ The target is named "raid" and it accepts the following parameters::
4848
raid6_n_6 RAID6 with dedicate parity disks
4949

5050
- 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
5353

5454
- layout for takeover from raid5_la from/to raid6
5555
raid6_ra_6 Same as "raid5_ra" dedicated last Q-syndrome disk
@@ -173,9 +173,9 @@ The target is named "raid" and it accepts the following parameters::
173173
The delta_disks option value (-251 < N < +251) triggers
174174
device removal (negative value) or device addition (positive
175175
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
179179
reshaping at all.
180180
A minimum of devices have to be kept to enforce resilience,
181181
which is 3 devices for raid4/5 and 4 devices for raid6.
@@ -372,6 +372,72 @@ to safely enable discard support for RAID 4/5/6:
372372
'devices_handle_discards_safely'
373373

374374

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
439+
440+
375441
Version History
376442
---------------
377443

0 commit comments

Comments
 (0)