通过迁移到新的大硬盘来扩展 Debian 上的软件 RAID通过迁移到新的大硬盘来扩展 Debian 上的软件 RAID通过迁移到新的大硬盘来扩展 Debian 上的软件 RAID通过迁移到新的大硬盘来扩展 Debian 上的软件 RAID
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

设置:RAID 1(镜像)的两个物理驱动器将替换为两个容量更大的驱动器,我们将直接从正在运行的操作系统进行“热”替换,无需从外部启动媒体启动。本指南已经在 32 位和 64 位的 Debian 发行版 6、7、8 上进行了测试。

我们假设这两个驱动器使用根分区和交换分区进行分区,并且这两个分区构成了两个 raid 设备 md0 和 md1:

  • 组成卷 md0 (root) 的 sda1 和 sdb1 分区
  • 构成卷 md1(交换)的 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

ETC ..

这样,我们将分区表从源驱动器强制到空目标,然后将其添加到 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 驱动器上执行完全相同的操作,确保创建与我们之前使用的大小相同的分区。

此时我们在第一个驱动器“已满”和第一个新驱动器之间进行交换,将后者作为备用驱动器添加到 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 设置是否正常工作,请关闭机器,断开其中一个新驱动器的连接,然后重新开始。它应该毫无问题地开始。之后,再次关机,连接驱动器并启动。您可以使用此命令检查 raid 状态。

watch cat /proc/mdstat

(当然还有 CTRL + C 退出进程)

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

©2015-2025 艾丽卡 support@alaica.com