问题描述
我目前有一个 2TB RAID 0 设置,由两个 1TB 的 HDD 组成,并按如下方式拆分:
- 15 Gb 交换为 /dev/md0
- 剩余空间格式化为 ext4,Ubuntu 20.10 安装为 /dev/md1
我想缩小后者( /dev/md1 )以便有一些未分配的空间并在其上创建另一个分区。但是,无论是使用 Gparted 还是使用 bash,我都无法做到这一点。
文件系统收缩步骤有效(950 Gb)
sudo resize2fs /dev/md1 950G
但是当我尝试缩小实际设备时(到 1TB,即 1000 * 1024 * 1024 = 1048576000)
sudo mdadm --grow /dev/md1 --size=1048576000
我收到以下错误
Cannot set device size in this type of array
有什么方法可以做到这一点,还是 RAID 0 有问题?
谢谢。
解决方法
mdadm 的 --size
仅适用于 RAID 级别 1/4/5/6,并且没有以千字节为单位给出的“K”、“M”或“G”后缀。
要缩小 RAID0,您可以按以下方式更改级别 RAID0 -> RAID4 -> RAID0
umount /dev/md1
e2fsck /dev/md1 -f
resize2fs /dev/md1 945G # left an extra 5G or more of margin
mdadm -G /dev/md1 -l 4 # go to level raid4
mdadm -G /dev/md1 -z 950G
e2fsck /dev/md1 -f # make sure you didn't break things
mdadm -G /dev/md1 -n 2 --backup=backup
mdadm -D /dev/md1 # watch until it is done reshaping then delete and recreate (950G/2=475G) partitions on each disk with fdisk and NOT overwrite raid signature
mdadm -G /dev/md1 -l 0 # return level raid0
mdadm -G /dev/md1 -z max # maximize the fs to use the full disk
resize2fs /dev/md1
e2fsck /dev/md1 -f # finally check