文档目录

环境准备

前提条件

CentOS 7系统模板封装需提前获取ISO镜像,并将其添加至ZStack Cloud云平台,以备操作系统安装时使用。请注意以下内容:
  • 用户需在官网自行获取CentOS 7安装镜像,并遵守相关授权许可。
  • 本文档参考版本为:CentOS-7-x86_64-DVD-1804.iso

背景信息

本章节分为以下流程:
  1. 添加安装镜像。
  2. 创建云盘规格。

操作步骤

  1. 添加安装镜像。

    ZStack Cloud主菜单,点击资源中心 > 云资源池 > 计算配置 > 镜像,进入镜像界面。点击添加镜像,弹出添加镜像界面。

    参考以下示例输入相应内容:
    • 名称:设置镜像名称
    • 简介:可选项,可留空不填
    • 镜像类型:选择系统镜像
    • 镜像格式:选择iso
    • CPU架构:设置镜像的CPU架构,云主机在创建时将继承镜像的CPU架构,此处选择x86_64
    • 平台:选择Linux平台
    • 操作系统:选择Linux
    • Virtio:默认打开
    • 镜像服务器:选择已创建的镜像服务器
    • 镜像路径:添加URL路径或上传本地文件
      • URL:采用指定的URL路径来添加镜像,支持以下格式:
        • HTTP/HTTPS格式:
          • 填写格式为:http://host[:port]/path/filehttps://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文件。
      • 本地文件:选择当前浏览器可访问的镜像直接上传,支持ImageStore和Ceph镜像服务器
        Note: 添加本地文件作为镜像,采用了本地浏览器作为中转上传镜像,请勿刷新或关闭当前浏览器,也不可停止管理节点服务,否则会添加失败。
    • BIOS模式:选择Legacy
    图 1所示:
    图 1. 添加镜像


  2. 创建云盘规格。

    ZStack Cloud主菜单,点击资源中心 > 云资源池 > 计算配置 > 云盘规格,进入云盘规格界面。点击创建云盘规格,弹出创建云盘规格界面。

    可参考以下示例输入相应内容:
    • 名称:设置云盘规格名称
    • 简介:可选项,可留空不填
    • 容量:设置云盘容量大小
      Note: 按需选择合适的云盘规格大小,该云盘规格将用于CentOS 7云主机系统云盘。
      • 若安装CentOS 7命令行界面,推荐使用大于等于40GB的云盘规格。
      • 若安装CentOS 7图形界面(GNOME),推荐使用大于等于60GB的云盘规格。
    • 设置磁盘带宽:可选项,可设置云盘的I/O带宽上限
    • 设置磁盘IOPS:可选项,可设置云盘每秒的读写次数上限
    • 高级参数:可选项,可通过JSON格式配置高级参数
    图 2所示:
    图 2. 创建云盘规格


封装模板

安装操作系统

背景信息

安装操作系统包含以下步骤:
  1. 创建云主机。
  2. 安装CentOS 7。

操作步骤

  1. 创建云主机。

    ZStack Cloud云平台创建云主机,并使用安装镜像引导云主机启动,详情可参考《用户手册》的创建云主机章节。

  2. 安装CentOS 7。
    1. 选择启动项。

      打开控制台,进入CentOS 7安装界面,选择Install CentOS 7,开始安装系统。

      图 3所示:
      图 3. CentOS 7安装界面


    2. 选择安装语言。

      选择安装语言,本教程选择English(English)做为安装程序和系统默认语言,用户可按需选择。

    3. 安装配置汇总。
      该页面展示系统安装配置,用户可按需配置以下内容:
      • 本地化配置:时间/地区、键盘语言、系统语言
      • 软件配置:安装源、安装类型
      • 系统配置:磁盘分区、网络、Kdump、安全策略
      本章节使用配置如图 4所示:
      图 4. 安装配置汇总


    4. (可选)磁盘分区。

      本教程使用自动分区方式进行安装,如需自定义,用户可在安装配置汇总界面,点击INSTALLATION DESTINATION,进入磁盘分区页面进行自定义配置。

      图 5所示:
      图 5. 磁盘分区


    5. 安装系统。
      设置完成后,返回安装配置汇总界面,点击右下角Begin Installation,开始安装系统。等待系统安装完成,点击Reboot重启,进入系统。
      Note: 在该界面,用户可以设置root密码和创建新用户。

配置模板系统

背景信息

模板系统配置包含以下步骤:
  1. 指定Hostname。
  2. 配置网络。
  3. 安装Qemu Guest Agent
  4. (可选)安装cloud-init。
  5. (可选)安装性能优化工具。
  6. (可选)关闭漏洞补丁。

