我计划用两个相同的(4TB 磁盘)替换两个软 RAID1 磁盘(2TB)。当前磁盘配置为运行 debian 11 的软 RAID 1。磁盘不是 root。
我的计划是用新的 4TB 磁盘替换(支持热插拔)一个 2TB 磁盘,并等待磁盘与 mdadm 同步(我什至不知道如何执行此操作,但我想我会 Google 一下)。同步结束后,我计划对剩余的 2TB 磁盘进行相同的热插拔,将其替换为另一个新的 4TB 磁盘,并等待 mdadm 完成同步。
此时,我仍然(希望)发现自己有两个分区为 2TB 的 LUKS 磁盘,需要扩大。这个操作很麻烦,但我以前在我的笔记本电脑上做过,但从未使用过 RAID1 配置。
- 你觉得我的计划有意义吗?
- 您能否指导如何扩大 RAID 1 LUKS 分区(即我计划的最后一步)?
- 还有其他更明智的选择吗?
根据评论中的要求,以下是输出lsblk
:
root@server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.6T 0 disk
`-sda1 8:1 0 3.6T 0 part
`-md4 9:4 0 3.6T 0 raid1
`-4tb 253:1 0 3.6T 0 crypt /media/4tb
sdb 8:16 0 3.6T 0 disk
`-sdb1 8:17 0 3.6T 0 part
`-md4 9:4 0 3.6T 0 raid1
`-4tb 253:1 0 3.6T 0 crypt /media/4tb
sdc 8:32 0 119.2G 0 disk
`-sdc1 8:33 0 119.2G 0 part
`-md127 9:127 0 119.2G 0 raid1 /
sdd 8:48 0 119.2G 0 disk
`-sdd1 8:49 0 119.2G 0 part
`-md127 9:127 0 119.2G 0 raid1 /
sde 8:64 0 465.8G 0 disk
`-sde1 8:65 0 465.8G 0 part
`-md0 9:0 0 465.6G 0 raid1
sdf 8:80 0 2.7T 0 disk
`-sdf1 8:81 0 2.7T 0 part
`-3tb 253:2 0 2.7T 0 crypt /media/3tb
sdg 8:96 1 931.5G 0 disk
`-sdg1 8:97 1 931.5G 0 part
`-md1 9:1 0 931.4G 0 raid1
`-vm 253:3 0 931.4G 0 crypt /media/vm
sdh 8:112 1 1.8T 0 disk
`-sdh1 8:113 1 1.8T 0 part
`-md2 9:2 0 1.8T 0 raid1
`-backup 253:0 0 1.8T 0 crypt /media/backup
sdi 8:128 1 931.5G 0 disk
`-sdi1 8:129 1 931.5G 0 part
`-md1 9:1 0 931.4G 0 raid1
`-vm 253:3 0 931.4G 0 crypt /media/vm
sdj 8:144 1 1.8T 0 disk
`-sdj1 8:145 1 1.8T 0 part
`-md2 9:2 0 1.8T 0 raid1
`-backup 253:0 0 1.8T 0 crypt /media/backup
答案1
你所有的/media/*
坐骑似乎都使用磁盘->部分->raid1->crypt分层。
请注意,如果您现有的 2 TB 磁盘以 MBR 样式进行分区,则您实际上无法对新的更大磁盘执行此操作,因为您将达到 MBR 最大容量限制。幸运的是,Linux 软件 RAID 不要求您在 RAID 集的各个部分上具有相同类型的分区(或者事实上,对于非引导磁盘,您可以选择根本不使用任何分区方案)。
因此,假设这md2
是您希望迁移到更大磁盘的 RAID 集,并且您需要sdh
首先进行交换:
- 标记
sdh1
为故障 RAID1 组件:mdadm --manage /dev/md2 --fail /dev/sdh1
- 将其从
md2
RAID 集中删除:mdadm --manage /dev/md2 --remove /dev/sdh1
- 告诉内核磁盘将被热拔出:
echo 1 > /sys/block/sdh/device/delete
。根据控制器和磁盘型号的不同,执行此操作时磁盘实际上可能会或可能不会旋转。 - 以物理方式更换
sdh
新磁盘。 - 找出新的磁盘设备名称(可能是也可能不是
/dev/sdh
;我们称之为sdX
)。 - 如果您希望使用分区,请使用 GPT 分区类型并创建覆盖整个磁盘的单个分区。将分区类型设置为“Linux RAID”(GPT 分区类型 GUID
A19D880F-05FC-4D3B-A006-743F0F84911E
;大多数 GPT 分区工具都有一些更用户友好的方式来指定。)该分区将比该 RAID 集现有的一半大;此时完全没问题。mdadm
将仅使用镜像分区所需的容量,sdi1
直到您在稍后的步骤 #10 中授予其使用全部容量的权限。
(如果您使用分区,您可能需要使用一些特定的大小,而不是完全使用磁盘,以防止您将来可能需要更换磁盘并且可能无法找到替换磁盘同样,未来的磁盘可能比当前的磁盘更大,这将不再是问题。)
- 将新磁盘添加到 RAID 集。如果您对磁盘进行了分区,请使用
mdadm --manage /dev/md2 --add /dev/sdX1
;如果您决定使用整个磁盘作为未分区的 RAID 设备,请使用mdadm --manage /dev/md2 --add /dev/sdX
. - 监视
/proc/mdstat
以查看同步何时完成。 - 对第二个磁盘重复步骤 1-8
sdj
。 - 当两个磁盘均已更换且同步后,使用
mdadm --grow /dev/md2 --size=max
以使md2
RAID 设备能够充分利用增加的容量。
(如果您在上面的步骤 #6 中选择不使用分区,您也可以使用特定的大小来代替--size=max
此处,原因与步骤 #6 中相同。)
md2
成功调整设备大小后,可用于cryptsetup resize /dev/mapper/backup
调整 RAID 集之上的加密设备的大小md2
。fsadm resize /dev/mapper/backup
最后,使用或使用特定于文件系统的工具(resize2fs /dev/mapper/backup
对于 ext2/ext3/ext4 文件系统类型、xfs_growfs /media/backup
XFS 等)调整加密设备顶部的文件系统大小。