searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

制作自定义的虚机镜像

2023-07-03 02:19:07
300
0

1. 什么是镜像

虚拟机镜像是包含一个虚拟磁盘的单个文件,该虚拟磁盘上安装了可引导操作系统。镜像是云主机的系统盘模板, 镜像可以理解为主机的系统盘(一块硬盘)。镜像与ISO的不用 可以理解为ISO安装光盘和电脑c盘的差别。从ISO安装系统及应用到c盘中(镜像文件),最终得到镜像文件。本文将介绍镜像制作的相关基础知识,并介绍如何去制作一个镜像。

2. 镜像的常见格式

镜像常见的格式如下表所示:

镜像格式

介绍

QCOW2

QCOW2格式镜像是QEMU模拟器支持的一种磁盘镜像,是用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的RAW格式镜像相比,QCOW2格式有如下几个特性:支持更小的磁盘占用。支持写时拷贝(CoW,Copy-On-Write),镜像文件只反映底层磁盘变化。支持快照,可以包含多个历史快照。支持压缩和加密,可以选择ZLIB压缩和AES加密。

VMDK

VMDK是VMware创建的虚拟硬盘格式。一个VMDK文件代表VMFS(云服务器文件系统)在云服务器上的一个物理硬盘驱动。

VHD

VHD是微软提供的一种虚拟硬盘文件格式。VHD文件格式可以被压缩成单个文件存放到宿主机的文件系统上,主要包括云服务器启动所需的文件系统。

VHDX

微软在Windows Server 2012中的Hyper-V引入的一个新版本的VHD格式,称为VHDX。与VHD格式相比,VHDX具有更大的存储容量。它在电源故障期间提供数据损坏保护,并且优化了磁盘结构对齐方式,以防止新的大扇区物理磁盘性能降级。

RAW

RAW格式是直接给云服务器进行读写的文件。RAW不支持动态增长空间,是镜像中I/O性能最好的一种格式。

QCOW

QCOW通过二级索引表来管理整个镜像的空间分配,其中第二级的索引用了内存CACHE技术,需要查找动作,这方面导致性能的损失。QCOW优化性能低于QCOW2,读写性能低于RAW。

VDI

VDI是Oracle公司Virtual BOX虚拟化软件所用的硬盘镜像文件格式,支持快照。

QED

QED格式是QCOW2格式的一种改进,存储定位查询方式和数据块大小与QCOW2一样。但在实现CoW(Copy-On-Write)的机制时,QED将QCOW2的引用计数表用了一个重写标记(Dirty Flag)来替代。

3. 镜像制作流程

下图绘制了镜像制作的基本流程,本文将制作一个QCOW2的虚机镜像,操作流程如下:

(1)创建虚机

用户需要基于ios或已有镜像文件启动虚机。在创建虚机前,需要需提前安装配置qemu-kvm、libvirt、libguestfs-tools、virt-install等工具,用于启动虚机。除此之外:用户在进行镜像制作时,需要首先准备好ios文件或镜像文件。

【操作步骤】

  1)cd /var/lib/libvirt/images

2)使用wget命令下载网站上的镜像,wget -o +镜像地址

  3) 以下载的为IOS镜像为例子,我们使用virt-install启动虚机

virt-install \

--connect qemu:///system --name centos7 --arch aarch64 \

--vcpu 2 --memory 1024 --debug \

--disk path=/var/lib/libvirt/images/centos7.qcow2,format=qcow2,device=disk,bus=virtio \

--channel unix,mode=bind,target_type=virtio,name=org.qemu.guest_agent.0 \

--network default,model=virtio \

--graphics vnc,listen=0.0.0.0 \

--cdrom /var/lib/libvirt/images/CentOS-7-aarch64-Minimal-2009.iso

参数介绍:

--connect  指定连接hypervisor的uri,qemu:///system表示以系统默认的方式连接本地的kvm系统

--virt-type  指定虚拟化类型,使用qemu还是kvm

--name     指定虚拟机名字

--ram      指定虚拟机内存

--vcpus    指定虚拟机的cpu数量

--arch     指定虚拟机架构

--network  指定网络和网络类型,具体参数和解释可以通过"man virt-install"来查询,default网络和virtio模式是常用选项

--disk     指定磁盘,该参数可以指定多个。

           path为宿主机上的具体路径;

           format为磁盘文件格式;

           device为磁盘类型,可以是cdrom或者disk;

           bus是磁盘总线,可以是virtio(虚拟机显示vda)或者ide(虚拟机显示sda)

