内容简介:IBM Softlayer 上虚拟机镜像的迁出
在我们日常工作中,已经多次遇到有客户需要将 IBM SoftLayer 中的虚拟机镜像导出到客户本地的云环境中,比如 Microsoft Hyper-V 或者 VMware ESX Server。而在 IBM SoftlLayer 的知识库文章中,目前仅可以查找到如何将一个外部的虚拟机镜像文件导入,见 https://knowledgelayer.softlayer.com/procedure/import-image 。
本文将总结笔者之前的经验,介绍如何将 SoftlLayer 上的 Linux 虚拟机迁移到 Microsoft 的 Hyper-V 系统和 VMWare 的 ESX Server 上,作为对上述知识库文章的一个有益的补充。
本文将从四个方面来展开,首先介绍被迁移的虚拟机在迁移之前需要做的准备步骤,其次是介绍如何将虚拟机保存为 vhd 格式镜像,然后是怎样从 SoftLayer 下载 vhd 格式镜像,最后讲解如何把 SoftLayer vhd 格式镜像导入 Hyper-V 或 VMWare ESX,启动虚拟机并做后续的配置。
SoftLayer 虚拟机的迁移前的准备步骤
为了能够在 Hyper-V 或 VMWare ESX 中更顺利地启动 vhd 格式的 SoftLayer 镜像,需要在 SoftLayer 上将虚拟机保存为镜像之前,执行下面的准备步骤。
1. 修改 SSH 的配置文件,允许 root 登录,并且允许用密码进行登录。例如: PermitRootLogin yes,
PasswordAuthentication yes, AllowUser root (如果 AllowUser 打开的话)
2. 在操作系统里修改 root 用户的密码,并记录下来。例如:在 root 用户下,执行 passwd 修改密码命令, 按照提示,输入新的 root 用户密码。

3. 如果设定有 iptables 的防火墙,建议此时设定为关闭。例如:以 root 用户执行一下两个命令:
[root@imagetransfer ~]# /sbin/service iptables stop
[root@imagetransfer ~]# chkconfig iptables off
4. 如果被迁移的虚拟机挂载多个磁盘设备,并且在/etc/fstab 文件中设置了系统启动时自动挂载,需要把除了文件系统之外的磁盘设备注释掉,以免在后续步骤中,将镜像导入到 Hyper-V 或 VMWare ESX 时,发生系统无法找到设备从而不能启动的问题。 在下面的/etc/fstab 文件里,需要保留 tmpfs, devpts, sysfs, proc,同时注释掉磁盘设备/dev/xvdc1, /dev/xvdc2.

5. 准备 Linux 操作系统的安装镜像文件。这里我们使用的 RedHat Linux Enterprise 6.8 64bit 版本,所以我们准备了 RHEL 6.8 64bit 的安装 ISO 镜像文件。
6. 如果是这个虚拟机即将迁移到 Microsoft Hyper-V 系统,那么需要到微软网站去寻找最新版本的 Linux Integration Services(LIS)安装文件,目前最新的版本是 4.1.3-2,并且确认其匹配的 Linux 内核版本。目前最新版本的下载地址是: https://www.microsoft.com/en-us/download/details.aspx?id=51612 。 解压 LIS 文件包,查看其 install.sh 文件上部的注释,内有当前版本 LIS 所支持的 Linux 内核版本。
7. 通过 uname -a 查看当前虚拟机的 Linux 内核版本,确保内核版本和 LIS 支持的版本一致,然后安装 LIS 到虚拟机中。例如
Linux myhost.mydomain.com 2.6.32-642.3.1.el6.x86_64 #1 SMP Sun Jun 26 18:16:44 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
注意:如果是导 入 V MWare ES X 系 统上,则不需要上述 第 6 , 7 步 骤。
SoftLayer 虚拟机导出为 vhd 镜像文件
在虚拟机上做好镜像导出的准备工作后,接下来就是在 SoftLayer 上操作如何将虚拟机导出为 vhd 镜像文件。
1. 首先将虚拟机保存为镜像。这一步骤可以参考 SoftLayer 官方网站,这里将不再详细讲解:
注意:如果你的虚拟机有多个磁盘设备,而且需要将其内容迁移到新的环境,在保存为镜像时,请勾选这个磁盘。例如,下图中,第一块容量为 100G 的盘为系统盘,默认会选上,第二块盘为虚拟机上的应用数据盘,如果需要保存导出,请选上。

