设置:RAID 1(镜像)的两个物理驱动器将被两个更宽容的驱动器替代,我们将直接从正在运行的操作系统进行“热”替换,而无需从外部引导介质引导。 本指南已经在Debian发行版本6,7,8上测试了32位和64位。
我们假设这两个驱动器是用root和swap分区进行分区,并且这两个分区建立了两个raid设备md0和md1:
- 组成卷md0(root)的sda1和sdb1分区
- 组成卷md1(swap)的sda2和sdb2分区
首先,做一个备份你所有的数据,即使指南已经被测试了几次,坏运气还在那里...我们提供(在我看来,最好的解决方案)替换,我们断开两个旧的驱动器关闭机器,然后连接一个新的临时驱动器,然后重新同步,所以我们仍然会有RAID功能和单个驱动器(RAID处于降级模式),如果某些功能不起作用,您仍然可以重新创建功能性RAID。 为此,只需在将完整驱动器替换为空驱动器后,键入以下命令:
sfdisk -d /dev/hd source | sfdisk —force /dev/hd empty
mdadm —zero-superblock /dev/hd empty
mdadm —add /dev/md(raid) /dev/hd(empty)
对系统上的每个RAID /分区重复最后两行
(例如:
mdadm -add /dev/md0 /dev/sdb1
然后
mdadm -add /dev/md1 /dev/sdb2
等等..
以这种方式,我们将分区表从源驱动器强制到空目标,然后将其添加到RAID。
显然你必须等到重建过程结束,才能监视:
watch cat / pro / mdstat
(当然CTRL + C退出的过程)
此时关闭机器,我们添加两个新的磁盘,分别成为sdc和sdd,然后启动服务器并运行命令:
fdisk -l
结果应该类似于:
Disk /dev/sda: ……MB , ………….Bytes
… heads, …sectors/track , ….. cylinders
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk: identifier : ………..
Device boot Start End Blocks Id System
/dev/sda2 970 1044 602437+ fd Linux raid autodetect
/dev/sda2 1 969 7783461 fd Linux raid autodetect
……
/dev/sdb1 * 1 969 7783461 fd Linux raid autodetect
/dev/sdb2 970 1044 602437+ fd Linux raid autodetect
……
Disk /dev/sdc: …Mb, …….Bytes
……
Disk /dev/sdd: …Mb, …….Bytes
……
Disk /dev/md0: …Mb, …….Bytes
…...
Disk /dev/md1: …Mb, …….Bytes
现在,输入:
fdisk /dev/sdc
我们用n命令创建一个新的分区,
我们选择p主分区,
我们选择分区号(1,2,3等),
我们选择起始气缸( 1 ),
我们通过键入+符号后跟大小(以GB为单位 )和GB(从字母)(例如: + 480GB )来选择主分区的大小
我们使用命令a使其可启动,选择相同数量的分区。
我们用t更改“ fd ”(Linux Raid Autodetect)中的分区ID,并以十六进制代码写入,只需“ fd ”
然后我们重复第二个分区的所有命令(分区将是交换)。
我们将用w保存更改。
显然,要注意分区的大小。 最好的解决方案是减去可用空间总和的当前交换大小,以创建具有尽可能广阔空间的工作分区。
现在我们将在SDD驱动器上执行完全相同的操作,确保创建与之前使用的尺寸相同的分区。
在这一点上,我们在第一个驱动器“full”和第一个新驱动器之间进行交换,将后者作为备用RAID添加到RAID中:
mdadm -add /dev/md0 /dev/sdc1
那么我们应该验证RAID的情况,应该是这样的:
md0: active raid 1 sdc1[S] sda1[2] sdb1[3]
………blocks super 1.2 [2/2] [UU]
然后我们放在原来的驱动器:
mdadm -f /dev/md0 /dev/sda1
并将其从RAID中删除:
mdadm -r /dev/md0 /dev/sda1
现在我们验证重建是否自动开始,并等待直到完成,再次通过监视:
watch cat /proc/mdstat
(当然CTRL + C退出的过程)
最后,我们在新驱动器(/ dev / sdc)上安装引导程序(grub):
grub-install /dev/sdc
每个系统分区必须重复相同的过程:
mdadm -add /dev/md0 /dev/sdd1
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1
我们再等一下,直到重建完成:
watch cat /proc/mdstat
(当然CTRL + C退出的过程)
接下来,对两个新驱动器的第一个交换分区执行相同的过程:
mdadm -add /dev/md1 /dev/sdc2
mdadm -f /dev/md0 /dev/sda2
mdadm -r /dev/md0 /dev/sda2
再等一下,直到完成重建:
watch cat /proc/mdstat
(当然CTRL + C退出的过程)
最后一个驱动器:
mdadm -add /dev/md1 /dev/sdd2
mdadm -f /dev/md0 /dev/sdb2
mdadm -r /dev/md0 /dev/sdb2
再等一下,直到完成重建:
watch cat /proc/mdstat
(当然CTRL + C退出的过程)
此时在两个驱动器上重新安装引导加载程序:
grub-install /dev/sdc
grub-install /dev/sdd
在这一点上,我们发现自己从RAID驱逐出旧的驱动器,新的驱动器已经安装并运行。 但可用空间低于分区允许的最大值
然后,我们继续扩大分区和验证,与以前一样:
mdadm —grow —raid-devices=2 /dev/md0
mdadm -A —scan
mdadm —grow /dev/md0 —size=max
mdadm —examine —scan
e2fsck -f /dev(md0
resize2fs /dev/md0
mdadm —grow —raid-devices=2 /dev/md1
mdadm -A —scan
mdadm —grow /dev/md1 —size=max
mdadm —examine —scan
e2fsck -f /dev/md1
resize2fs /dev/md1
完成后,关闭PC,取消连接旧的驱动器,然后重新启动机器。
即使重新启动工作,我们重新安装了grub,因为新的驱动器的启动将采用旧的(sda和sdb)的名称:
mv /boot/grub/device.map/boot/grub/device.map.old
grub-mkdevicemap
update-grub2 && grub-install /dev/sda && grub-install /dev/sdb
如果您想要确保新的RAID设置正常工作,请关闭机器,断开其中一个新驱动器并重新启动。 它应该没有问题。 然后再关闭,连接驱动器并启动。 您可以使用此命令检查突袭状态。
watch cat /proc/mdstat
(当然CTRL + C退出的过程)
我们完成了工作, 我们庆祝 。