--cdrom    指定cdrom路径,这个参数只能指定一个,如需多个光盘,其他的要通过--disk参数指定

--graphics 指定图形显示,装机时通过该图形界面连接到虚拟机并手动执行操作,listen表示允许谁连接该图形化界面,0.0.0.0表示允许所有地址访问。

--video    指定graphic的类型,比如spice,qxl等等

--channel  指定和宿主机通信的套接字文件,比如这里创建一个unix套接字,路径为/var/lib/libvirt/qemu/window2008_datadancer.agent,guest里名字为org.qemu.guest_agent.0

--os-type  指定guest的操作系统类型

--boot    启动方式,可以指定为cdrom(光盘),fd(软盘),hd(硬盘),network(网络)启动,也可以分别指定kernel和initrd等,具体查看man virt-install。

 

2)执行了以上命令后,在宿主机上新启动一个终端,输入 virsh vncdisplay <虚拟机名称或id>,查到虚拟机的vnc地址,在自己的笔记本上使用vnc viewer连接vnc并进行登录。(需关闭防火墙)

其他常用virsh命令:

virsh start centos7         #启动一个域中存在但处于关机状态的虚拟机  

virsh shutdown centos7      #关闭虚拟机centos7(相当于虚拟机执行poweroff命令)  

virsh destroy centos7       #关闭虚拟机centos7(相当于拔电源强制关机)   

virsh list                       #列出当前host上active状态的虚拟机,、

 

(2)定制化安装、配置

用户可在启动的虚机中,完成需要的组件、服务的安装,实现自定义的系统配置。

在这里我们可以配置好yum源,安装一些软件。

【操作步骤】

1)配置yum源

cd /etc/yum.repos.d/

vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?

release= $releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

2)安装软件

yum install tar -y

yum install pam-devel

(3)导出镜像文件

对镜像虚机关机,初始化信息,导出镜像文件

操作步骤

virsh undefine  centos7 export LIBGUESTFS_BACKEND=direct; virt-sysprep -a centos7.qcow2 unset LIBGUESTFS_BACKEND

至此,用户可得到一个名称为centos7.qcow2的自定义虚机镜像。

0条评论
0 / 1000
f****f
1文章数
1粉丝数
f****f
1 文章 | 1 粉丝
f****f
1文章数
1粉丝数
f****f
1 文章 | 1 粉丝
原创

制作自定义的虚机镜像

2023-07-03 02:19:07
300
0

1. 什么是镜像

虚拟机镜像是包含一个虚拟磁盘的单个文件,该虚拟磁盘上安装了可引导操作系统。镜像是云主机的系统盘模板, 镜像可以理解为主机的系统盘(一块硬盘)。镜像与ISO的不用 可以理解为ISO安装光盘和电脑c盘的差别。从ISO安装系统及应用到c盘中(镜像文件),最终得到镜像文件。本文将介绍镜像制作的相关基础知识,并介绍如何去制作一个镜像。

2. 镜像的常见格式

镜像常见的格式如下表所示:

镜像格式

介绍

QCOW2

QCOW2格式镜像是QEMU模拟器支持的一种磁盘镜像,是用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的RAW格式镜像相比,QCOW2格式有如下几个特性:支持更小的磁盘占用。支持写时拷贝(CoW,Copy-On-Write),镜像文件只反映底层磁盘变化。支持快照,可以包含多个历史快照。支持压缩和加密,可以选择ZLIB压缩和AES加密。

VMDK

VMDK是VMware创建的虚拟硬盘格式。一个VMDK文件代表VMFS(云服务器文件系统)在云服务器上的一个物理硬盘驱动。

VHD

VHD是微软提供的一种虚拟硬盘文件格式。VHD文件格式可以被压缩成单个文件存放到宿主机的文件系统上,主要包括云服务器启动所需的文件系统。

VHDX

微软在Windows Server 2012中的Hyper-V引入的一个新版本的VHD格式,称为VHDX。与VHD格式相比,VHDX具有更大的存储容量。它在电源故障期间提供数据损坏保护,并且优化了磁盘结构对齐方式,以防止新的大扇区物理磁盘性能降级。

RAW

RAW格式是直接给云服务器进行读写的文件。RAW不支持动态增长空间,是镜像中I/O性能最好的一种格式。

QCOW

QCOW通过二级索引表来管理整个镜像的空间分配,其中第二级的索引用了内存CACHE技术,需要查找动作,这方面导致性能的损失。QCOW优化性能低于QCOW2,读写性能低于RAW。

