如何升级我的软件 RAID1 驱动器组?

Gar*_*eth 5 hardware linux raid debian cloning

我在物理 Debian 服务器上的软件 RAID1 设置中有两个 600GB 驱动器。

我希望能够通过将驱动器克隆到一对匹配的 2TB 驱动器来升级服务器的容量。然后我可以擦除 600GB 驱动器并将它们用作存储或其他任何东西。

解决这个问题的最佳方法是什么?

slave:~# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
Run Code Online (Sandbox Code Playgroud)

Zor*_*che 10

您应该能够更换第一个驱动器,将分区添加到阵列并让raid 重新同步。然后更换第二个驱动器,让它重新同步,然后扩展raid和文件系统以占用整个空间。当您对新驱动器进行分区时,使它们占据您想要用于新布局的所有空间。

man mdadm , resize2fs

从阵列中删除设备

mdadm /dev/md0 --remove /dev/olddevice
Run Code Online (Sandbox Code Playgroud)

将设备添加到阵列

mdadm /dev/md0 --add /dev/newdevice
Run Code Online (Sandbox Code Playgroud)

增加数组以占用分区允许的整个空间

mdadm /dev/md0 --grow --size=max
Run Code Online (Sandbox Code Playgroud)

增加文件系统以占用阵列的整个空间

resize2fs /dev/md0
Run Code Online (Sandbox Code Playgroud)

您仍然应该进行备份。只是要确定。如果你想练习和测试,你可能想先在虚拟机中尝试一下,这样你就会有信心。

  • 您可能希望研究 LVM(逻辑卷管理)以备将来使用——它可以简化添加额外驱动器的过程。现在添加太难了,但也许您想为下一个服务器考虑它。 (2认同)

小智 5

以防万一有人用谷歌搜索这个,这是我在 mdadm RAID1 + LVM 上从 2x150Gb 驱动器移动到 2x1Tb 驱动器的经验。

假设,我们有 2 个驱动器——mdadm 镜像 (md0) 中的 small1、small2,新的驱动器是 big1 和 big2。在它们之上是带有卷组 VG1 和逻辑卷 LV1 的 LVM

确保当前 md 一切正常:

cat /proc/mdadm
Run Code Online (Sandbox Code Playgroud)

告诉 mdadm 使一个驱动器失效并将其从 md 阵列中删除:

mdadm /dev/md0 --set-faulty /dev/small1 && mdadm /dev/md0 --remove /dev/small1
Run Code Online (Sandbox Code Playgroud)

用大驱动器替换 small1 驱动器(热插拔或关闭系统电源)。

在 FD 类型的大硬盘上创建新分区(Linux RAID 自动检测)。使其成为您希望新 RAID 的大小。我更喜欢 cfdisk,但这可能会有所不同:

cfdisk /dev/big1
Run Code Online (Sandbox Code Playgroud)

添加新磁盘(或者,正确地说,是您新创建的分区,例如 /dev/sda1):

mdadm /dev/md0 --add /dev/big1
Run Code Online (Sandbox Code Playgroud)

等到阵列同步:

watch cat /proc/mdstat
Run Code Online (Sandbox Code Playgroud)

对另一对驱动器重复此操作。最后你会得到两个大磁盘阵列。

将数组增长到组件设备允许的最大大小,等待同步:

mdadm /dev/md0 --grow --size=max
watch cat /proc/mdstat
Run Code Online (Sandbox Code Playgroud)

现在是调整 LVM 大小的时候了。请注意 --test 选项,它将模拟操作,但不会更改元数据(在实际调整大小之前查看是否有任何配置错误很有用)。

调整物理卷大小:

pvresize --verbose --test /dev/md0
Run Code Online (Sandbox Code Playgroud)

调整逻辑卷大小:

lvresize --verbose -L <SIZE> --test /dev/VG1/LV1
Run Code Online (Sandbox Code Playgroud)

最后,调整 ext3 FS 的大小:

resize2fs /dev/VG1/LV1
Run Code Online (Sandbox Code Playgroud)

使用两个 1Tb 硬盘,我花了大约 20 个小时(在搞乱 LVM 和 FS 之前,我已经从阵列中移除了一个磁盘,所以它是 3 个同步 + 阵列增长)。

一切都在生产服务器上完成,服务运行没有中断。

但不要忘记在进行任何更改之前备份您的数据