操作步骤

  1. 指定Hostname。

    在CentOS 7中,执行命令hostnamectl set-hostname localhost.localdomain && bash,用于指定使用模板所创建的云主机hostname以网卡IP地址命名。

  2. 配置网络。
    为使模板创建出的云主机可自动获取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    #删除网卡配置文件中的物理地址
  3. 安装Qemu Guest Agent
    1. 使用命令yum install qemu-guest-agent -y安装QGA。
      Note: 针对CentOS7.2/7.3/7.4/7.5/7.6/7.9版本,也可通过安装性能优化工具安装Qemu Guest Agent,详见(可选)安装性能优化工具
    2. 使用命令systemctl enable qemu-guest-agent设置开机启动。
    3. 用getenforce命令检查SELINUX状态,如果返回Enforcing,则执行vi /etc/selinux/config命令修改SELINUX状态为disabled,保存并退出
  4. (可选)安装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
  5. (可选)安装性能优化工具。
    1. 挂载性能优化工具ISO。
      在云主机详情页点击安装性能优化工具,完成ISO挂载。
    2. 执行安装命令。
      进入云主机控制台,执行以下命令完成性能优化工具安装:
      [root@localhost ~]# mkdir /mnt/cdrom    #创建挂载点
      [root@localhost ~]# mount /dev/cdrom /mnt/cdrom    #挂载CD-ROM镜像
      [root@localhost ~]# cd /mnt/cdrom/
      bash ./zs-tools-install.sh     #安装性能优化工具
      [root@localhost ~]# cd ~
      umount /mnt/cdrom    #卸载CD-ROM镜像 (可选)
    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类似盘符。
  6. (可选)关闭漏洞补丁。
    针对CentOS 7.5或CentOS 7.6版本,关闭幽灵漏洞补丁和熔断漏洞补丁,能有效提升云主机性能。可参考以下步骤:
    1. 查看漏洞补丁是否打开
      执行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表示漏洞补丁已关闭。

    2. 查看漏洞修复方式
      若漏洞补丁已开启,再根据上步骤最后一条返回结果进行判断,修复方式包括Retpoline without IBPB和Enhanced IBRS两种。
      • Retpoline without IBPB:此修复方式对系统性能影响较小,关闭或不关闭漏洞补丁均可,请按需选择。
      • Enhanced IBRS:此修复方式对系统性能影响较大,推荐关闭漏洞补丁,可有效提升云主机性能(实测可提升30%左右)。
    3. 关闭漏洞补丁
      可参考以下步骤关闭漏洞补丁:
      1. /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
      2. 执行 grub2-mkconfig > /boot/grub2/grub.cfg命令应用配置。
      3. 重启云主机,配置生效。
      参考示例如下:
      [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     #重启云主机,配置生效

创建系统模板

背景信息

创建系统模板包含以下步骤:
  1. 创建镜像。
  2. 导出镜像。

操作步骤

  1. 创建镜像。

    在所创建云主机详情页,点击更多操作 > 镜像与ISO > 创建镜像,进入创建镜像界面。

    可参考以下示例输入相应内容:
    • 名称:设置镜像名称
    • 简介:可选项,可留空不填
    • 镜像类型:选择系统镜像
    • 镜像服务器:选择已创建的镜像服务器
    图 6所示:
    图 6. 创建镜像


  2. 导出镜像
    导出镜像用于其他云平台直接使用该镜像创建云主机,不同类型镜像服务器的导出方法不同:
    • ImageStore类型镜像服务器。

      镜像页面点击操作 > 导出镜像按钮,即可导出镜像。

      镜像生成后,可以在总览页面复制已导出的镜像URL下载镜像,也可以在导出记录页面复制已导出的镜像URL或直接点击下载镜像。

    • Ceph类型镜像服务器。支持在UI和镜像服务器上导出镜像。
      • 在UI上导出:

        镜像页面点击操作 > 导出镜像按钮,即可导出镜像。

        镜像导出后,可在总览页面复制已导出的镜像URL下载镜像,也可在导出记录页面复制已导出的镜像URL或直接点击下载镜像。

      • 在镜像服务器上导出:
        1. 进入已创建镜像的总览页面,复制安装路径
        2. 登录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:// 前缀。

后续操作

至此,CentOS 7系统模板封装已完成,可使用该镜像批量生成云主机。
CentOS 7系统模板封装教程 | 5.4.12 | ZStack Cloud · ZCF | ZStack 资源中心