转载自Aiden郭祥跃 ,在此表示感谢!写得很好,通俗易懂,指导我成功制作了镜像
https://www.cnblogs.com/guoxiangyue/p/9188316.html
****************************************************************************
环境:Openstack镜像制作
VMware Workstation Pro 10 下虚拟机,
操作系统,CentOS7.2版
驱动文件:virtio-win-0.1.141.iso ****************************************************************************
一、环境准备
1、在VMware Workstation Pro 10上测试,采用CentOS7.0作为宿主机。要求有图形界面。
2、VMware Workstation设置:
选择这个选项后,安装的速度会提高。
3、如果Virtual Machine Management环境不具备,安装以下包
### 安装kvm内核
# yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64
####安装virt管理工具
# yum install libvirt.x86_64 libvirt-cim.x86_64
# yum install libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64
安装图形界面管理虚拟机(对于远程的被管理主机,可以不安装)
#yum install virt-manager
yum install guestfish libguestfs-tools
检查服务状态、启动服务
# service libvirtd status
# service libvirtd start
二、制作镜像
1、在系统工具中打开虚拟系统管理器
2、点击该按钮创建虚拟机
3、选择本地安装介质
4、选择virtio-win-0.1.141.iso驱动文件作为ISO image
5、系统的类型和版本选择win10
6、网络连接就默认。
7、选择虚拟机的配置,(这里的配置仅影响马上要新建的虚拟机,之后做成镜像上传后新建云虚拟机和他无关)一般2G内存 ,2个cpu够用了
8、选择存放虚拟机的地方。Virt-manager给的默认位置是/var/lib/libvirt/images下。
点击“加号”创建新的存储卷
9、创建虚拟机文件的名字和容器格式,(一定要选择qcow2格式)空间20G,点击完成
选择刚创建的存储卷,点击“选择卷”
10、自定义虚拟机的名字,勾选安装前自定义配置,选择网络NAT
11、选择增加硬件,选择win10系统iso镜像的路径(注意之前一开始新建虚拟机用的iso镜像是驱动镜像)
12、设备类型选择CDROW设备,总线类型选择IDE
13、网卡(NIC)部分,网络源NAT,设备型号选择virtio,点击应用
14、IDE磁盘,磁盘总线选择VirtIO,存储格式qcow2,点击应用
15、调整引导选项优先级,把系统镜像的cdrow调到最上面。点击应用。
16、记得前面配置硬件的对每个硬件的操作完成都要点击“应用”,检查配置无误后,点击左上角“开始安装”,开始装虚拟机系统
17、进入安装系统界面,一路点击“下一步”
18、这里系统没有发现磁盘,因为之前磁盘选的是virtio格式,而windows并不自带虚拟磁盘驱动,所以前面所述的virtio-win-0.1.141.iso文件派上用场。点击“加载驱动程序”
19、点击“浏览”
20、选择驱动安装位置,CD驱动器 –> viostor –> W8.1 –> amd64 (64位系统对应的是amd64,32位系统对应x86)
21、安装驱动 “Red HatVirtIO SCSI …”(磁盘驱动)
22、发现驱动装好,磁盘被正确识别。点击“下一步”
23、系统开始安装
24、设置用户名、密码等一系列系统信息
25、安装完系统后,由于网卡驱动还没装,所以不能上网。右键计算机->属性->进入设备管理器。选择带有黄色警告标示的网卡(图中名为“以太网控制器”)。右键属性,选择“更新驱动程序”。
25、驱动成功安装,看到虚拟机能联网就大功告成,按照相同方法安装剩余的两个PCI驱动
26、驱动安装完成,镜像制作完成,关机进行镜像文件的压缩处理
三、镜像处理
(文件所显示的大小,与实际的占用空间不一致,实际占用小,但是拷贝到windows中占用空间为文件大小)
压缩镜像
用图形界面的虚拟机管理器制作的Windows镜像,文件大小即为新建虚拟机定义的磁盘大小,如果要c盘40G的话,生成的镜像文件就是40G大小,需要压缩后再上传。40G大小压缩后3G。
#virt-sparsify –compress –convert qcow2 /var/lib/libvirt/images/ Windows10.qcow2 /var/lib/libvirt/images/ Windows10.qcow2
(该命令包含在包里guestfish libguestfs-tools)
上面命令压缩未成功,使用下面命令压缩
qemu-img convert -c -O qcow2 /var/lib/libvirt/images/win10.qcow2 /var/lib/libvirt/images/Windows10.qcow2
附录:
改变镜像文件大小
1、qemu-img resize命令
这个命令需要注意数据的备份,下面是转化的例子。
(该命令增加了D盘,并未将C盘增大)
# qemu-img resize Windows10. qcow2 +5GB
查询调整情况
# qemu-img info Windows10. qcow2
2、virt-resize命令
(通过该命令实现 镜像文件大小的调整,注意:针对根分区或c盘分区的扩大,解决不同C盘大小,多次安装操作系统做镜像的问题;)
查看分区情况(也许和你想的不一样)
[root@localhost ~]# virt-filesystems –long -h –all -a /root/ Windows10-imange.qcow2
Name Type VFS Label MBR Size Parent
/dev/sda1 filesystem ntfs 系统保留 – 100M –
/dev/sda2 filesystem ntfs – – 20G –
/dev/sda1 partition – – 07 100M /dev/sda
/dev/sda2 partition – – 07 20G /dev/sda
/dev/sda device – – – 20G –
把qcow2格式的磁盘镜像转成raw
qemu-img convert -f qcow2 -O raw Windows10-imange.qcow2 Windows10-imange.raw
利用truncate创建一个新的文件,大小比centos2.raw大5G
truncate -r Windows10–imange.raw Windows10–imange30g.raw
truncate -s +5G Windows10–imange30g.raw
开始调整
virt-resize –expand /dev/sda2 Windows10-imange.raw Windows10–imange30g.raw
virt-resize –expand /dev/sda2 Windows10-imange.raw Windows10–imange30g.raw
调整完后转回qcow2格式
qemu-img convert -f raw -O qcow2 Windows10-imange30g.raw Windows10-imange30g.qcow2
系统管理中c盘增大了,但资源管理器中c盘没变。
登录windows 10 系统;
Cmd:>chkdsk c:/f
转换文件格式
—Convert disk image to disk image
#virt-v2v -i disk disk.img -o local -os /var/tmp