准备
需要的镜像和工具:
(1)系统:中标麒麟7.4 (国产操作系统,类似于CentOS)
(2)虚拟机软件:VMware Workstation 12版本/VirtualBox (windows版本,MAC版本的没有测试)
(3)vmdk转vhd格式转换工具:winima90.exe,也可以使用阿里云 qemu-img 工具,也可以使用 DiskGenius软件 或参考 DiskGenius格式转换
(4)开通阿里云对象存储oss,创建存储空间(Bucket名字)。
镜像格式转换
由于创建 VMware 虚拟机生成的主体文件是 vmdk 后缀格式的,阿里云 ECS 只支持导入RAW、VHD和qcow2格式的镜像文件。其他镜像文件,需要转换格式后再导入。
qemu-img能将RAW、qcow2、VMDK、VDI、VHD(vpc)、VHDX、qcow1或QED格式的镜像转换成VHD格式,也可以实现RAW和VHD格式的互相转换。
winima90.exe 是安装在 windows 系统上的软件,体积小易安装,支持多种格式转换,本次测试使用它来进行虚拟机镜像文件的转换工具。
创建阿里云自定义镜像
主要步骤如下:
创建虚拟机文件
打开 VMware Workstation 软件,创建一个虚拟机,分配动态磁盘空间为 40G ,如下图所示:
说明⚠️:
- 一般来说平常使用 VMware 创建虚拟机,有两种构建磁盘文件的方式(如上图所示):
第一种:使用单个文件存储虚拟磁盘;
第二种:多个文件存储虚拟磁盘。
其中第二种方式将虚拟磁盘拆分为多个文件,可以更轻松地在计算机之间移动虚拟机,但可能会降低大容量磁盘的性能。第一种方式将虚拟磁盘存储为单个文件,虽然提高了磁盘的读写性能,但是对于对于大文件的移动和存储是一个问题。就该问题本文对于这两种方式之间的转换做了一个总结,并使用具体例子,详解了如何通过VMware自带的磁盘管理工具,来对虚拟磁盘文件进行分割与合并。
- 本次测试选择多个文件存储虚拟磁盘。
安装麒麟操作系统
中标麒麟操作系统安装与CentOS是一样的,除了 LOGO 不一样,囧~
详细系统分区情况如下:
根目录/:37G
/boot目录:1G
swap:2G
说明⚠️:
-
这里创建的虚拟机相当于一个模版,当它被制作成自定义镜像,在阿里云实例上启动后,登录启动的实例,你会发现系统分区的大小就是上面你所定义的大小。换句话说,你需要系统盘多大,最好在创建虚拟机时就定义多大。
-
最好不要挂载数据盘,数据盘可以后期创建阿里云 ECS 实例时挂载或创建阿里云 ECS 实例后挂载,均是可以的。
VMware虚拟机虚拟磁盘的合并
根据上面的两个步骤,我们完成了麒麟操作系统的安装与部署,现在关闭部署好的麒麟虚拟机。这个步骤我们需要了解两点:
-
虚拟磁盘管理工具使用:vmware-vdiskmanager
-
多个虚拟磁盘文件合并为单个文件
下面我们一步一步操作,具体步骤如下:
(1)vmware-vdiskmanager
VMware提供了虚拟磁盘管理工具vmware-vdiskmanager。使用命令行可以管理虚拟磁盘文件,包括磁盘的。它有许多功能,使用命令vmware-vdiskmanager.exe -h可以查看它所有的功能(如下图):
说明⚠️:
-
vmware-vdiskmanager.exe
路径默认在 VMware Workstation 虚拟机安装路径目录下。 -
-r
参数指定源磁盘文件;-t
参数指定输出虚拟磁盘文件的类型,其值为以下类型之一:
0
:创建一个包含在单一虚拟文件中的可增长虚拟磁盘
1
:创建一个被分割为每个文件2GB大小的可增长虚拟磁盘
2
:创建一个包含在单一虚拟文件中的预分配虚拟磁盘
3
:创建一个被分割为每个文件2GB大小的预分配虚拟磁盘
(2)多文件的合并
如图所示,将图中名为Windows Server 2003 Enterprise Edition.vmdk的文件以及名为Windows Server 2003 Enterprise Edition-sXXX.vmdk的文件合并为一个名为Merged.vmdk的文件。
打开命令行界面并切换到VMware Workstation目录,输入命令:
vmware-vdiskmanager.exe -r "D:\Virtual Machines\Windows Server 2003 Enterprise Edition.vmdk" -t 0 "D:\Virtual Machines\Merged.vmdk"
命令的格式是:vmware-vdiskmanager.exe -r [源文件] -t 0 [目标文件]
其中[源文件]是待转换的文件;[目标文件]是转换后生成的文件(此文件在系统中是不存在的,只有转换后才存在。所以需要自己为其命名,后缀名为.vmdk);-t后的参数是0表示将源文件合并为一个目标文件。
多文件合并为单文件过程如下:
vmdk到vhd文件格式转换
安装winimage支持各种格式互相转换,如下:
选择源,注意红色箭头,选择vmdk
最后再选择保存位置即可得到一个vhd的磁盘文件。
这一步我们也可以使用阿里云提供的 qemu-img 工具
使用阿里云OSS
主要步骤如下:
(1)开通OSS服务
(2)创建存储空间
(3)上传文件
说明⚠️:关于上传文件,我这里说明下,如果待上传文件大小 5G ,可以通过OSS控制台直接上传。反之,需要使用分片上传和断点续传 ossutil 工具。
使用阿里云ossutil
上面我们生成的 vhd 文件大小是 40G ,所以使用阿里云ossutil工具进行文件的上传工作,MAC电脑下操作命令举例如下:
./ossutilmac64 cp /Users/wtf/Documents/操作系统ISO/zhongbiaoqolin7.4.vhd oss://datagrand-iso/iso-qilin
命令格式:./ossutilmac64 cp a.txt oss://bucket/path
关于阿里云ossutil常用命令的使用详见 命令行工具ossutil概述。
导入自定义镜像
主要步骤如下:
(1)登录ECS管理控制台。
(2)在左侧导航栏,单击镜像 > 导入镜像。
说明⚠️:
-
在导入镜像对话框里,单击提示信息第3步中的确认地址。否则会报权限错误~
-
OSS Object地址,可以在OSS管理控制台中,找到你创建的Bucket空间名字,点击该空间中文件后的详情,复制里面的URL即可。
-
系统平台选择 CentOS(因为本文使用的是中标麒麟7.4系统),当然你也可以选择 Other Linux,但是需要做一定的配置工作。更多的系统平台类型,详见阿里云导入镜像必读。
-
镜像格式本次选择VHD
(3)点击“确定”,等待完成就行。
使用自定义镜像创建实例
根据上面的步骤,我们已经创建好所需的自定义镜像,当我们创建实例选择镜像 --> 自定义镜像 --> 中标麒麟-7.4(上面制作的)即可。
说明⚠️:创建的实例要和自定义的镜像都在同一个区域,如华北2(北京)。