站点图标 Linux-技术共享

OpenStack,学会自己制作,qcow2系统镜像

最近一段时间一直在研究OpenStack和Ceph的组合,把服务器集群给搭建了起来,也通过一些官方的Linux实例跑了起来。但是一直没有Windows 10的镜像,无奈,还是自己制作吧,毕竟也不是开源的系统,找不到也正常。(也不是懒得做,主要是手头的资源少)

说干就干!

一、环境准备

在VMware Workstation Pro 10上测试,采用CentOS7.0作为宿主机。要求有图形界面。VMware Workstation设置: d5dd3af2b567470abf1d898131ecd401tplv-k3u1fbpfcp-zoom-in-crop-mark4536000.awebp_ 选择这个选项后,安装的速度会提高。

如果Virtual Machine Management环境不具备,安装以下包

1.1安装kvm内核

yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64
复制代码

1.2安装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.3(略)使用ubuntu安装kvm

# 如果使用的系统是ubuntu,请使用下面的命令安装kvm。后续的制作镜像步骤雷同
sudo apt-get install qemu-kvm
sudo apt-get install qemu
sudo apt-get install virt-manager
sudo apt-get install virt-viewer 
sudo apt-get install libvirt-bin 
sudo apt-get install bridge-utils
复制代码

二、制作镜像

在系统工具中打开虚拟系统管理器

点击该按钮创建虚拟机

选择本地安装介质

选择virtio-win-0.1.141.iso驱动文件作为ISO image

系统的类型和版本选择win10

网络连接就默认。

选择虚拟机的配置,(这里的配置仅影响马上要新建的虚拟机,之后做成镜像上传后新建云虚拟机和他无关)一般2G内存 ,2个cpu够用了

选择存放虚拟机的地方。Virt-manager给的默认位置是/var/lib/libvirt/images下。

点击“加号”创建新的存储卷

创建虚拟机文件的名字和容器格式,(一定要选择qcow2格式)空间20G,点击完成

选择刚创建的存储卷,点击“选择卷”

自定义虚拟机的名字,勾选安装前自定义配置,选择网络NAT

选择增加硬件,选择win10系统iso镜像的路径(注意之前一开始新建虚拟机用的iso镜像是驱动镜像)

设备类型选择CDROW设备,总线类型选择IDE

网卡(NIC)部分,网络源NAT,设备型号选择virtio,点击应用

SATA磁盘,磁盘总线选择VirtIO,存储格式qcow2,点击应用

调整引导选项优先级,把系统镜像的cdrow调到最上面。点击应用。

记得前面配置硬件的对每个硬件的操作完成都要点击“应用”,检查配置无误后,点击左上角“开始安装”,开始装虚拟机系统

进入安装系统界面,一路点击“下一步”

这里系统没有发现磁盘,因为之前磁盘选的是virtio格式,而windows并不自带虚拟磁盘驱动,所以前面所述的virtio-win-0.1.141.iso文件派上用场。点击“加载驱动程序”

点击“浏览”

选择驱动安装位置,CD驱动器 --> viostor --> W8.1 --> amd64 (64位系统对应的是amd64,32位系统对应x86)

安装驱动 “Red HatVirtIO SCSI ...”(磁盘驱动)

发现驱动装好,磁盘被正确识别。点击“下一步”

系统开始安装

设置用户名、密码等一系列系统信息

安装完系统后,由于网卡驱动还没装,所以不能上网。右键计算机->属性->进入设备管理器。选择带有黄色警告标示的网卡(图中名为“以太网控制器”)。右键属性,选择“更新驱动程序”。

25、驱动成功安装,看到虚拟机能联网就大功告成,按照相同方法安装剩余的两个PCI驱动

26、驱动安装完成,镜像制作完成,关机进行镜像文件的压缩处理

三、镜像处理

(文件所显示的大小,与实际的占用空间不一致,实际占用小,但是拷贝到windows中占用空间为文件大小)

3.1 压缩镜像

用图形界面的虚拟机管理器制作的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

复制代码

四、附录:

4.1 改变镜像文件大小

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
复制代码

结尾

最后分享我制作的qcow2的windows 10 镜像。如果需要上文中的virtio-win-*.iso文件或我已经制作好的windows 10系统镜像,请联系我获取!

 

作者:运维贼船
链接:https://juejin.cn/post/7084988831102926879
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
退出移动版