2. 虚拟机保存为镜像完成后,参考 SoftLayer 官方网站,将镜像保存到 SoftLayer 上的 Object Storage 中,为后续下载镜像做准备。
注意:Object Storage 需要申请,如果没有 Object Storage, 请参考 SoftLayer 官方网站,申请一个. 在做申请时,选择将 Object Storage 创建在离你最近的数据中心,方便下载。
3. 在申请完 Object Storage 后,SoftLayer 会提供一个访问镜像的用户名,密码(API Key),以及 Endpoint,在后续的下载镜像中,需要使用到这些。

Credentials:
Authentication Endpoint
Public: https://dal05.objectstorage.softlayer.net/auth/v1.0/
Private: https://dal05.objectstorage.service.networklayer.com/auth/v1.0/
Username
IBMOSXXXX-X:<your mail address>
API Key (Password)
9bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa
4. 镜像导出到 Object Storage 后,一般的命名格式如下,其中-1 表示第一块磁盘设备,-2 表示第二块磁盘设备。
your-image-name.vhd-1.vhd
your-image-name.vhd-2.vhd
镜像导出到 Object Storage 后,就可以开始下载镜像的工作了。
从 SoftLayer 下载镜像到本地
关于如何从 SoftLayer 上下载镜像到本地,SoftLayer 提供了三种方式:
WinSCP 客户端下载: Accessing Object Storage using WinSCP
SFTP 下载: Connect to Object Storage using SFTP
Swift 客户端下载: How do I access object storage by the command line?
下面我们将介绍如何使用 Swift 客户端下载镜像,因为官方文档没有给出每个步骤的示范用例,如果按照官方文档下载镜像颇费周折,以下是我们在实践过程中记录下来的步骤,以便帮助读者更快地下载镜像。
1. 安装 Swift 客户端
Swift 客户端是基于 Linux 环境的一个工具,我们使用命令行的方式来下载镜像。
登录到你本地 linux 机器,安装如下需要的安装包:
sudo yum install python-setuptools
sudo easy_install pip
sudo pip install --upgrade setuptools
sudo pip install python-swiftclient
2. 将访问镜像存放所在的 Object Storage 的参数设置为环境变量
拿到我们在章节"SoftLayer 虚拟机导出为 vhd 镜像文件"第三步获得的用户名,密码(API Key), Endpoint, 在你的 linux 上执行如下命令:
export ST_AUTH=https://ams01.objectstorage.softlayer.net/auth/v1.0
export ST_USER= IBMOSXXXX-X:<your mail address>
export ST_KEY=9bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa
Credentials:
Authentication Endpoint
Public: https://dal05.objectstorage.softlayer.net/auth/v1.0/
Private: https://dal05.obje ctstorage.service.networklayer.com/auth/v1.0/
Username
IBMOSXXXX-X:<your mail address>
API Key (Password)
9bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa
如果你是从 IBM 网络外部下载镜像,export ST_AUTH 的值选择 Public Endpoint.
3. 下载镜像
我们在章节"SoftLayer 虚拟机导出为 vhd 镜像文件"第四步中,已经有某个虚拟机的两个镜像,我们使用如下命令进行下载:
swift download "your object storage container name" your-image-name.vhd-1.vhd
从 Hyper-V 导入 SoftLayer vhd 镜像
1. 在 Hyper-V 上创建一个虚拟机,并且使用已有的包含有操作系统内容的 VHD 文件。关于如何在 Hyper-V 上创建虚拟机,请参考微软官方网站给出的教程, https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/create-virtual-machine , 这里不详细列出。
2. 选择 Linux 操作系统的安装镜像文件来引导系统,本例中,使用 RHEL6.8 64bit 的 ISO 文件来引导虚拟机启动。
3. 选择"Install or upgrade an existing system", 默认选择"Next"。接下来除非有不接受默认配置,否则可以一直接受默认选项,
4. 选择 "Upgrade an Existing Installation",忽略此时提示的交换分区错误(Swap space error)
5. 选择 "Create new boot loader configuration",并且点击"Next"

