将多个驱动器合并为一个卷

将多个驱动器合并为一个卷

我们目前有一台配备 3 个 SSD 驱动器的专用服务器。我们注意到我们实际上已将操作系统部署在单个驱动器上,其他 2 个驱动器目前未被使用。但是,此磁盘几乎已满:

/dev/md2         91G   83G  3.0G  97% /home

此处的合理解决方案是合并所有三个驱动器(3 x 120 GB)的容量并将它们变成一个卷。最好的方法是什么?

不幸的是,重新安装操作系统或类似操作目前不是一个选择。

服务器运行的是 Ubuntu 14.04.5 LTS。我找到了 LVM,但尚未确定这是否是最佳解决方案。

按照要求:

root@hv01:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        20G  2.5G   16G  14% /
devtmpfs         16G  4.0K   16G   1% /dev
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            3.2G  572K  3.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             16G   24K   16G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/md2         91G   84G  2.6G  98% /home

root@hv01:~# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]     [multipath] [faulty] 
md1 : active raid1 sdc1[2] sda1[0] sdb1[1]
  20478912 blocks [3/3] [UUU]

md2 : active raid1 sdc2[2] sda2[0] sdb2[1]
  96211904 blocks [3/3] [UUU]

unused devices: <none>

答案1

/proc/mdstat明确地讲,您为操作系统 (md1) 和 Home (md2) 创建了一个三向镜像集 (RAID1)。虽然这提供了足够的冗余,但会占用大量空间。

由于您仅在 上受到磁盘限制/home,因此最简单的方法就是进行一些磁盘调整。

警告:请注意,如果 SSD 在错误的时间点损坏,则会导致您丢失所有文件 - 请备份并做好准备。

尽管如此,我将继续

  • 从 md2 中删除 2 个镜像。这样您的系统仍然可用,不会有任何停机时间,但有 2 个可用分区。mdadm --remove /dev/md2 /dev/sda2 && mdadm --remove /dev/md2 /dev/sdb2
  • 擦除这两个中的所有 fs 和 RAID 超级块。wipefs --all /dev/sda2 && wipefs --all /dev/sdb2
  • 使用这两个分区创建一个 RAID5,将其用作missing第三个分区。这实际上会创建一个临时 RAID0,其大小是原始分区 (md3) 的两倍。mdadm --create -n 3 --level=5 --bitmap=internal /dev/md3 /dev/sda2 /dev/sdb2 missing
  • 将此 RAID5 作为一个镜像添加到原始 md2 并等待重新同步完成mdadm --add /dev/md2 /dev/md3 等待同步否则将丢失数据!
  • 从 md2 中删除最后一个原始镜像,只留下一条腿,即新创建的 md3mdadm --remove /dev/md2 /dev/sdc2
  • 扩大 md2 以使用全部 md3mdadm --grow --size=max /dev/md2
  • 调整文件系统大小以使用所有 md2这取决于所使用的 FS
  • 从最后一个分区擦除 FS 和 RAID 超级块wipefs --all /dev/sdc2
  • 将其添加到 RAID5 并等待重新同步完成。mdadm --add /dev/md3 /dev/sdc2

现在您有一个只有一个镜像的镜像集,它本身就是一个 RAID5,大小是初始大小的两倍。这似乎是冗余和大小之间的一个相当好的平衡。

好的部分:您不会遇到任何停机时间 - 使用文件系统时可以执行上述所有步骤。

相关内容