制作 SolusVM KVM 系统模板方法(详细图文)

Kevin 教程 2,572 次浏览 38条评论

虽然网上可以找到 SolusVM 系统模板制作教程,但介绍的都比较粗略,很多操作上的坑没有提到。包括来自官方的文档,官方有两个教程(链接一链接二)。前者是 SolusVM 自带的功能脚本(1.13.00 版开始提供),操作简单也是测试可行的方法。后者使用 libguestfs 工具包命令制作,测试没有成功。加之教程时间久远,可能方法已失效或需更新,故下文介绍方法基于第一种。

下载系统镜像

SSH 登录 SolusVM 主控服务器,下载系统 ISO 安装镜像到指定目录(选 Minimal 版本)。

示例下载 CentOS 7.6 1810 Minimal(获取 CentOS 最新版历史版本)。

cd /home/solusvm/kvm/iso && wget http://mirrors.maine.edu/CentOS/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso

如要确认文件完整性,可用 sha256sum 命令校验文件指纹

添加同步 ISO

SolusVM 主控面板菜单栏 Configuration -> Media Groups 创建一个 ISO 组。然后 Media -> Add ISO,其中 PAE 选项设置为 Off。

Add Media Groups
创建 ISO 媒体组
Add ISO Media
添加 ISO 系统镜像

Media -> Media Sync -> Create 同步媒体任务,把添加的 ISO 同步到节点服务器上。刷新 Jobs 选项卡页面查看同步进度,等状态变为 Completed。

Create Media Sync
同步 ISO 系统镜像
Media Sync Jobs
检查同步任务进度

创建 KVM 虚拟机

Virtual Servers -> Add Virtual Server 创建一台 KVM 虚拟机,Plan 选 Custom 以便手动设定配置。硬盘不要设得太大,不然制作出来的系统模板无法应用在比它小的虚拟机上(错误见下图 2)。

Select a Node & Plan
选择虚拟机开设节点和配置
Boot failed: could not read the boot disk
不当配置导致系统启动引导失败

安装 CentOS 7 Minimal 为例,3G 硬盘空间就足够了(若要额外安装软件,则适当调整),内存不要设太低(过低可能无法加载图形安装界面)。笔者这里配置硬盘 3G、内存 512M,Swap 256M,CPU 1核)。主机名填 localhost.localdomain,选中添加的 ISO 系统镜像,没有 IPv6 就填 0。

更新:为减小而后制作的系统模板体积,建议硬盘多给两三 G,例如 5 G。

Add Virtual Server

创建后先不急于安装,将 Disk Driver 由 ide (default) 改为 virtio 模式,性能会好一些。之后点击 Reboot 使设置生效,等待片刻再通过 HTML5 VNC 进入系统安装。

Disk Driver Virtio
更改硬盘设备类型
Virtual Server Options
虚拟机控制选项

虚拟机系统安装

来到 CentOS 7 系统安装界面,主要设置安装位置和网络 & 主机名选项。

Install CentOS 7
CentOS 7 安装界面
Installation Summary
CentOS 7 安装选项

设置安装位置,选中“I will configure partitioning”,点击左上角“Done”进入分区设置。

Installation Destination

选择“Standard Partition”,右下角加号添加分区。SolusVM 二代系统模板不支持扩展和逻辑分区(第一代支持,但因其局限性不被主流所使用)。这里创建两个固定大小标准分区,具体如下(系统模板在应用时会自动调整分区大小,故这里设置值不用有特别考虑)。

  • 第一个分区挂载点设置/,文件系统选 Ext4(Ext3 也可以,勿用 XFS 因其不支持压缩);
  • 第二个分区类型选择 swap,文件系统也是 swap(内存交换分区非必需,也可以不创建);

主分区文件系统这里有个坑,CentOS 7/Debian 9/Ubuntu 18 如果用 Ext4,制作出来的系统模板在运行 CentOS 6 节点服务器上 SolusVM 有的功能会失效(不能自动调整虚拟机分区大小),使用 Ext3 则正常。在这个问题上折腾了好久,参考官方系统模板找到解决方法,下文有介绍。

另外如果制作 Debian 9/Ubuntu 18 系统模板,必须在运行 CentOS 7 的节点服务器上操作,不然会制作失败,出来的镜像文件过大且无法使用!在这个问题上折腾了好久才发现…

更新:上面两段红色文字描述问题后来找到解决方法,在节点服务器上添加 centos-release-xen 软件源,使用 Xen4 最新内核就行。下面几个命令分别为添加软件源、安装新版内核,禁用软件源(可用yum repolist all命令检查确认)。

yum -y install centos-release-xen
yum -y upgrade kernel kernel-headers --enablerepo=centos-virt-xen-48
sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo
sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen-dependencies.repo

