准备工作,vmdk转换为qcow2
1.如果导出为单个ova文件,则解压ova文件,tar tvf xxx.ova;
如果为ovf+vmdk文件,则无需解压
2.qemu-img convert -O qcow2 CentOS64bit-v7.0-disk1.vmdk CentOS64.qcow2 转换镜像文件
一、安装KVM
安装CentOS7.5版本系统,OS镜像CentOS-7-x86_64-Everything-1804.iso,选择GNOME图形化桌面模式安装,配置可上Internet网,如不能上网,则需挂载本地ISO yum源,后续安装组件需要
9.关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
二、安装虚拟机 ,制作镜像
4.网络选择 Brider br0,虚拟机通过网桥进行通信;
5.安装过程中,会报下面错误,由于缺少virto驱动,导致磁盘认不到,需要安装virtio相关驱动。【如virtio模式下,可以启动成功,则该qcow2文件可以不装驱动,跳到第10步实施后续配置】
6.先通过IDE磁盘驱动方式启动
点击 虚拟机详情->IDE DISK1->DISK BUS选择"IDE",重新启动虚拟机,可以正常启动
7.启动后,挂载磁盘,点击 虚拟机详情->IDE CDROM1 ->选择ISO镜像
8.启动系统后,禁止selinux【CentOS需要禁用】
关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
9.virtio驱动安装
网上由很多教程可以学习【可以用阿里云或者华为教程,第9小结引自阿里社区】【根据操作系统类型实施方式不同,如下实施方式适用于Ubuntu部分系统;验证下来Ubuntu14.04.5自带virtio驱动,无需安装驱动,可直接转换做为Openstack镜像使用】
需要安装virtio驱动的镜像
需要在导入镜像之前,为源服务器安装virtio驱动。
检查服务器内核是否支持virtio驱动
1. 运行 grep -i virtio /boot/config-$(uname -r) 检查当前操作系统的内核是否支持virtio驱动。
说明
○ 如果在输出信息中没有找到 VIRTIO_BLK 及 VIRTIO_NET 的信息,表示该操作系统没有安装virtio相关驱动,需要为您的服务器编译安装virtio驱动。
○ 如果参数 CONFIG_VIRTIO_BLK 及 CONFIG_VIRTIO_NET 取值为 y,表示包含了virtio驱动,可以直接跳到第10步
○ 如果参数 CONFIG_VIRTIO_BLK 及 CONFIG_VIRTIO_NET 取值为 m,需要进入第2步。
执行命令 lsinitrd /boot/initramfs-$(uname -r).img | grep virtio 确认virtio驱动是否包含在临时文件系统initramfs或者initrd中。
说明
○ 截图表明,initramfs已经包含了virtio_blk驱动,以及其所依赖的virtio.ko、virtio_pci.ko和virtio_ring.ko,可以直接导入到glance镜像中
○ 如果临时文件系统initramfs没有包含virtio驱动,则需要修复临时文件系统。
修复临时文件系统
通过检查,发现源服务器内核支持virtio驱动,但是临时文件系统initramfs或者initrd中没有包含virtio驱动时,需要修复临时文件系统。以CentOS等为例。
• CentOS/RedHat 5
mkinitrd -f --allow-missing \
--with=xen-vbd --preload=xen-vbd \\
--with=xen-platform-pci --preload=xen-platform-pci \\
--with=virtio_blk --preload=virtio_blk \\
--with=virtio_pci --preload=virtio_pci \\
--with=virtio_console --preload=virtio_console \\
• CentOS/RedHat 6/7
mkinitrd -f --allow-missing \
--with=xen-blkfront --preload=xen-blkfront \\
--with=virtio_blk --preload=virtio_blk \\
--with=virtio_pci --preload=virtio_pci \\
--with=virtio_console --preload=virtio_console \\
/boot/initramfs-$(uname -r).img $(uname -r)
• Debian/Ubuntu
echo -e 'xen-blkfront\nvirtio_blk\nvirtio_pci\nvirtio_console' >> \
/etc/initramfs-tools/modules
mkinitramfs -o /boot/initrd.img-$(uname -r)"
编译安装virtio驱动
此处以Centos服务器为例,为您示范如何编译安装virtio驱动。
下载内核安装包
• 运行 yum install -y ncurses-devel gcc make wget 安装编译内核的必要组件。
• 运行 uname -r 查询当前系统使用的内核版本,如示例中的4.4.24-2.a17.x86_64。
• 前往 Linux内核列表页面 下载对应的内核版本源码,如示例中的4.4.24开头的linux-4.4.24.tar.gz的网址为 https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz。
• 运行 cd /usr/src/ 切换目录。
• 运行 wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz 下载安装包。
• 运行 tar -xzf linux-4.4.24.tar.gz 解压安装包。
• 运行 ln -s linux-4.4.24 linux 建立链接。
• 运行 cd /usr/src/linux 切换目录。
编译内核
• 依次运行以下命令编译内核。
make mrproper
symvers_path=$(find /usr/src/ -name "Module.symvers")
test -f $symvers_path && cp $symvers_path .
cp /boot/config-$(uname -r) ./.config
make menuconfig
• 出现以下界面时,开始打开virtio相关配置:
说明 选 * 配置表示编译到内核,选 m 配置表示编译为模块。
a. 使用空格勾选Virtualization项。
确认是否勾选了KVM(Kernel-based Virtual Machine)选项。
Processor type and features --->
[*] Paravirtualized guest support --->
--- Paravirtualized guest support
(128) Maximum allowed size of a domain in gigabytes
[*] KVM paravirtualized clock
[*] KVM Guest support
Device Drivers --->
[*] Block devices --->
<M> Virtio block driver (EXPERIMENTAL)
-*- Network device support --->
<M> Virtio network driver (EXPERIMENTAL)
b. 按下Esc键退出内核配置界面并根据弹窗提示保存.config文件。
c. 检查 virtio相关配置是否已经正确配置。
d. 若检查后发现暂未设置virtio相关配置,运行以下命令手动编辑.config文件。
make oldconfig
make prepare
make scripts
make
make install
e. 运行以下命令查看virtio驱动的安装情况。
find /lib/modules/"$(uname -r)"/ -name "virtio." | grep -E "virtio."
grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
说明 如果任一命令输出virtio_blk、virtio_pci.virtio_console等文件列表,表明您已经正确安装了virtio驱动。
10.系统启动后,一系列配置(Centos为例)
关闭防火墙
编辑 Linux 操作系统的网卡配置文件
a. 整行清除 HWADDR 配置项。
b. 整行清除 UUID 配置项。
c. 将 NM_CONTROLLED 配置项的取值由 yes 改为 no。
d. 将 BOOTPROTO 配置项的取值配置为 dhcp
启用 Linux 操作系统的 SSH 服务。
a. 使用以下命令启用 Linux 操作系统的 SSH 服务。
[root@localhost ~]# chkconfig sshd on
b. 重启虚拟机。
c. 使用以下命令检查 SSH 服务的状态,如图 2-29 所示。
[root@localhost ~]# service sshd status
清除 Linux 操作系统的 Network Persistence Rules。
a. 使用以下命令清除 70-persistent-net.rules 中的内容。
[root@localhost ~]# echo > /etc/udev/rules.d/70-persistent-net.rules
b. 使用以下命令清除 75-persistent-net-generator.rules 中的内容。
[root@localhost ~]# echo > /lib/udev/rules.d/75-persistent-net-generator.rules
正常关闭 Linux 系统。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞4
添加新评论0 条评论