海量小文件的数据迁移一直以来都是一个令人头痛的问题。这不,前两天我的一个同事就遇到了这样的一个问题。我们集团负责做高教业务的部门在阿里云华北1地域有一台使用了很长时间的服务器,上面有海量的小文件。集团要做账号整合,这台服务器不准备继续续费使用,要把里面的数据迁移到一个新的阿里云账号下,而且新服务器的地域是华北3。
要解决的问题就是要跨账号、跨地域、迁移海量的小文件。
我们知道在网络可达的情况下,可以组合nc和tar命令来应对大量小文件的迁移。但现在的问题是不仅跨账号还跨了地域,所以没有高速的内网可以使用,通过公网传输的话带宽又不够,只能临时升级两头服务器的带宽。当然还可以使用阿里云的云企业网打通两个账号的内网,但跨地域的云企业网需要购买带宽包,反正通过网络进行数据迁移就是没有办法做到又快又便宜。
其实还有一种几乎免费的办法,而且针对海量的小文件特别有效。
第一步、我们先确认一下要迁移的源服务器的情况:
这个服务器有一个系统盘,一个数据盘,数据盘上有大约100多万个文件。
第二步、用源服务器制作一个镜像,因为源服务器包含数据盘,因此要制作的是包含所有磁盘的镜像,不能只针对系统盘制作镜像。
第三步、将镜像复制到目标地域,我这里测试环境的源地域是华北3,目标地域是华北2。
第四步、将镜像管理控制台切换到目标地域,等镜像复制完毕。
第五步、点击共享镜像,输入目标账号的UID,共享镜像给新的账号。
第六步、进入目标账号的镜像管理,就可以看到目标地域下共享过来的镜像。点击创建实例就可以得到一个同源服务器一模一样的服务器。
因为镜像包含数据盘,因此在创建新实例时必须包含数据盘,但数据盘的大小可以根据需要自己灵活指定。
第七步、等新实例启动完毕,确认一下目标服务器的状态是否和源服务器一致。
一百多万个文件成功从账号A的华北3地域复制到了账号B的华北2地域。
跨地域复制镜像的流量费目前由阿里云承担,只需要账号A付少量的镜像存储费,目前按量计费每月每G是0.12元,迁移完成就可以删除镜像,迁移一次的花费通常不会超过一毛钱。
所以说这是一种几乎免费的方法。