欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~javascript
在云计算时代,不论是从IDC上云仍是多云直接的迁移,都已是常见的事宜。而在上云/迁移的方案中,也是有多种的方式可以将主机迁移到腾讯云中。python
然而,不一样的方式会有不一样的利弊。算法
目前,腾讯云能够提供导入镜像和服务迁移(冷迁移)的工具,而这两种方式均涉及到镜像制做。故本文将分享镜像制做的操做步骤,仅供参考。json
一、在制做镜像以前须要了解符合导入腾讯云的镜像文件要求,详情可参考导入镜像概述。ubuntu
Linux 系统类型镜像限制centos
Windows 系统类型镜像限制安全
二、接下来则依据操做系统的不一样,选择不一样的镜像制做方法。请分别参考官网文档Linux 镜像制做和Windows 镜像制做。服务器
三、在制做镜像以前,须要在Linux操做系统里安装cloud-init,在Widows操做系统里安装cloud-base。相应的操做能够查看官网文档Linux 系统安装 cloud-init和Windows 系统安装 cloud-base。网络
四、镜像制做完毕以后,则须要将镜像上传至COS。
五、当镜像已经上传到COS以后,则能够利用【导入镜像】将自定义镜像导入到镜像控制台,而后再基于该自定义镜像建立CVM。或者利用【服务迁移】的功能,直接从COS拉取镜像并建立CVM。
相应的操做指引,其实官网文档均已提供,而本文将做为实践的一些经验分享,供你们参考,但愿对你们有帮助。
Linux和Windows镜像制做的完整步骤官网文档均已给出参考文档,这里补充两个信息。
一、若是是友商云主机,Linux系统的则可使用qemu-img 命令或者 dd 命令来制做镜像;若是是Windows系统则可使用disk2vhd工具来制做镜像。
二、若是是在本地IDC的虚拟机,可使用虚拟化平台自带的一些镜像导出功能或者镜像制做工具来制做镜像。
三、若是是本地IDC的物理机,但是使用一些P2V的工具来制做或者参考1使用相关命令来制做。
本示例是经过dd命令将某云主机制做成镜像,参考步骤以下。
0、制做镜像以前,请先在操做系统内安装cloud-init(Linux系统),详细操做方法参考第二部分介绍。
一、因为须要将云主机经过dd方式将整个操做系统盘备份到数据盘,因此须要给云主机挂一个约为系统盘2倍容量的数据盘(单独 购买的数据盘 须要先 挂载数据盘,而后格式化)。
二、通常云主机里面都有一些云厂商的agent或者服务,好比腾讯云的云监控、云安全的agent。当要把某云主机迁移到腾讯云时,应该把该云主机内特定的一些组件和服务卸载掉或者禁用掉。
三、使用 dd 命令制做镜像
dd if=/dev/vda of=/mnt/xxx_yun.raw bs=100M
请务必写成/dev/vda而不要写成/dev/vda1,不然dd出来的镜像分区表和mbr信息都丢了
复制代码
四、使用qemu-img 命令将raw文件转换成qcow2文件,以能够节省传输和迁移的时间。
qemu-img convert -f raw -O qcow2 xxx_yun.raw xxx_yun.qcow2
复制代码
五、将qcow2镜像文件上传到腾讯云COS
coscmd config -a <access_id> -s<secret_key> -u <appid> -b melodytest01 -r ap-beijing -m 10 -p 10
coscmd upload /mnt/xxx_yun.qcow2 xxx_yun.qcow2
复制代码
六、 等待一段时间以后,登陆腾讯云COS控制台则能够看到镜像已经成功从某友商云传到COS了。
打开虚拟机的编辑设置界面
vmdk磁盘文件路径
这就是vmdk镜像文件了
关于Cloud-init和Cloud-base的安装,官网上也给出了参考文档。而Linux系统做为经常使用的系统,本文的实践示例则以Cloud-init为例。
cloud-init 主要提供了一个实例首次初始化时的自定义配置的能力,若是导入的镜像没有安装cloud-init服务,经过该镜像启动的实例就不会被正常初始化,所以该镜像就会导入失败。所以再制做镜像以前应当在系统内安装cloud-init。
cloud-init的安装其实仍是挺简单的,最麻烦的是安装依赖包。不一样操做系统的依赖包的依赖包的版本还不同,若是是不能联网的状况下安装,更是一件麻烦的事情。详细步骤能够查看官网文档Linux 系统安装 cloud-init,而我在此则仅补充相关tips,但愿对你们有帮助。
yum intstall -y python-setuptools python-jinja2 python-prettytable python2-oauthlib python-configobj PyYAML python-requests python-jsonpatch python-six
复制代码
requirement.txt的截图
certifi-2017.11.5
chardet-3.0.4
configobj-5.0.6
functools32-3.2.3-2
idna-2.6
Jinja2-2.10
jsonpatch-1.20
jsonpointer-1.14
jsonschema-2.6.0
MarkupSafe-1.0
oauthlib-2.0.6
prettytable-0.7.2
PyYAML-3.12
requests-2.18.4
setuptools-38.2.4
six-1.11.0
urllib3-1.22
复制代码
rpm -qa | grep setuptools
rpm -qa | grep jinja2
rpm -qa | grep prettytable
rpm -qa | grep oauthlib
rpm -qa | grep configobj
rpm -qa | grep PyYAML
rpm -qa | grep requests
rpm -qa | grep jsonpatch
rpm -qa | grep jsonschema
rpm -qa | grep six
复制代码
常常有些用户辛辛苦苦把镜像上传到cos了,到了导入镜像,半天过去导入失败了,才发现cloud-init的安装有问题。那么,如何能够确认咱们安装的cloud-init是没问题的呢?下面的方法,供参考。
一、 运行cloud-init init —local
二、执行 ll /var/lib/cloud,正常会看到以下截图内容
三、执行rm -rf /var/lib/cloud
四、重启你的服务器,正常状况下,每次重启都会成/var/lib/cloud
五、也能够执行cloud-init status看下状态是否正常。
将镜像文件上传到COS,有多种工具可支持,详情可参考官网文档COS 用户工具,也可使用控制台的方式将镜像上传至COS。因为操做较为简单,我就再也不重复演示。
关于导入镜像的详细介绍可查看官网文档导入镜像概述,该功能须要开启白名单方可以使用。相关操做演示以下,仅供参考。
一、登陆镜像控制台,选择地域(请选择与存放镜像的COS的bucket同个地域),而后点击【导入镜像按钮】。
二、阅读导入镜像的步骤,而且确认全部准备步骤已经完成。
三、填写信息,而且开始导入。
补充,若非级特殊的状况没法安装cloud-init,不然请不要选择强制导入。强制导入的镜像,因为没有cloud-init,基于该镜像建立的CVM,没法初始化,须要再建立CVM以后,登陆操做系统进行许多初始化操做,是一件较为麻烦的事情。
操做日志控制台
40.jpg
近期腾讯云也推出了新功能【服务迁移】,和【导入镜像】的功能的差别,简单描述以下。
一、导入镜像,只能导入系统盘,数据盘没法导入。而使用【云服务器迁移】功能,能够将系统盘和数据盘都导入到腾讯云。
二、导入功能,步骤是把存在COS的镜像导入到镜像控制台,而后再基于该镜像建立CVM;而云服务器迁移则是,直接从COS上拉取镜像文件,用该镜像置换一个已存在的CVM实例的系统盘,从而实现迁移。(同理,数据盘的迁移也是一个相似的过程。得先建立CVM或者CBS,再使用云服务器迁移的功能。)
下面是相关操做步骤,仅供参考。
一、 点击【新建】按钮新建一个迁移任务
二、了解迁入准备工做
三、填写相关信息,开始迁移。
四、等待迁移任务完成,能够在控制台中看到进度。
五、迁移100%完成以后,用户则能够到云主机控制台找到刚刚迁入的云主机,从新开机启动便可。
离线数据迁移指的是迁移数据盘。数据盘也是能够制做成一个镜像,上传至COS,而后使用【离线数据迁移】的功能,将数据盘的镜像文件迁移到CBS中。相关步骤相似【离线实例迁移】。
一、 点击【新建】按钮新建一个迁移任务
二、了解迁入准备工做
三、填写相关信息,开始迁移。
四、等待迁移任务完成,能够在控制台中看到进度。
五、迁移100%完成以后,用户将此云盘挂载到云主机便可。
问答
相关阅读
此文已由做者受权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!