我们在 ubuntu 服务器中运行软件 raid(RAID1-mirror),RAID1 使用两个磁盘(sda 1TB、sdb 1TB)。两个磁盘都有 4 个分区(/dev/md0 作为 /swap、/dev/md1 作为 /root、/dev/md2 作为 /opt、/dev/md3 /home),现在 /dev/md2 分区几乎已满,因此我们需要扩展该 /dev/md2 分区,为此我们在该服务器中增加了 1 个原始磁盘。是否可以从原始分区扩展 RAID1 /dev/md2 分区?请帮我们解决。
答案1
现在可以使用装有 ubuntu server 16.04 的 VM 进行测试。我创建了两个虚拟磁盘,每个磁盘大小为 20G,每个分区大约有 10 GB。在 sda1/sdb1 和 sda2/sdb2 上创建 RAID1(/dev/md0
as /,/dev/md1
as /home
)并安装后,我添加了第三个磁盘并以相等的方式进行分区(sdc1 和 sdc2,rsp.)。驱动器 md1 应该增大。如果您想要增大 md2,请在以下命令中将和替换md1
为您在第三个驱动器上创建的任何分区。md2
sdc2
首先,我将分区添加到 raid 中:
$ sudo mdadm --add /dev/md1 /dev/sdc2
第三个分区被添加为“备用”(参见输出sudo mdadm --details /dev/md1
)接下来,我扩大了 RAID,并在一次调用中更改了 RAID 级别
$ sudo mdadm --grow --raid-devices=3 -l 5 /dev/md1
现在请稍等,因为同步需要一些时间。同步完成后,您将看到更改后的 raid 设备:
$ sudo mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Apr 18 13:58:59 2017
Raid Level : raid5
Array Size : 22392832 (21.36 GiB 22.93 GB)
Used Dev Size : 11196416 (10.68 GiB 11.47 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 18 15:52:23 2017
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Name : testRaid:1 (local to host testRaid)
UUID : a85a5ca8:17549f5d:7dc28c7b:e24bd25b
Events : 136
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
2 8 34 2 active sync /dev/sdc2
$
您现在看到的是 raid 级别已更改为 5,并且“阵列大小”现在为 20G。“已使用设备大小”仍为 10G,因为文件系统不会自动增长。这将通过
$ sudo resize2fs /dev/md1
ext4
文件系统可以在线扩展;如果没有大小参数,则将扩展到最大。如果您有其他文件系统,请查看是否可以在线调整大小。
df -h
现在显示:
/dev/md1 21G 30M 20G 1% /home
希望这些能对你有帮助。请记住:在操作磁盘和分区之前,请务必先进行当前的、经过验证的备份!
答案2
您使用软件 RAID 来实现高可用性和卷管理,这让您陷入了困境。下次将 LVM 放在 RAID 之上,以分离这些问题。在这种情况下,添加更多存储就像向卷组添加更多后端存储并扩展逻辑卷以使用附加后端一样简单。该附加后端可以是另一个独立的 RAID1,一旦您将 LV 扩展到两个 RAID1,您就会为该卷获得一个 RAID 10(镜像条带)。
此时您唯一的出路就是将您的阵列从 RAID1 转换为 RAID5,就像 ridgy 所建议的那样,这会降低您的写入性能。
附注:您的多个 MD 分区可能未正确对齐,这可能会导致高达 20% 的带宽消耗。
https://www.thomas-krenn.com/en/wiki/Partition_Alignment
https://www.percona.com/blog/2011/06/09/aligning-io-on-a-hard-disk-raid-the-benchmarks/
对于存储阵列来说,满载是一件很难的事情。这就是为什么在投入生产之前,规划部署并测试它至关重要。在继续之前备份所有内容,祝你好运。