通过迁移到新的大型硬盘,在Debian上扩展软件RAID

设置: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退出的过程)

我们完成了工作, 我们庆祝

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