服务器运行的是 CentOS,并且已成功运行双磁盘软件 RAID。我希望添加第三个磁盘以实现冗余,这样当一个磁盘发生故障时,系统仍有两个磁盘在运行,直到故障磁盘的替换件到达。
以前,当我从 DVD-ROM 安装 CentOS 时,我曾在那里设置软件双磁盘 RAID。但是,如何在运行系统中向现有的双磁盘软件 RAID 添加第三个磁盘?
答案1
2 个磁盘和冗余度表明 RAID1 已在使用。为了增加冗余度,我认为 RAID5 不是一个选项,因为它提供了更多空间,但是 - 3 个磁盘与 2 个磁盘的 RAID1 相同,并且允许丢失一个磁盘。
假设RAID1:
mdadm --add /dev/mdX /dev/sdY
mdadm --grow --raid-devices=3 /dev/mdX
使用 lvm2 (镜像或者 dm-raid) 将会是:
vgextend VG /dev/sdY
lvconvert -m2 VG/LV
答案2
你想要重塑将您的 RAID-1 更改为三磁盘 RAID-5 设置。 md
,您可能正在使用的软件 RAID 幸运的是支持重塑。
WARNING: 确保已备份数据,以防发生灾难性错误(不太可能,但总是有可能的)。
完整示例
您没有提供有关设置的任何详细信息,因此我将从头开始做一个任何人都可以尝试的完整示例。
设置 RAID-1
root@node51 [/tmp]# truncate -s 1G 1.img
root@node51 [/tmp]# truncate -s 1G 2.img
root@node51 [/tmp]# losetup /dev/loop1 1.img
root@node51 [/tmp]# losetup /dev/loop2 2.img
root@node51 [/tmp]# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/loop{1,2}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 1048000K
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
阵列作为 RAID-1 的样子:
root@node51 [/tmp]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Mar 9 15:30:18 2016
Raid Level : raid1
Array Size : 1048000 (1023.61 MiB 1073.15 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Mar 9 15:30:24 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : node51:0 (local to host node51)
UUID : 9f03708b:dfe27926:16485757:02cbc146
Events : 17
Number Major Minor RaidDevice State
0 7 1 0 active sync /dev/loop1
1 7 2 1 active sync /dev/loop2
添加文件系统和/或分区(可选)
我将在这里演示一个简单的文件系统设置和调整大小,但您可以在其他地方找到更详细的调整大小提示(请参阅此答案底部的“其他资源”)。
root@node51 [/tmp]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (4-Feb-2014)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262000 blocks
13100 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
root@node51 [/tmp]# mount /dev/md0 /mnt
root@node51 [/tmp]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 ext4 992M 1.3M 923M 1% /mnt
添加第三块磁盘
root@node51 [/tmp]# truncate -s 1G 3.img
root@node51 [/tmp]# losetup /dev/loop3 3.img
root@node51 [/tmp]# mdadm --add /dev/md0 /dev/loop3
mdadm: added /dev/loop3
添加第三个磁盘后,您应该会看到它作为备用磁盘:
root@node51 [/tmp]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Mar 9 15:30:18 2016
Raid Level : raid1
Array Size : 1048000 (1023.61 MiB 1073.15 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Mar 9 15:31:10 2016
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : node51:0 (local to host node51)
UUID : 9f03708b:dfe27926:16485757:02cbc146
Events : 18
Number Major Minor RaidDevice State
0 7 1 0 active sync /dev/loop1
1 7 2 1 active sync /dev/loop2
2 7 3 - spare /dev/loop3
将 RAID-1 重塑为 RAID-5
root@node51 [/tmp]# mdadm --grow /dev/md0 --level=5 --raid-devices=3
mdadm: level of /dev/md0 changed to raid5
mdadm: Need to backup 128K of critical section..
这可能需要很长时间。 您可以检查cat /proc/mdstat
进度:
root@node51 [/tmp]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 loop3[2] loop2[1] loop1[0]
1048000 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]
[=====>...............] reshape = 25.0% (262208/1048000) finish=0.1min speed=87360K/sec
unused devices: <none>
您现在有了 RAID-5!
root@node51 [/tmp]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Mar 9 15:30:18 2016
Raid Level : raid5
Array Size : 2096000 (2047.22 MiB 2146.30 MB)
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Wed Mar 9 15:31:49 2016
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Name : node51:0 (local to host node51)
UUID : 9f03708b:dfe27926:16485757:02cbc146
Events : 41
Number Major Minor RaidDevice State
0 7 1 0 active sync /dev/loop1
1 7 2 1 active sync /dev/loop2
2 7 3 2 active sync /dev/loop3
增加文件系统和/或分区的大小(可选)
这里,你可以看到我的文件系统即将通过ext4的在线扩展功能1GiB
变成:2GiB
root@node51 [/tmp]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 ext4 992M 1.3M 923M 1% /mnt
root@node51 [/tmp]# resize2fs /dev/md0
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/md0 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/md0 is now 524000 blocks long.
root@node51 [/tmp]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 ext4 2.0G 1.5M 1.9G 1% /mnt
对于其他文件系统调整大小的情况,请参阅本答案末尾的“其他资源”。
示例清理(可选)
以下是拆除和删除上述示例的方法:
root@node51 [/tmp]# umount /mnt
root@node51 [/tmp]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
root@node51 [/tmp]# losetup -d /dev/loop1
root@node51 [/tmp]# losetup -d /dev/loop2
root@node51 [/tmp]# losetup -d /dev/loop3
root@node51 [/tmp]# rm -fv /tmp/{1,2,3}.img
removed ‘/tmp/1.img’
removed ‘/tmp/2.img’
removed ‘/tmp/3.img’
其他资源
我写了其他几个关于文件系统调整大小的答案。您可以使用相同的概念来扩大 RAID 中的文件系统。