6. Linux 会自动升级操作系统中的包,并且创建一个新的启动装载器(Boot Loader)。Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。因为 Boot Loader 本身是严重依赖于硬件而实现的,所以在 VM Infrastructure 从 IBM SoftLayer 更换到 Microsoft Hyper-V 或者 VMW are ESX 时候,需要重建这个 Boot Loader。
7. 安装完成后,重新启动操作系统,进入操作系统时,请使用在章节"SoftLayer 虚拟机的迁移前的准备步骤"第二步中的 root 用户密码登录。
Hyper-V 虚拟机的后续配置
把 SoftLayer 的镜像导入到 Hyper-V 以后,一些系统配置仍然保留的是 SoftLayer 运行环境的信息,我们需要更新,以便虚拟机能够在 Hyper-V 下正常工作。
1. 修改默认网卡 eth0 的配置
需要修改的配置,例如,网卡的 IP 分配方式(BOOTPROTO),网关地址,子网掩码,网卡的 MAC 地址。
IP 的分配方式,网关地址,子网掩码具体请参考 Hyper-V 所在现场的网络管理模式,在 SoftLayer 下默认的 IP 管理模式为静态(static),下面我们以 Hyper-V 下使用 DHCP 方式管理为例。
SoftLayer 下虚拟机的网卡配置信息:

Hyper-V 下虚拟机的网卡配置信息:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR= 00:15:5D:00:22:0C
IPV6INIT=no
USERCTL=no
PEERDNS=yes
在 Hyper-V 系统中,所运行虚拟机的网卡 MAC 地址是由 Hyper-V 来决定的。从 Hyper-V 中虚拟机的配置项目读取其所分配到的 MAC 地址,并且更新到/etc/sysconfig/network-scripts/ifcfg-eth0 中。
Hyper-V 中虚拟机的网卡 MAC 地址信息

新的虚拟机网卡配置信息
2. 若 SoftLayer 虚拟机中有第二块网卡,比如 eth1, 那么如果当前 Hyper-V 环境中仅有一个网络连接,可以修改/etc/sysconfig/network-scripts/ifcfg-eth1,设置 ONBOOT=no。
3. 网关地址。修改/etc/sysconfig/network-scripts/ifcfg-eth0 中的网关信息。
4. 静态路由规则。清除/etc/sysconfig/network-scripts/route-eth0 中的静态路由规则。
5. DNS 地址。 修改/etc/resolve.conf 文件来更新新的 DNS 服务器地址。
例如
nameserver 172.168.0.11
nameserver 172.168.0.12
6. 如果这个导出的虚拟机有多块磁盘,此时可以先把虚拟机停掉。然后在 Hyper-V 中将其他磁盘对应的 VHD 文件附加在这个虚拟机上。启动虚拟机,登录系统后,通过 fdisk –l 查看这些磁盘的设备名。修改/etc/fstab 文件,确保磁盘系统挂载在操作系统启动过程中挂载正确。
7. 再次重新启动虚拟机操作系统。 当虚拟机成功启动后,可以进一步修改 SSH 配置,iptables 防火墙设置。
8. 对于运行在 VMWare ESX Server 上的虚拟机,可以安装 vmtools 安装包,以此来改善虚拟机图形界面下的使用体验。
至此,从 IBM Softlayer 上迁移虚拟机到 Microsoft Hyper-V 或者 VMware ESX Server 的主要步骤就介绍完了。这样当有业务需要将云端的环境复制或者迁移到本地的企业环境中时,上述的步骤可以帮到您。
参考资源
- 参考 SoftLayer 知识库 ,了解更多。
以上所述就是小编给大家介绍的《IBM Softlayer 上虚拟机镜像的迁出》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- KVM镜像制作及挂载镜像文件
- 查看Docker镜像仓库中镜像的所有标签
- Vagrant 使用国内镜像安装插件和 box 镜像
- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
- Harbor 1.7 发布,在线 GC、镜像历史、镜像复制
- docker k8s 集群部署tomcat,使用一个镜像,增加镜像的复用性。
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Windows 程序设计:第5版
CharlesPetzold / 北京博彦科技发展有限公司 / 北京大学出版社 / 2003-11-1 / 160.00元
Windows程序设计(第5版)对于Windows程序员来说,“从 Charles 的(Windows程序设计)一书中寻找答案。”几乎成了一句至理名言。而(Windows程序设计》第5版是专门为在Microsoft Windows 98、Microsoft Windows NT 4和 Windows NT 5下编程的开发人员编写的。内容博大精深,并有大量的源代码来帮助读者掌握Windows编程。本......一起来看看 《Windows 程序设计:第5版》 这本书的介绍吧!