V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
memorybox
V2EX  ›  VPS

在不同的 VPS 账号之间迁移 Linux 虚机和快照

  •  
  •   memorybox · 2018-07-21 12:50:19 +08:00 · 500 次点击
    这是一个创建于 2116 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然已经进入 X 时代了,但电脑城装机习惯性还是用 Ghost,无他,习惯方便。

    Linux 上面系统迁移,网上搜一搜,大批文章还是原始的 dd, rsync 之类;当然,不是说他不行,而是面向小白实在是有点坑啊。

    云时代,不同厂商间基本都提供了快照+在线热迁移的方案了,用起来也很舒服。

    那么,作为一个 VPS 小白用户,怎么在不同的账号,或者说不同的厂商之间,迁移我的 Linux 系统呢?

    比如我在 vultr 上面有两个账号,vultr 的快照功能是很赞的,免费、速度快、生成虚机靠谱;

    那么问题来了,怎么把账号 A 的 Linux A 迁移到账号 B 的 Linux B 虚机上呢?

    官方回复是还没有考虑这个功能,然后 Linux 怎么可能做不到这种简单的事情呢?当然立刻就有人回复了详细的搞法,还贴心的附录了视频:

    https://discuss.vultr.com/discussion/104/snapshot-image-downloads/p2

    我们也嘴炮一下整个过程:

    1. 对 Linux A 建立 SnapShot A

    2. 从 SnapShot A 创立一台虚机 (注意这台虚机的磁盘要比 Linux A 的磁盘大,比如 Linux A 是 5$的套餐 15GB,那么最好建立一个 20$的套餐 45GB)

    3. vultr 有挂载光盘的功能,可以挂载一个 linux live CD,用这张 Live CD 启动新虚机

    4. dd 命令完全拷贝原有磁盘

      dd if=/dev/vtbd0 bs=1m | gzip -c | ssh -e none myolduser@myoldserverip 'cat > backupsnapshot.iso.gz'

    5. 账号 B 开一台虚机,把 backupsnapshot.iso.gz 拷贝过去

    6. 同样挂载 Live CD,反向 dd,恢复文件系统

    7. 重启,改配置,赋权限,搞定

    说是嘴炮,是因为我之前硬盘 dd 对拷过,对于速度和之后的配置兼容深为烦恼,更不用说 KVM 上面用这个招数去做迁移了,我一个坑都不想踩的。

    光是看看上面一波操作,我就没兴趣折腾了。当然也有很多人的乐趣就是折腾,但是年纪大了就老是想偷懒。

    之前在不同物理机之间做 Linux 迁移,用 clonezilla 居多,虽然有一些 Raid 方面的支持会有问题,总体来说我对它的稳定性和便利性有巨大信任,但从来没有在 KVM 上搞过,这次我完整实验了一把,效果 MAX。

    下面我们说说怎么用 clonezilla 把上面繁琐的手工操作搞得不那么痛苦一点:

    1. 先去 clonezilla.org 官网,找到下载地址,好吧,我已经帮你找好了:

      http://onet.dl.osdn.jp/clonezilla/69273/clonezilla-live-2.5.5-38-amd64.iso

    2. vultr 很贴心的提供了从 url 上传镜像的功能,我们到下面这个功能项中把 iso 镜像的 url 填进去,添加 clonezilla 镜像文件到 vultr:

      https://my.vultr.com/iso/add/

    3. 点开虚机 Linux A,点击Settings -> Custom ISO -> 选择 clonezilla -> 点击 Attach ISO and Reboot

    4. 用 VNC 连接虚机,进入 clonezilla 的界面

    5. 进入菜单项,第一菜单 800X600 分辨率 -> 简体中文 -> 使用再生龙

    6. 选择 remote-source 进入远程设备克隆的源端

    7. 选择 初学模式:接受默认的选择

    8. 选择 复制本机硬盘到它机硬盘

    9. 选择 设定固定 IP 地址

    10. 设定 IP,子网掩码,网关,域名服务器,如果机器有多块网卡的话,一般会列出网卡名字和 MAC 地址供你选择,vultr 一般是双网卡(如果你启用了内网地址的话),网络信息在 vultr 的主机 settings 中能查到。

    11. 选择要克隆的硬盘,设定没有问题的话,下面一路 YES 下去,机器就会进入等待目标端连接的状态

    12. 在账号 B 的 Linux B 中重复 1-11 步操作,不同的是第 6 步选择目标端,第 8 步选择 从镜像文件恢复至本机硬盘, 之后填入 Linux A 的 IP 地址,就可以开始克隆对拷了

    13. 我在不同 vultr 的账号中测试了 Ubuntu16.04, Centos7.1, FreeBSD 10 的迁移,效果 MAX

    看起来步骤不少,熟练了还是能迅速操作的,clonezilla 赞一个

    一点小 ToolTIps:

    • 这个方法其实可以适用所有 KVM 虚机迁移,所以只要服务商开了自定义镜像挂载的功能,都可以跨公网对拷

    • 如果 A 和 B 不能直接通信的话,可以开一台中转机器 C,在 Linux A 的一端把硬盘 clone 为镜像文件,通过 SSH 文件服务器的方式转存到 C 上,然后在 B 上连接 SSH 文件服务器 C,从而还原系统; 提示一下,其实生成的镜像文件挺小的,比 dd 之后压缩还小的多

    • 如果 clone 的时候报错,一般是 A 端的文件系统有损坏,这个时候可以简单的执行 shutdown -rF now ,重启后自动修复一把,之后再挂载 clonezilla ISO 进行克隆

    最后,让我们期望所有的服务商都能提供 qcow2 的导入导出功能

    源自: http://happy123.me/blog/2018/07/21/migrate-vm-instances-and-snapshots-from-different-vps-supporters-or-accounts/

    6 条回复    2019-06-14 18:01:11 +08:00
    msg7086
        1
    msg7086  
       2018-07-23 07:42:00 +08:00
    直接 rsync 对拷就可以了。关掉大部分服务,然后 rsync 一下,改改 IP,结束。
    memorybox
        2
    memorybox  
    OP
       2018-07-23 11:44:30 +08:00
    @msg7086 问题就在这里啊;

    关掉大部分服务 (具体哪些呢?);
    改改 ip ;

    这两个操作就能拦住一大波人。
    msg7086
        3
    msg7086  
       2018-07-23 14:05:28 +08:00
    你说的也有道理。
    不过我一般默认使用 Linux 的人都应该要懂一点 Linux。
    就像买车的人,一般都是要会自己开车的。
    我觉得如果有大量需要克隆 Linux 的运维工作要做,那还是应该要学一下技术。
    datocp
        4
    datocp  
       2018-07-24 09:55:58 +08:00
    我会详记每一步操作。
    然后把指定编绎文件安装目录到自己专用的目录。
    然后每次备份这个目录好了。
    即便换到不同 vps 也是解压该目录,然后恢复测试。这样比将各种文件零散分布到各种目录下方便。
    notgood
        5
    notgood  
       2019-06-14 16:15:00 +08:00 via Android
    @memorybox V 友,我想从谷歌云 GCP 迁到搬瓦工,这两服务商好像没开自定义镜像挂载的功能?如何解决呢?谢谢
    memorybox
        6
    memorybox  
    OP
       2019-06-14 18:01:11 +08:00
    @notgood 这种情况我还是采用 1 楼的办法。rsync+手工改;

    有人说可以用 dd 命令,我比较菜,总是遇到奇怪的问题。老实说,现在不同提供商服务器之间的迁移,还是很麻烦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1402 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 17:20 · PVG 01:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.