在虚拟机中制作好镜像后,还要完成下面任务才能在天翼云物理机上使用镜像。
转换镜像格式:虚拟机制作出来的镜像是qcow2格式,linux系统需要转换为天翼云物理机使用的squashfs格式,windows系统使用qcow2格式即可。
生成md5文件:使用md5sum命令生成镜像文件的md5校验和,避免传输过程中镜像损坏。
编写分区文件:不同于qcow2格式的镜像,squashfs格式的镜像中不包含分区表信息。需要使用额外的配置文件指定系统盘如何分区。这也使得修改系统盘镜像分区更灵活。
下面分别说明如何做这些任务。
1. 物理机镜像文件介绍
每个物理机镜像都需要4个镜像文件,同步至镜像服务后可使用该物理机镜像创建物理机。
1.1 Linux镜像文件
每个Linux镜像包含4个文件,镜像格式为squashfs,以CTyunOS-23.01.2@2025镜像为例:
镜像文件命名规则: 镜像类型-镜像版本-镜像架构-启动类型.squashfs
镜像类型:例如CentOS、 CTyunOS、Kylin等
镜像版本:例如 8.1、8.1@yunxiao-nv-535、8.1@gpu_01等等
镜像架构:amd64、arm64。其中x86_64设备的镜像架构名为amd64,arm设备使用的镜像架构名为arm64
启动类型:bios、uefi。其中x86_64设备支持bios和uefi,具体看裸机配置(通常是uefi),arm设备支持uefi
CTyunOS-23.01.2@2025的4个镜像文件命名为:
文件1-镜像文件:CTyunOS-23.01.2@2025-amd64-uefi.squashfs
文件2-镜像md5:CTyunOS-23.01.2@2025-amd64-uefi.squashfs.md5
文件3-镜像分区文件:CTyunOS-23.01.2@2025-amd64-uefi.squashfs.lvm
文件4-镜像分区文件:CTyunOS-23.01.2@2025-amd64-uefi.squashfs.direct1.2 Windows镜像文件
每个Windows镜像包含4个文件,镜像格式为qcow2,以windows-server-2016@2025镜像为例:
镜像文件命名规则: 镜像类型-镜像版本-镜像架构-启动类型.镜像格式
镜像类型:windows-server
镜像版本:例如 2016、2016@beijing、2016@beijing-2026等等
镜像架构:amd64。x86_64设备的镜像架构名为amd64,windows镜像仅支持x86_64
启动类型:bios、uefi。其中x86_64设备支持bios和uefi,具体看裸机配置(通常是uefi)
windows-server-2016@2025的4个镜像文件命名为:
文件1-镜像文件:windows-server-2016@2025-amd64-bios.squashfs
文件2-镜像md5:windows-server-2016@2025-amd64-bios.squashfs.md5
文件3-镜像分区文件:windows-server-2016@2025-amd64-bios.squashfs.lvm
文件4-镜像分区文件:windows-server-2016@2025-amd64-bios.squashfs.direct2. Linux镜像文件转换即分区文件编写
2.1 转换镜像格式
使用下面命令可把qcow2格式的镜像转换为squashfs镜像。注意,这一步必须在虚拟机已关机,无其他进程使用镜像的情况下进行。否则因有其他进程修改镜像,镜像上的内容不一致,导致导出的镜像可能是有问题的。
mkdir temp_mnt_dir # 创建挂载用的临时目录
sudo guestmount -r -i -a 镜像名.qcow2 temp_mnt_dir # 把qcow2镜像挂载到临时目录
sudo mksquashfs temp_mnt_dir 镜像名.squashfs -comp xz # 从临时目录制作squashfs格式镜像
sudo guestunmount temp_mnt_dir # 卸载qcow2镜像
sudo rmdir temp_mnt_dir # 删除临时目录2.2 生成md5文件
使用下面命令可生成镜像对应的md5文件
md5sum 镜像名.squashfs > 镜像名.squashfs.md52.3 编写分区文件
分区文件是YAML格式的配置文件,可配置分区及LVM。注意此分区配置文件仅针对天翼云物理机安装时的系统盘分区,不涉及数据盘的分区。
如下示例支持bios和uefi启动,(lvm和direct使用相同内容)
label_type: 'gpt'
partitions:
- index: 1
begin: 2MiB
end: 4MiB
part_type: primary
fs_type:
mount_point:
boot_flag: bios_grub
- index: 2
begin: 4MiB
end: 1028MiB
part_type: primary
fs_type: fat32
mount_point: /boot/efi
- index: 3
begin: 1028MiB
end: 3076MiB
part_type: primary
fs_type: ext2
mount_point: /boot
boot_flag: boot
- index: 4
begin: 3076MiB
end: 100%
part_type: primary
pv: true
lvm:
vg_name: system
lvs:
- index: 5
lv_name: lv_root
size: 60G
mount_point: /
fs_type: xfs
- index: 6
lv_name: lv_swap
size: 16G
fs_type: swap上述YAML配置中各字段的含义。
label_type: 'gpt'。指定分区表类型,另一个选择是'mbr'。MBR是较旧的分区表类型,最多只有4个主分区。使用BIOS方式启动时可使用此分区表类型。UEFI方式启动时必须使用GPT分区表。为了方便地创建多个分区,使用BIOS方式启动时也建议使用GPT分区表。参考选择 GPT 还是 MBR。
partitions下指定各个分区。
index: 分区序号。指定分区的序号,从1开始。
begin: 2MiB。指定分区开始的位置。硬盘开始都头1~2MiB会用来保存分区表或其他一些隐藏的信息,一般需要空出来。单位除了MiB,还可以使用百分比(%)。
end: 130MiB。指定分区结束的位置。建议分区起始位置使用整数+MiB,以便于在4k硬盘上对齐分区。(1MiB是4kB的整数倍。)参考分区对齐。
part_type: primary。指定分区类型,primary表示主分区。GPT分区表中都是主分区。MBR分区表中除了主分区,还有扩展分区(extended)和逻辑分区(logical)。参考MBR(分区表)。
fs_type: fat32。指定文件系统。可选值有 ext2、ext3、ext4、xfs、btrfs、swap、fat16、fat32。其中swap创建交换分区,留空则不创建文件系统。各文件系统有不同的特性,在稳定性、性能等方面各有不同。文件系统的选择和具体应用有关。关于文件系统的一般信息可参考文件系统。如不确定选择何种文件系统,保守的选择是使用各发行版自动分区方案中的默认文件系统。
mount_point: /boot/efi。指定分区的挂载点。留空则不挂载该分区。
boot_flag: bios_grub。添加分区启动相关的标记。
pv: true。指定该分区用作LVM的物理卷。
lvm下指定LVM相关的配置。其中,lvs下指定LVM上各个逻辑卷。注意LVM的物理卷是使用pv: true在partitions下指定的。
vg_name: system。指定LVM卷组名。
index: 分区序号。指定分区的序号,延续partitions中的序号。
lv_name: lv_root。指定卷组名。
size: 60G。指定卷组大小。最后一个卷组可使用100%FREE指定使用剩余所有空间。
mount_point: /。指定卷组的挂载点。
fs_type: xfs。指定卷组的文件系统。
2.4 分区建议
建议按上面样例配置分区,可适当调整分区大小或添加分区。下面说明各个分区。如果需要修改样例中的分区,请先阅读这部分。
分区1,bios_grub分区。当使用GPT分区表,同时使用BIOS方式启动时,GRUB需要安装到该分区,以启动Linux。根据GRUB的文档,此分区大约有1~2MiB即可。使用UEFI方式启动时不需要此分区。参考GRUB文档BIOS installation。
分区2,EFI分区。当使用UEFI方式启动时,必须有此分区,且文件系统必须是fat32。此分区保存EFI启动程序,不需要特别大,一般512MiB到1GiB即可(某些机器上,此分区过小可能导致无法启动)。使用BIOS方式启动时不需要此分区。同时保留分区1和分区2可使分区同时兼容BIOS或UEFI启动方式。关于EFI分区的一般信息,参考EFI 系统分区。
分区3,boot分区。挂载到/boot目录,存放Linux内核、Initramfs等。此分区不需要特别大,一般1~2GiB即可(最少应比两套内核+Initramfs等要大,已保证能升级内核)。建议使用成熟、稳定的文件系统。单独保留此分区把Linux内核和其他分区隔离开,有利于保证启动的稳定性。参考/boot。
分区4,LVM的物理卷。此分区用于LVM的物理卷。LVM不是必须使用的。如果不使用LVM分区,可不设置pv: true的分区。此时也不需要lvm:下的各项配置。普通分区不像LVM逻辑卷,分区后难以改变,应提前规划好。
下面说明各个LVM逻辑卷。如果需要修改样例中的逻辑卷,请先阅读这部分。
使用LVM逻辑卷方便在系统安装后再自行扩展分区大小。关于LVM的一般知识,包括调整LVM逻辑卷大小等,参考LVM。对已有重要数据的分区,需谨慎操作。应先备份数据,再考虑扩缩容LVM逻辑卷。
其他系统分区可考虑使用LVM逻辑卷,而不是普通分区。如何设置分区和具体应用有关,一般的信息和建议可参考分区方案。如不确定如何分区,保守的选择是使用各发行版默认的自动分区方案。
服务器大都内存充足,可考虑不设置swap逻辑卷。服务器内存通常比较大,也很少使用休眠功能,不必参考家用计算机通常给出的内存空间的1倍~2倍的建议。参考Swap。
3. Windows镜像分区文件编写
3.1 生成md5文件
使用下面命令可生成镜像对应的md5文件
md5sum 镜像名.qcow2> 镜像名.qcow2.md53.2 编写分区文件
分区文件是YAML格式的配置文件,由于qcow2自带分区表,分区配置文件中的分区顺序必须与制作的镜像中分区顺序一致,无需关心分区配置文件中的分区大小,qcow2分区表中已记录对应分区大小。
此分区配置文件仅针对天翼云物理机安装时的系统盘分区,不涉及数据盘的分区。
3.2.1 bios启动分区配置文件(lvm和direct使用相同内容)
label_type: 'msdos'
partitions:
- index: 1
begin: 1%
end: 2%
part_type: primary
fs_type: ntfs
mount_point: /system
boot_flag: boot
- index: 2
begin: 2%
end: 3%
part_type: primary
fs_type: fat32
mount_point: /config_drive
- index: 3
begin: 3%
end: 100%
part_type: primary
fs_type: ntfs
mount_point: /windows3.2.2 uefi启动分区配置文件(lvm和direct使用相同内容)
label_type: 'gpt'
partitions:
- index: 1
begin: 1%
end: 2%
part_type: primary
fs_type: fat32
mount_point: /efi
boot_flag: boot
- index: 2
begin: 2%
end: 3%
part_type: primary
fs_type: None
- index: 3
begin: 3%
end: 100%
part_type: primary
fs_type: ntfs
mount_point: /windows