Openstack的CentOS镜像制作方法

发布于 / 技术 / 0 条评论

本文以CentOS 7.6 Minimal 镜像的制作为例,简单叙述了OpenStack平台下RAW格式的镜像制作及导入方法。

制作前准备

系统准备

在制作镜像之前,首先需要制作一个制作镜像的平台,在本文中,该平台以CentOS为例。该平台的安装环境可以是物理机或者虚拟机。

*注意:安装平台的硬盘容量应不小于需要制作的镜像硬盘容量x2+平台系统所需容量。

该平台的系统安装要点为,在系统安装到INSATLLATION SUMMARY时如下图选择:

之后,在新弹出的界面中做如下选择:

如果计划在已安装好系统且未选择上述扩展包的实体机上进行后续操作,也可以执行下列命令从而安装相关支持库:

[root@localhost ~]# yum grounpinstall -y “Virtualization Client”
[root@localhost ~]# yum grounpinstall -y “Virtualization HyperVoisor”
[root@localhost ~]# yum grounpinstall -y “Virtualization Platform”
[root@localhost ~]# yum grounpinstall -y “Virtualization Tools”

额外的,当安装环境为虚拟机时,请选中虚拟机中虚拟化Intel VT-x/EPT或AMD-V/RVI虚拟化CPU性能计数器选项,否则KVM无法在系统中受到支持。

环境准备

在虚拟机制作平台中安装下列软件包

[root@localhost ~]# yum install -y libcanberra-gtk2 qemu-kvm qemu-kvm-tools libvirt libvirt-cim libvirt-client libvirt-java.noarch libvirt-python libiscsi dbus-devel virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst

上述软件包作用如下:

  • qemu-kvm 主要的KVM 程序包
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库
  • virt-manager GUI虚拟机管理工具
  • virt-top 虚拟机统计命令
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机
  • libvirt C 语言工具包,提供libvirt 服务
  • libvirt-client 为虚拟客户机提供的C 语言工具包
  • virt-install 基于libvirt 服务的虚拟机创建命令

制作Windows镜像时需要二外下载VirtIO驱动,否则系统无法安装。

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.173-2/

安装前

安装前,需要将CentOS的系统安装盘先复制到虚拟机的用户目录下,以便后续采用:

[root@localhost ~]# mkdir /var/lib/libvirt/images/centos
[root@localhost ~]# cd /var/lib/libvirt/images/centos
[root@localhost ~]# cp -r /root/Download/CentOS-7-x86_64-DVD-1810.iso /var/lib/libvirt/images/centos/centos76.iso

以及,手动创建一个所需大小的虚拟机文件,本处以20G硬盘为例。

[root@localhost ~]# qemu-img create -f qcow2 centos76.qcow2 20G
[root@localhost ~]# qemu-img resize centos76.qcow2 +10G //扩容时使用

CentOS系统镜像制作

虚拟机配置

使用下列命令可以打开镜像虚拟机配置界面:

[root@localhost ~]# virt-manager

在新打开的软件中点击 按钮创建一台新的虚拟机。

在弹出的界面中选择 本地安装介质(ISO映像或者光驱),点击前进:

选择使用ISO映像,点击浏览:

在该界面中左侧选择目录,之后在右侧选择刚才上传的系统镜像,点击选择卷导入iso文件。

填写所需的内存和CPU核心数,正常情况下镜像机可以选择2核2G或2核4G。

选择系统的存储文件,如果没有手动创建文件可以在这一步填充虚拟机镜像大小。因为已经提前创建了镜像文件,在这一步选择选择或创建自定义存储,之后在新弹出的界面中参考前文所述选择我们手动创建的qcow2文件,并点击前进。

最后一步,在新弹出的界面中填写镜像的名称,如果需要更改配置可以选择在安装前自定义配置,这一步中如果没有选中这个选项的话,点击前进就会进入到虚拟机的开机画面。

至此,虚拟机已经配置完毕,首次启动时会自动引导在上文中设置的系统安装镜像,但是除此以外的启动并不会附加该镜像文件。如果需要重新安装系统或者修改虚拟机配置时,可以在打开的虚机页面中选择左上角的灯泡标志来进行修改。

系统安装

进入镜像虚拟机的引导界面,选择 Install CentOS 7

Screenshot_centos7.0-2_2021-11-06_07_16_00

语言选择英语(默认)

Screenshot_centos7.0-2_2021-11-06_07_19_11

在新界面中先点击 Date & Time 将时区设置为etc的格林尼治时间,之后点击 Installation Destination 对硬盘进行分区处理:

Screenshot_centos7.0-2_2021-11-06_07_19_33

在新界面中可以选择 Automatically configure partitioning进行自动分区,也可以选择 I will configure partitioning.进行手动分区:

Screenshot_centos7.0-2_2021-11-06_07_19_43

手动分区的界面如下图示,在手动分区时硬盘的分区方法选择LVM,分区配置完毕后点击Done:

Screenshot_centos7.0-2_2021-11-06_07_19_53

分区完毕后会弹出这个窗口,点击右下角的 Accept Changes

Screenshot_centos7.0-2_2021-11-06_07_20_16

点击 Root Password 设置管理员密码(不影响后续导入镜像制作云主机的密码

Screenshot_centos7.0-2_2021-11-06_07_20_25

填写两次相同密码

Screenshot_centos7.0-2_2021-11-06_07_20_30

设置完毕后点击Reboot重启

Screenshot_centos7.0-2_2021-11-06_07_26_40

至此,镜像虚拟机系统安装完毕。

Screenshot_centos7.0-2_2021-11-06_07_27_04

镜像导出

首先,在安装完系统的虚拟机中执行下列命令:

[root@localhost ~]# poweroff //关闭虚拟机

在镜像虚拟机的宿主机上执行下列命令

[root@localhost ~]# qemu-img convert -f qcow2 /var/lib/libvirt/images/centos/centos76.qcow2 /outputdir/centos76.raw

待命令行执行完毕后,即可在指定的输出目录下获取到centos76.raw镜像文件。该文件可以直接导入Openstack作为云主机的镜像使用。

*特别注意:该镜像不建议使用linux的gzip或tar进行压缩。建议直接转移源文件或者在Window下使用ZIP格式进行压缩。使用gzip或者tar方式压缩有很大概率导致该镜像无法使用。

镜像导入到平台

首先上传到平台的controller节点任意目录下(以tmp目录为例),上传建议使用ftp工具进行上传。完毕后执行下列命令:

[root@controller01 ~]# glance image-create –name CentOS-7.6 –disk-format raw –container-format bare –visibility public –progress < /tmp/centos76.raw –property ‘os_distro’=’CentOS’ –property ‘os_version’=’7.6’ –property image_source=’image’ –property image_type=’GENERAL’

输出内容如下所示:

若该镜像开机后无法使用ssh链接且ping不通。可以使用VNC链接到该虚拟机使用下列命令

[root@host ~]# vi /etc/sysconfig/network-script/ifcfg-eno0 //eno0为网卡名称

在打开的文件中找到ONBOOT选项,将no修改为yes后退出,执行下列命令:

[root@host ~]# systemctl restart network.service //重启网卡
[root@host ~]# reboot //重启服务器

重启后即可恢复网络。

本网站在未特殊说明的情况下采用知识共享署名-非商业性使用-相同方式共享 3.0 协议进行许可。

<-数据丢失->