====== Shrinking a RAID0 volume to add a smaller device to it ====== **FIXME** Must add the **resize2fs** operation! Suppose we have: * **/dev/md3** is the RAID0 device, running in degraded mode. * **/dev/sda7** is the surviving component of md0, **921GB** in size. * **/dev/sdb7** is the new component to be added to md0, **451GB** in size. === Get the size of the new component sdb7 === Get the exact size (in kb) of the **/dev/sdb7** partition. Using **parted** and display sizes in sector units: parted /dev/sdb (parted) unit s (parted) print ... Sector size (logical/physical): 512B/4096B ... 7 95703040s 976773119s 881070080s home raid so the size of /dev/sdb7 is 881070080 / 2 = **440535040** kb. === Get the size of the running component sda7 and RAID device md3 === Get the size (in kb) of the **/dev/sda7** partition: parted /dev/sda (parted) unit s (parted) print ... Sector size (logical/physical): 512B/4096B ... 7 95703040s 1894920191s 1799217152s home raid The size is 1799217152 / 2 = **899608576** kb. Get the size of the **/dev/md0** RAID volume: mdadm -D /dev/md3 ... Array Size : 899476480 (857.81 GiB 921.06 GB) ... The overhead of the RAID volume is 899608576 - 899476480 = **132096** kb. For safety we allow an extra space of **128** kb for the RAID superblock. === Calcluate the new array size === So we can calculate the new array size: new_array_size = new_component_size - raid_overhead - raid_superblock_size 440535040 - 132096 - 128 = 440402816 It is now possibile to shrink the existing array **/dev/md3** to the new smaller size: mdadm --grow /dev/md3 -z 440402816 Finally we can add the new component to the shrinked array: mdadm /dev/md3 --add /dev/sdb7