更新:上面划线方法有个问题,开多核 CPU VPS 系统将不能正常运行。解决方法是添加 ELRepo 软件源以更新内核(备注:链接文章针对 CentOS 7 所写,CentOS 6 可能部分命令不能用,GRUB 配置文件路径也不同,应为/boot/grub/grub.conf),测试更新到 4.4 内核可以解决上述问题。

笔者这里/分区设置 2G,Swap 分区设置 256M。设置后点“Done”,按提示应用分区更改。

Manual Partitioning
添加标准分区
Create Partitioning
创建所需分区

设置网络和主机名。网络配置不用修改,使用默认 DHCP 方式。如果之后要安装软件,则开启网络连接。右下角设置主机名,点击“Apply”。

Network & HostName

返回界面点击开始安装,过程中设置 Root 密码,完成后点 Reboot。至此系统安装完成。

User Settings
设置 Root 密码
Install Complete
安装完成重启

定制修改所需系统环境

VNC 或 SSH 登录刚安装的系统,完成以下必须项设置。其它更改定制也在此过程中操作,譬如更新软件禁用 SELinux开启 BBR 等。如果系统安装时没有开启网络连接,可以在虚拟机控制面板点“Re-Configure”,SolusVM 会自动配置网络连接。

Virtual Server Re-Configure

可选项一:卸载不必要已安装软件,用yum list installed命令查询。例如卸载 NetworkManager。

yum -y remove NetworkManager NetworkManager-*

必设项一: 编辑/etc/fstab文件,将硬盘分区 UUID 改为设备名(下面红色部分)。如果不修改,之后创建的系统模板用来开虚拟机时会找不到硬盘分区。

#
# /etc/fstab
# Created by anaconda on Mon Jan  8 06:13:00 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/vda1	 /                       ext4    defaults        1 1
/dev/vda2	 swap                    swap    defaults        0 0

必设项二:编辑/etc/default/grub文件,在 GRUB_CMDLINE_LINUX 参数里添加以下红色内容,目的是设置使用传统 ifcfg-ethx 网卡命名方式。

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 rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

修改后运行grub2-mkconfig -o /boot/grub2/grub.cfg命令重新生成 grub 配置文件。

必设项三:编辑/etc/sysconfig/network-scripts/ifcfg-eth0网卡文件,清除里面的网络配置信息,设置 DHCP 自动分配方式。可直接复制下面内容替换。

DEVICE=eth0
NAME=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPV6_PRIVACY=no

之后service network restart重启网络(会断开 SSH,确认已完成需要网络的操作)。

必设项四:创建调整分区大小的系统服务和脚本文件,以解决 SolusVM 不能自动完成问题。

vi /usr/lib/systemd/system/guestfs-firstboot.service
[Unit]
Description=libguestfs firstboot service
After=network.target
Before=prefdm.service

[Service]
Type=oneshot
ExecStart=/usr/lib/virt-sysprep/firstboot.sh start
RemainAfterExit=yes
StandardOutput=journal+console
StandardError=inherit

[Install]
WantedBy=default.target

运行下面命令刷新配置和设置服务开机启动。

systemctl daemon-reload
systemctl enable guestfs-firstboot.service

创建上面服务关联的脚本文件,其工作方式查看其中注释。

mkdir -p /usr/lib/virt-sysprep/scripts
vi /usr/lib/virt-sysprep/firstboot.sh
#!/bin/sh -

### BEGIN INIT INFO
# Provides:          virt-sysprep
# Required-Start:    $null
# Should-Start:      $all
# Required-Stop:     $null
# Should-Stop:       $all
# Default-Start:     2 3 5
# Default-Stop:      0 1 6
# Short-Description: Start scripts to run once at next boot
# Description:       Start scripts to run once at next boot
#       These scripts run the first time the guest boots,
#       and then are deleted. Output or errors from the scripts
#       are written to ~root/virt-sysprep-firstboot.log.
### END INIT INFO

d=/usr/lib/virt-sysprep/scripts
d_done=/usr/lib/virt-sysprep/scripts-done
logfile=~root/virt-sysprep-firstboot.log

echo "$0" "$@" 2>&1 | tee -a $logfile
echo "Scripts dir: $d" 2>&1 | tee -a $logfile

