我的 cent os 服务器的主硬盘 sda 有很多“离线不可纠正扇区”,因此我计划克隆该驱动器。但克隆整个驱动器不是一个可行的解决方案,因为它是一个具有 450G 数据的实时服务器。而且驱动器响应缓慢。
我需要找到一种有助于最大程度减少停机时间的解决方案。我计划对另一个磁盘进行与主磁盘相同的分区。然后仅克隆 mbr。rsync 所有分区中的数据。然后移除主磁盘并从第二个驱动器启动。
我不确定它是否有效。请告诉我您的建议。任何替代解决方案也值得赞赏。
谢谢,阿乔
答案1
具体假设:
-/dev/sda 是活动磁盘,/dev/sdb 是替换磁盘(您可以通过在 USB 外壳/机箱中安装 sdb 并通过它进行所有格式化/同步来进一步减少停机时间)
-sdb 至少与 sda 大小相同
请务必检查并进行调整。我这样做之前并不知道您的分区如何布局以及挂载点是什么等。同步后的文件改组等将是必要的。请密切注意 rsync 行,因为我假设 / 是 sda1,而您希望它在 sdb1 上。
# 复制 mbr。这比 sfdisk 有额外的好处,因为 # bootloader 也被克隆了 dd if=/dev/sda of=/dev/sdb bs=512 count=1 #可选:扩大 sdbX 的分区,其中 X 是目标分区号 #parted /dev/sdb #(parted) 打印 #(parted) 调整 X 大小 # 创建新的文件系统并挂载 对于 $(ls -1 /dev/sdb?) 中的 i;执行 mkfs.ext3 $i;完成 对于 $(ls -1 /dev/sdb? | cut -f3 -d“/”);mkdir -p /mnt/$i;\ 卸载/dev/$i;安装/dev/$i/mnt/$i;完成 # 开始同步。排除我们不需要的东西以节省时间/空间。 echo -e“+/dev/console\n+/dev/initctl\n+/dev/null\n+/dev/zero\n\n-/tmp/*\n-\ /proc/*\n- /dev/*\n- /sys/*\n- /tmp/*\n- /mnt/*\n- /media/*" >> /tmp/exclude.rsync.lst rsync -az --exclude-from=/tmp/exclude.rsync.lst /. /mnt/sdb1/. #在此处插入后同步调整。仔细检查文件/路径位置等。
恭喜!完成了。重要的部分是排除并确保在修改分区表之前 dd mbr。
答案2
我认为你的计划没问题,你也可以先 rsync 传输所有数据,然后在最后再执行一次,同步第一次 rsync 期间发生的其余更改。我在用新硬件替换旧服务器时也做了类似的事情,而且成功了。