环境准备
前提条件
CentOS 7系统模板封装需提前获取ISO镜像,并将其添加至ZStack Cloud云平台,以备操作系统安装时使用。请注意以下内容:
- 用户需在官网自行获取CentOS 7安装镜像,并遵守相关授权许可。
- 本文档参考版本为:CentOS-7-x86_64-DVD-1804.iso。
背景信息
本章节分为以下流程:
- 添加安装镜像。
- 创建云盘规格。
操作步骤
-
添加安装镜像。
在ZStack Cloud主菜单,点击,进入镜像界面。点击添加镜像,弹出添加镜像界面。
参考以下示例输入相应内容:- 名称:设置镜像名称
- 简介:可选项,可留空不填
- 镜像类型:选择系统镜像
- 镜像格式:选择iso
- CPU架构:设置镜像的CPU架构,云主机在创建时将继承镜像的CPU架构,此处选择x86_64
- 平台:选择Linux平台
- 操作系统:选择Linux
- Virtio:默认打开
- 镜像服务器:选择已创建的镜像服务器
- 镜像路径:添加URL路径或上传本地文件
- URL:采用指定的URL路径来添加镜像,支持以下格式:
- HTTP/HTTPS格式:
- 填写格式为:http://host[:port]/path/file或https://host[:port]/path/file
- FTP格式:
- 匿名模式:ftp://hostname[:port]/path/file
- 非匿名模式:ftp://user:password@hostname[:port]/path/file
- SFTP格式:
- 指定密码模式:sftp://user:password@hostname[:port]/path/file
- 免密模式:sftp://user@hostname[:port]/path/file
- 镜像服务器上的绝对路径,支持ImageStore镜像服务器
例如:file:///path/file
Note:- 输入URL时,需确保可被镜像服务器访问,且存在此镜像文件。
- 使用SFTP免密模式上传镜像时,需提前确保镜像服务器与SFTP服务器可互相SSH免密登录。
- 关于平滑连续进度条显示和断点续传:
- ImageStore和Ceph镜像服务器均支持平滑连续进度条显示与断点续传。
- 关于file:///方式上传镜像:
- 若使用Ceph镜像服务器,目前暂不支持file:///格式的输入。
- file:///是三个/,对应的路径应为镜像服务器的绝对路径。例如file:///opt/dvd/image-1.4.qcow2,在镜像服务器的/opt/dvd目录下应存放有image-1.4.qcow2文件。
- HTTP/HTTPS格式:
- 本地文件:选择当前浏览器可访问的镜像直接上传,支持ImageStore和Ceph镜像服务器Note: 添加本地文件作为镜像,采用了本地浏览器作为中转上传镜像,请勿刷新或关闭当前浏览器,也不可停止管理节点服务,否则会添加失败。
- URL:采用指定的URL路径来添加镜像,支持以下格式:
- BIOS模式:选择Legacy
图 1. 添加镜像 
-
创建云盘规格。
在ZStack Cloud主菜单,点击,进入云盘规格界面。点击创建云盘规格,弹出创建云盘规格界面。
可参考以下示例输入相应内容:- 名称:设置云盘规格名称
- 简介:可选项,可留空不填
- 容量:设置云盘容量大小Note: 按需选择合适的云盘规格大小,该云盘规格将用于CentOS 7云主机系统云盘。
- 若安装CentOS 7命令行界面,推荐使用大于等于40GB的云盘规格。
- 若安装CentOS 7图形界面(GNOME),推荐使用大于等于60GB的云盘规格。
- 设置磁盘带宽:可选项,可设置云盘的I/O带宽上限
- 设置磁盘IOPS:可选项,可设置云盘每秒的读写次数上限
- 高级参数:可选项,可通过JSON格式配置高级参数
图 2. 创建云盘规格 
封装模板
安装操作系统
背景信息
安装操作系统包含以下步骤:
- 创建云主机。
- 安装CentOS 7。
操作步骤
-
创建云主机。
在ZStack Cloud云平台创建云主机,并使用安装镜像引导云主机启动,详情可参考《用户手册》的创建云主机章节。
-
安装CentOS 7。
配置模板系统
背景信息
模板系统配置包含以下步骤:
- 指定Hostname。
- 配置网络。
- 安装Qemu Guest Agent
- (可选)安装cloud-init。
- (可选)安装性能优化工具。
- (可选)关闭漏洞补丁。
操作步骤
-
指定Hostname。
在CentOS 7中,执行命令
hostnamectl set-hostname localhost.localdomain && bash,用于指定使用模板所创建的云主机hostname以网卡IP地址命名。 -
配置网络。
为使模板创建出的云主机可自动获取IP地址,需修改网卡相关配置,执行命令如下:
[root@localhost ~]# sed -i '/ONBOOT=/cONBOOT=yes' /etc/sysconfig/network-scripts/ifcfg-eth0 #设置开机自动激活网卡 [root@localhost ~]# sed -i '/^UUID'/d /etc/sysconfig/network-scripts/ifcfg-eth0 #删除网卡配置文件中的UUID [root@localhost ~]# sed -i '/^HWADDR'/d /etc/sysconfig/network-scripts/ifcfg-eth0 #删除网卡配置文件中的物理地址 -
安装Qemu Guest Agent
-
(可选)安装cloud-init。
为保证使用封装镜像创建云主机时支持User Data或SSH公钥等自定义配置功能,需要在封装镜像前安装cloud-init。推荐cloud-init版本为:0.7.9、17.1、19.4及以后版本,请按需选择并自行安装。Note: 安装cloud-init需注意以下内容:
- 请安装推荐版本cloud-init,否则可能导致User Data或SSH公钥功能不可用。
- 安装cloud-init后,SSH密码认证默认关闭,如需开启,需使用vi
/etc/cloud/cloud.cfg命令,设置
ssh_pwauth参数值为1。
-
(可选)安装性能优化工具。
Note: 请注意以下内容:
- 创建Linux系统的镜像时,若挂载数据云盘,请勿在/etc/fstab文件中写入数据云盘挂载信息,否则会导致使用该模板所创建的云主机无法正常启动。
- 如需启动时挂载数据云盘,推荐使用以下方式:
[root@localhost ~]# echo "mount -t ext4 -U "d0shC2-2GO1-Vyuc-XKXf-Pb3c-uvG5-92Fzeu" /mnt" >> /etc/rc.d/rc.local [root@localhost ~]# # -t表示该磁盘的文件系统,-U表示使用UUID方式挂载磁盘,/mnt表示挂载路径 [root@localhost ~]# # 设备UUID可使用blkid命令获取 [root@localhost ~]# chmod +x /etc/rc.d/rc.local [root@localhost ~]# # 建议使用设备的UUID挂载磁盘,而非使用/dev/vdb类似盘符。
-
(可选)关闭漏洞补丁。
针对CentOS 7.5或CentOS 7.6版本,关闭幽灵漏洞补丁和熔断漏洞补丁,能有效提升云主机性能。可参考以下步骤:
- 查看漏洞补丁是否打开执行
grep . /sys/devices/system/cpu/vulnerabilities/*命令,通过查看/sys的方法检测漏洞补丁是否打开,例如:# grep . /sys/devices/system/cpu/vulnerabilities/* /sys/devices/system/cpu/vulnerabilities/l1tf:Not affected /sys/devices/system/cpu/vulnerabilities/meltdown:Not affected /sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl and seccomp /sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: Load fences, __user pointer sanitization /sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Enhanced IBRS根据最后一条返回结果进行判断,状态显示为Mitigation表示漏洞补丁已开启,显示为vulnerable表示漏洞补丁已关闭。
- 查看漏洞修复方式若漏洞补丁已开启,再根据上步骤最后一条返回结果进行判断,修复方式包括Retpoline without IBPB和Enhanced IBRS两种。
- Retpoline without IBPB:此修复方式对系统性能影响较小,关闭或不关闭漏洞补丁均可,请按需选择。
- Enhanced IBRS:此修复方式对系统性能影响较大,推荐关闭漏洞补丁,可有效提升云主机性能(实测可提升30%左右)。
- 关闭漏洞补丁可参考以下步骤关闭漏洞补丁:
- 在/etc/default/grub文件为GRUB_CMDLINE_LINUX参数添加值noibrs noibpb nopti spectre_v2=off nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off。
- 执行
grub2-mkconfig > /boot/grub2/grub.cfg命令应用配置。 - 重启云主机,配置生效。
[root@10-0-5-87 ~]# cat /etc/default/grub #查看/etc/default/grub文件配置,实际请按要求添加配置 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=zstack/root rd.lvm.lv=zstack/swap rhgb quiet noibrs noibpb nopti spectre_v2=off nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off" GRUB_DISABLE_RECOVERY="true" [root@10-0-5-87 ~]# grub2-mkconfig > /boot/grub2/grub.cfg #应用配置 [root@10-0-5-87 ~]# reboot #重启云主机,配置生效
- 查看漏洞补丁是否打开
创建系统模板
背景信息
创建系统模板包含以下步骤:
- 创建镜像。
- 导出镜像。
操作步骤
-
创建镜像。
在所创建云主机详情页,点击,进入创建镜像界面。
-
导出镜像
导出镜像用于其他云平台直接使用该镜像创建云主机,不同类型镜像服务器的导出方法不同:
- ImageStore类型镜像服务器。
在镜像页面点击按钮,即可导出镜像。
镜像生成后,可以在总览页面复制已导出的镜像URL下载镜像,也可以在导出记录页面复制已导出的镜像URL或直接点击下载镜像。
- Ceph类型镜像服务器。支持在UI和镜像服务器上导出镜像。
- 在UI上导出:
在镜像页面点击按钮,即可导出镜像。
镜像导出后,可在总览页面复制已导出的镜像URL下载镜像,也可在导出记录页面复制已导出的镜像URL或直接点击下载镜像。
- 在镜像服务器上导出:
- 进入已创建镜像的总览页面,复制安装路径。
- 登录Ceph服务器终端,使用rbd
export命令导出,例如:假定获取到的安装路径为ceph://bak-t-cac5eee23a204c1a914d1743f1584644/7232237c0059409babcd1c7a69452b98,使用以下命令导出镜像:
[root@ceph-node1 ~]# rbd export bak-t-cac5eee23a204c1a914d1743f1584644/7232237c0059409babcd1c7a69452b98 /root/export-test.qcow2 [root@ceph-node1 ~]# # bak-t字段表示镜像安装路径 [root@ceph-node1 ~]# # /root/export-test.qcow2表示导出的目标路径及文件名Note: rbd export命令中不包含 ceph:// 前缀。
- 在UI上导出:
- ImageStore类型镜像服务器。




