无法在 Ubuntu 上使用 mdadm 缩小 RAID 0

问题描述

我目前有一个 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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...