linux – 通过LAN迁移原始磁盘映像

linux – 通过LAN迁移原始磁盘映像,第1张

概述这是我的情况: >同一数据中心内有两台专用服务器,它们之间有千兆以太网. >两个专用服务器都启动到基于Debian Squeeze的救援环境中,并添加了额外的工具和实用程序.还有足够的tmp空间(两个盒子上有32GB的RAM),用于下载软件,安装软件包和/或根据需要进行编译. >两个专用服务器都有大约3TB的可用空间. >“源”服务器在硬件RAID-10中具有4 x 1.5TB磁盘,带有Adapt 这是我的情况:

>同一数据中心内有两台专用服务器,它们之间有千兆以太网.
>两个专用服务器都启动到基于Debian Squeeze的救援环境中,并添加了额外的工具和实用程序.还有足够的tmp空间(两个盒子上有32GB的RAM),用于下载软件,安装软件包和/或根据需要进行编译.
>两个专用服务器都有大约3TB的可用空间.
>“源”服务器在硬件RAID-10中具有4 x 1.5TB磁盘,带有Adaptec 4端口控制器.
>“目标”服务器在硬件RAID-1中有2 x 3TB磁盘,带有Adaptec 2端口控制器 – 与另一代相同,但端口数不同.
> / dev / sda上可用块的数量相差小于10 MB,但目标服务器的阵列由于某种原因而减少了几个meg.
>两个RAID阵列都配置为使用所有组成磁盘的整个磁盘表面来创建一个单个RAID卷.
> *** 作系统以MBR模式启动;没有使用UEFI引导.

我想做的事:

>在块层复制从“源”服务器到“目标”服务器的整个 *** 作系统映像(这只包括GPT分区表中的GRUB2引导加载程序,/ boot分区和/分区).
>如果可能,副本应该“实时”发生:这意味着我没有足够的空间在目标端存储适当的磁盘映像文件,除非我将磁盘映像解压缩到硬盘上副本正在发生.服务器之间的千兆以太网连接足够可靠,我对此很满意,我当然会在两端(源和目标)运行fsck,以验证传输前后文件系统是否正常.
>如果可能,请不要通过网络传输块,这些块不是每个分区中组成文件系统使用的(所有分区都格式化为ext4).这是因为超过50%的“源”磁盘是/分区中的可用空间.
>调整/分区的大小,以便在复制时,将其大小调整为适合目标磁盘的小得多的大小.
>复制成功后,装入每个卷并修复对静态IP的引用以反映新服务器的IP. (可以做到这一点,没有任何进一步的帮助)

我的问题:

>我应该首先计算每台服务器上/ dev / sda大小之间的差异(以字节为单位),然后使用e2resize来非破坏性地减小源端的/分区大小,使其适合空间目的地方面?
>我应该在原始块设备上运行dd,从源到目的地(通过ssh)运行/ dev / sda,还是应该在目标上创建等效的分区布局并在每个分区上运行dd?请注意,一次处理一个分区会让我遇到引导加载程序的问题,但是如果我一次不做分区,那么dd需要知道一旦写入了与目标一样多的字节就停止传输数据hold(希望将“关闭”最后一个块上/分区的最后一个,这在逻辑上是“源”分区布局中所有其他分区的右侧).

一些misc.细节:

>源盒上的主机 *** 作系统是运行多个OpenVZ guest虚拟机的Ubuntu Server 12.04
>由于两个盒子都被引导到救援中,因此可以直接访问磁盘,而不会期望正在运行的 *** 作系统对底层数据进行任何更改.

解决方法 这很麻烦,但可行.

我在这里假设/在/ dev / sda3上,/ boot在/ dev / sda1上.

>将旧服务器上的文件系统缩小到最小可能的大小.

oldserver # resize2fs -M /dev/sda3

>使用相同大小的/ boot,swapspace和new / partition(以及您需要的任何其他内容)对新服务器的磁盘进行分区.

newserver # parted /dev/sda

>复制/和/ boot文件系统.

oldserver # dd if=/dev/sda1 | ssh root@newserver "dd of=/dev/sda1"oldserver # dd if=/dev/sda3 | ssh root@newserver "dd of=/dev/sda3"

由于新服务器上的分区将略小于旧服务器上的分区,因此在此结束时您将收到虚假的设备消息上没有剩余空间.但是,由于您在步骤1缩小了文件系统,因此无关紧要.
>将新服务器上的文件系统调整为分区大小.

newserver # resize2fs /dev/sda3

>在新磁盘上安装GRUB.

newserver # mount /dev/sda3 /mntnewserver # mount /dev/sda1 /mnt/bootnewserver # mount -o bind /dev /mnt/devnewserver # mount -o proc proc /mnt/procnewserver # chroot /mnt /bin/bashnewserver(chroot) # grub-install /dev/sdanewserver(chroot) # exit

>完成其余的修正(IP地址等).

您可以找到一种方法来避免复制分区的可用空间,但它可能需要更长的时间来研究,而不是只复制它…

总结

以上是内存溢出为你收集整理的linux – 通过LAN迁移原始磁盘映像全部内容,希望文章能够帮你解决linux – 通过LAN迁移原始磁盘映像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1041586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存