VDI

VDI是Oracle公司Virtual BOX虚拟化软件所用的硬盘镜像文件格式,支持快照。

QED

QED格式是QCOW2格式的一种改进,存储定位查询方式和数据块大小与QCOW2一样。但在实现CoW(Copy-On-Write)的机制时,QED将QCOW2的引用计数表用了一个重写标记(Dirty Flag)来替代。

3. 镜像制作流程

下图绘制了镜像制作的基本流程,本文将制作一个QCOW2的虚机镜像,操作流程如下:

(1)创建虚机

用户需要基于ios或已有镜像文件启动虚机。在创建虚机前,需要需提前安装配置qemu-kvm、libvirt、libguestfs-tools、virt-install等工具,用于启动虚机。除此之外:用户在进行镜像制作时,需要首先准备好ios文件或镜像文件。

【操作步骤】

  1)cd /var/lib/libvirt/images

2)使用wget命令下载网站上的镜像,wget -o +镜像地址

  3) 以下载的为IOS镜像为例子,我们使用virt-install启动虚机

virt-install \

--connect qemu:///system --name centos7 --arch aarch64 \

--vcpu 2 --memory 1024 --debug \

--disk path=/var/lib/libvirt/images/centos7.qcow2,format=qcow2,device=disk,bus=virtio \

--channel unix,mode=bind,target_type=virtio,name=org.qemu.guest_agent.0 \

--network default,model=virtio \

--graphics vnc,listen=0.0.0.0 \

--cdrom /var/lib/libvirt/images/CentOS-7-aarch64-Minimal-2009.iso

参数介绍:

--connect  指定连接hypervisor的uri,qemu:///system表示以系统默认的方式连接本地的kvm系统

--virt-type  指定虚拟化类型,使用qemu还是kvm

--name     指定虚拟机名字

--ram      指定虚拟机内存

--vcpus    指定虚拟机的cpu数量

--arch     指定虚拟机架构

--network  指定网络和网络类型,具体参数和解释可以通过"man virt-install"来查询,default网络和virtio模式是常用选项

--disk     指定磁盘,该参数可以指定多个。

           path为宿主机上的具体路径;

           format为磁盘文件格式;

           device为磁盘类型,可以是cdrom或者disk;

           bus是磁盘总线,可以是virtio(虚拟机显示vda)或者ide(虚拟机显示sda)

--cdrom    指定cdrom路径,这个参数只能指定一个,如需多个光盘,其他的要通过--disk参数指定

--graphics 指定图形显示,装机时通过该图形界面连接到虚拟机并手动执行操作,listen表示允许谁连接该图形化界面,0.0.0.0表示允许所有地址访问。

--video    指定graphic的类型,比如spice,qxl等等

--channel  指定和宿主机通信的套接字文件,比如这里创建一个unix套接字,路径为/var/lib/libvirt/qemu/window2008_datadancer.agent,guest里名字为org.qemu.guest_agent.0

--os-type  指定guest的操作系统类型

--boot    启动方式,可以指定为cdrom(光盘),fd(软盘),hd(硬盘),network(网络)启动,也可以分别指定kernel和initrd等,具体查看man virt-install。

 

2)执行了以上命令后,在宿主机上新启动一个终端,输入 virsh vncdisplay <虚拟机名称或id>,查到虚拟机的vnc地址,在自己的笔记本上使用vnc viewer连接vnc并进行登录。(需关闭防火墙)

其他常用virsh命令:

virsh start centos7         #启动一个域中存在但处于关机状态的虚拟机  

virsh shutdown centos7      #关闭虚拟机centos7(相当于虚拟机执行poweroff命令)  

virsh destroy centos7       #关闭虚拟机centos7(相当于拔电源强制关机)   

virsh list                       #列出当前host上active状态的虚拟机,、

 

(2)定制化安装、配置

用户可在启动的虚机中,完成需要的组件、服务的安装,实现自定义的系统配置。

在这里我们可以配置好yum源,安装一些软件。

【操作步骤】

1)配置yum源

cd /etc/yum.repos.d/

vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?

release= $releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

2)安装软件

yum install tar -y

yum install pam-devel

(3)导出镜像文件

对镜像虚机关机,初始化信息,导出镜像文件

操作步骤

virsh undefine  centos7 export LIBGUESTFS_BACKEND=direct; virt-sysprep -a centos7.qcow2 unset LIBGUESTFS_BACKEND

至此,用户可得到一个名称为centos7.qcow2的自定义虚机镜像。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1