if test "$1" = "start"
then
  mkdir -p $d_done
  for f in $d/* ; do
    if test -x "$f"
    then
      # move the script to the 'scripts-done' directory, so it is not
      # executed again at the next boot
      mv $f $d_done
      echo '=== Running' $f '===' 2>&1 | tee -a $logfile
      $d_done/$(basename $f) 2>&1 | tee -a $logfile
    fi
  done
  rm -f $d_done/*
fi

创建执行操作的脚本文件。如果不要自动运行更新,去掉其中的yum -y update;。该脚本只在虚拟机首次启动时运行,之后会自动取消服务开机启动。

vi /usr/lib/virt-sysprep/scripts/0001-swapoff--dev-vda2-mkswap--dev-vda2-swapon--dev-vda2-resize2f
swapoff /dev/vda2;mkswap /dev/vda2;swapon /dev/vda2;resize2fs /dev/vda1;yum -y update;systemctl disable guestfs-firstboot;reboot

设置上述两个脚本可执行权限。

chmod +x /usr/lib/virt-sysprep/firstboot.sh
chmod +x /usr/lib/virt-sysprep/scripts/0001-swapoff--dev-vda2-mkswap--dev-vda2-swapon--dev-vda2-resize2f

必设项五:完成所需系统定制操作后,清除操作日志及缓存

CentOS 6 和较早 Debian 版本可能还需运行下面命令使网络可正常工作。

rm /mnt/etc/udev/rules.d/70-persistent-net.rules
touch /mnt/etc/udev/rules.d/70-persistent-net.rules
chattr +i /mnt/etc/udev/rules.d/70-persistent-net.rules

完成系统修改后,虚拟机控制面板点 Shutdown 关闭虚拟机,准备制作系统模板。

Virtual Server Shutdown

生成 KVM 系统模板

SSH 登录虚拟机所在的节点服务器,使用下面命令制作 KVM 系统模板。

查看虚拟机分区情况。其中的 kvm102 是虚拟机 ID,可在 SolusVM 控制面板看到。

/scripts/kvmtemplate --mode=prescan --vmid=kvm102 --generation=2

删除虚拟机内的 SSH 密钥、MAC 地址、udev 规则(有些日志、配置文件需人工检查清理)。

/scripts/kvmtemplate --mode=prepare --vmid=kvm102 --generation=2

生成系统模板文件,过程需时几分钟。CentOS 7 Minimal 系统模板正常体积大小五六百M。

/scripts/kvmtemplate --mode=package --vmid=kvm102 --generation=2

修改系统模板文件名,遵循下面格式(避免随意命名,SolusVM 社区看到多个帖子因命名问题导致出现莫名问题)。

cd /home/solusvm/kvm/template
mv template-c79ea4b7adda861ebb0d193715970d2a9ca28806.gz linux-centos-7-x86_64-min-gen2-v1.gz

补充:如果生成系统模板后想要修改其中文件,可用挂载方式修改。由于挂载非 Raw 格式镜像文件需要 libguestfs 和 libguestfs-tools 软件包,先用rpm -q <软件包>命令查询是否已安装。没有则安装。

yum -y install libguestfs libguestfs-tools

mkdir /mnt_tmp创建挂载目录,运行下面命令挂载系统模板文件。

guestmount -a /home/solusvm/kvm/template/linux-centos-7-x86_64-min-gen2-v1.gz -i --rw /mnt_tmp

修改后用fusermount -u /mnt_tmp命令取消挂载,这样就不用重新制作模板而进行修改了。

同步系统模板并测试

用 scp 命令将制作好的系统模板同步到 SolusVM 主控服务器。

scp /home/solusvm/kvm/template/linux-centos-7-x86_64-min-gen2-v1.gz 123.123.123.123:/home/solusvm/kvm/template

添加 KVM 系统模板(添加方法之前文章有介绍,添加项 Generation 选 2,Disk Driver 选 virtio,Partition # to Resize 填 1,Swap Partition 填 2,这两个选项对应硬盘分区编号)。之后开个不同配置虚拟机,用df -hTlsblk命令测试硬盘分区大小调整是否正常,内存用free -h命令查看。

KVM Template Test

如上图所示测试正常。到此,SolusVM KVM 系统模板就制作完成了,后续有时间再介绍其它 Linux 发行版的系统模板制作。码字整理好累,如果对你有帮助,将小站加至浏览器书签吧~

评论列表

  1. #1

    请问尝试过添加第二块网卡吗?

  2. #2

    Hi, very nice website, cheers!
    ——————————————————
    Need cheap and reliable hosting? Our shared plans start at $10 for an year and VPS plans for $6/Mo.
    ——————————————————
    Check here: https://www.reliable-webhosting.com/

  3. #3

    does medicare cover generic bimatoprost https://carepro1st.com/

  4. #4

    chloroquine hydroxychloroquine covid 19 https://hydroxychloroquine.webbfenix.com/

  5. #5

    ivermectin for humans amazon https://ivermectin.mlsmalta.com/

  6. #6

    taking too much dapoxetine effects https://dapoxetine.bee-rich.com/

  7. #7

    can priligy cause back pain https://ddapoxetine.com/

  8. #8

    coupon for cialis prescription https://wisig.org/

  9. #9

    walmart vidalista tadalafil 20mg https://vidalista40mg.mlsmalta.com/

  10. #10

    canadian hydroxychloroquine https://hhydroxychloroquine.com/

  11. #11

    prescription drug prices https://edmeds.buszcentrum.com/

  12. #12

    how long does albuterol work https://amstyles.com/

  13. #13

    where can i purchase hydroxychloroquine https://hydroxychloroquinee.com/

  14. #14

    best treatment for malaria https://hydroxychloroquine.mymvrc.org/

  15. #15

    canadian prescription drugs by mail https://medpills.bee-rich.com/

  16. #16

    sildenafil drug interactions https://viaplz.com/

  17. #17

    cefixime side effects in men https://ceefexime.co/

  18. #18

    is sildenafil safe for men http://cavalrymenforromney.com/

  19. #19

    cialis order online no prescription http://cialllis.com/

  20. #20

    generic tadalafil uk pharmacy https://cialis.grassfed.us/

  21. #21

    generic tadalafil uk pharmacy https://cialis.mlsmalta.com/

  22. #22

    Does your website have a contact page? I’m having problems locating it but, I’d
    like to send you an e-mail. I’ve got some suggestions for your blog
    you might be interested in hearing. Either way,
    great blog and I look forward to seeing it develop over time. http://antiibioticsland.com/Ampicillin.htm

  23. #23

    where to cialis buy without a prescription http://cialis.anafassia.com/

  24. #24

    I like what you guys are up also. Such clever work and reporting! Keep up the excellent works guys I have incorporated you guys to my blogroll. I think it will improve the value of my website 🙂

    http://www.vreyrolinomit.com/

  25. #25

    Hi there to every body, it’s my first go to see of this webpage; this web site carries amazing and in fact
    excellent stuff designed for readers. http://herreramedical.org/chloroquine

  26. #26

    Great delivery. Sound arguments. Keep up
    the great work. http://antiibioticsland.com/Erythromycin.htm

  27. #27

    buy hydroxychloroquine online https://hydroxychloroquinex.com/

  28. #28

    Very clear web site, regards for this post.

    http://www.zortilonrel.com/

  29. #29

    What i do not realize is actually how you are now not really much more neatly-favored than you may be now. You are so intelligent. You know therefore significantly with regards to this matter, made me in my opinion consider it from a lot of various angles. Its like men and women don’t seem to be interested except it is one thing to accomplish with Girl gaga! Your individual stuffs great. Always deal with it up!

    http://www.easoar-soon.com

  30. #30

    Some genuinely superb information, Gladiola I discovered this. “If you don’t make mistakes, you aren’t really trying.” by Coleman Hawking.

    http://www.vreyrolinomit.com/

  31. #31

    Have you ever heard of second life (sl for short). It is basically a video game where you can do anything you want. SL is literally my second life (pun intended lol). If you want to see more you can see these Second Life authors and blogs

    listserv.aoir.org/htdig.cgi/air-l-aoir.org/2009-November/058514.html

  32. #32

    Have you ever heard of second life (sl for short). It is basically a video game where you can do anything you want. sl is literally my second life (pun intended lol). If you would like to see more you can see these Second Life articles and blogs

    listserv.aoir.org/htdig.cgi/air-l-aoir.org/2009-November/020100.html

  33. #33

    cialis over the counter canada http://cialis.audiovideoninja.com/

  34. #34

    I like this blog very much, Its a rattling nice berth to read and incur information.

    https://www.youtube.com/watch?v=1fjWgYz9egs

  35. #35

    I’ll right away grab your rss as I can not find your email subscription link or e-newsletter service. Do you’ve any? Please let me know so that I could subscribe. Thanks.

    https://www.youtube.com/watch?v=vIeo40k99nY

  36. #36

    Greetings! I’ve been following your website for a while now and finally got the bravery to go ahead and give you a shout out from Huffman Texas! Just wanted to mention keep up the great job!

    https://www.youtube.com/watch?v=KrEgYrXD9SI

  37. #37

    Hey this is kinda of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding expertise so I wanted to get advice from someone with experience. Any help would be enormously appreciated!

    https://www.youtube.com/watch?v=_bPSWABggX8

  38. #38

    Can I simply say what a aid to search out someone who really is aware of what theyre speaking about on the internet. You positively know the right way to carry an issue to light and make it important. More folks must learn this and perceive this side of the story. I cant imagine youre no more in style since you undoubtedly have the gift.

    https://www.youtube.com/watch?v=pWwPxHlnbU8

发表评论

电邮地址用于 Gravatar 头像显示,不会被公开可见。