KVM快速安装和源码编译
一、快速安装KVM环境
1.虚拟化前提条件
1.公司业务使用为 ESXI,需要开启对应硬件虚拟化技术
2.其他使用
KVM 需要硬件支持, 所以需要开启虚拟化支持
1.硬件设备直接在 BIOS 设置开启 CPU 虚拟化
2.个人电脑同样进入 BIOS 开启虚拟化支持
3.VM 需要找到对应虚拟机开启对应的 VT-EPT 虚拟化技术//没有任何内容则表示服务器没有启用虚拟化 [root@kvm-node1 ~]# egrep '(vmx|svm)' /proc/cpuinfo
2.YUM安装软件服务
Linux 内核只要 KVM 最核心的程序,所以 KVM 的管理工具需要额外去安装
# qeum 虚拟化软件,可以虚拟不同的CPU,以及模拟网卡、声卡、PCI设备等 # libvirt 用于管理KVM的工具 # virt-install 命令行安装虚拟机工具 # virt-manager 图形化管理虚拟机工具 # openssh-askpass 远程连接KVM主机 [root@kvm-node1 ~]# yum install qemu-kvm qemu-kvm-tools \ libvirt virt-manager virt-install \ openssh-askpass –y //KVM是linux内核的一个模块,模块不需要安装只需要加载,通过用户态程序来管理即可 [root@kvm-node1 ~]# lsmod|grep kvm kvm_intel 148081 0 kvm 461126 1 kvm_intelLinux 内核:
[root@Web_node01 ~]#ls /boot/vmlinuz-3.10.0- vmlinuz-3.10.0-693.2.2.el7.x86_64 vmlinuz-3.10.0-693.el7.x86_64 vmlinuz-3.10.0-862.14.4.el7.x86_64
3.启动KVM管理工具libvirt
[root@kvm-node1 ~]# systemctl enable libvirtd.service [root@kvm-node1 ~]# systemctl start libvirtd.service #注意: 启动后会新增一块virbr0网络KVM 会给虚拟机分配 NAT 模式网络,但是在生产情况,强烈推荐使用网桥模式
//通过virsh iface-bridge命令自动创建永久网桥 [root@kvm-node1 ~]# virsh iface-bridge eth0 br0 && \ nmcli connection reload && \ systemctl restart NetworkManager [root@kvm-node1 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.52540043720d yes eth0
4.安装KVM客户机
1.第一个示例raw
//挂载系统光盘, 建立ISO镜像文件 [root@kvm-node1 ~]# dd if=/dev/cdrom of=/data/centos7u4_x86_64.iso //创建虚拟机磁盘 [root@kvm-node1 ~]# qemu-img create -f raw /opt/centos2.raw 10G //创建虚拟机实例 [root@Web_node01 ~]#virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole # vnc:10.0.0.11:5900 --virt-type kvm 虚拟化的类型(默认:qemu) --os-type=linux 系统类型 --os-variant rhel7 系统版本 --name centos7 虚拟机的名字 --memory 1024 虚拟机的内存 --vcpus 1 虚拟cpu的核数 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default 使用默认NAT的网络,常用bridge --graphics vnc,listen=0.0.0.0 指定虚拟机可连接方式, 比如VNC --noautoconsole 不连接虚拟机图形界面控制台 # raw:10G 不支持做快照,性能好 # qcow2: 支持快照2.第二个示例qcow2
//挂载系统光盘, 建立ISO镜像文件 [root@kvm-node1 ~]# dd if=/dev/cdrom of=/data/centos7u4_x86_64.iso //创建虚拟机磁盘 [root@kvm-node1 ~]# qemu-img create -f qcow2 /data/centos7u4-node1.qcow2 10G //创建虚拟机实例 virt-install --name centos7u4-node1 \ --virt-type kvm \ --ram 1024 \ --cdrom=/data/centos7u4_x86_64.iso \ --disk path=/data/centos7u4-node1.c \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole //参数概述 --virt-type:指定虚拟机类型(kvm、qemu、xen) --name:指定虚拟机名称 --raw:指定虚拟机使用内存大小 --cpu:指定cpu的核数(默认为1) --cdrom:指定虚拟机安装的ISO镜像 --disk:指定虚拟机数据存储磁盘qcow2 --network:指定虚拟机网络类型, 默认nat,常用bridge --graphics:指定虚拟机可连接方式, 比如VNC --noautoconsole:不连接虚拟机图形界面控制台 //自动化创建虚拟机,并配置pxe启动方式 virt-install --name centos_VM_70.163 \ --virt-type kvm \ --ram 1024 \ --pxe --disk size=10 \ --network bridge=br1 \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole云主机没有 SWAP 分区的原因为性能太低,本身磁盘就是虚拟化出来的,所以直接不建立 SWAP 分区。
1.安装系统的时候直接建立在根分区上。
2.不启用内核奔溃备份,内存占用较多KVM 虚拟机的配置文件 xlm 所在目录
[root@kvm01 ~]# ls /etc/libvirt/qemu/ centos7.xml networks/写死 vnc 端口号
[root@kvm01 ~]# virsh edit centos7.4 自动获取:<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'> 写死:<graphics type='vnc' port='5902' autoport='no' listen='0.0.0.0'> 命令指定VNC端口: [root@kvm01 ~]# virt-install --help | grep gra --version show program's version number and exit --graphics GRAPHICS Configure guest display settings. Ex: --graphics vnc --graphics spice,port=5901,tlsport=5902 --graphics none --graphics vnc,password=foobar,port=5910,keymap=ja
二、源码编译KVM环境
1.准备环境
1.安装宿主机
准备基础环境,勾选Development Tools 其他参考Centos系统优化 https://www.opsxdev.com/articles/2021/02/18/16135799631502.下载源码
3种下载源 1.kvm.git 2.linux.git 3.kernel.org [root@kvm-main]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.1.tar.xz [root@kvm-main]# git clone git://git.qemu.org/qemu.git3.配置源码
[root@kvm-main kvmhost]# yum install ncurses-devel openssl-devel elfutils-libelf-devel ninja-build -y [root@kvm-main linux-4.8.1]# make menuconfig 运行make menuconfig 图形化选择KVM相关的配置 [root@kvm-main linux-4.8.1]# cp -rp /boot/config-3.10.0-862.el7.x86_64 . [root@kvm-main linux-4.8.1]# mv config-3.10.0-862.el7.x86_64 .config 更新补充.config文件 [root@kvm-main linux-4.8.1]# make olddefconfig
2.编译KVM
Linux内核编译的3个步骤,编译kernel,编译bzImage,编译module
1.编译kernel
[root@kvm-main linux-4.8.1]# make vmlinux -j 20 。。。 。。。 LINK vmlinux LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o LD init/built-in.o KSYM .tmp_kallsyms1.o KSYM .tmp_kallsyms2.o LD vmlinux SORTEX vmlinux SYSMAP System.map [root@kvm-main linux-4.8.1]#2.编译bzImage
[root@kvm-main linux-4.8.1]# make bzImage LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin OBJCOPY arch/x86/boot/vmlinux.bin HOSTCC arch/x86/boot/tools/build BUILD arch/x86/boot/bzImage Setup is 16956 bytes (padded to 17408 bytes). System is 6273 kB CRC a81a7b58 Kernel: arch/x86/boot/bzImage is ready (#1) [root@kvm-main linux-4.8.1]3.编译内核模块
[root@kvm-main linux-4.8.1]# make modules -j 20 IHEX firmware/edgeport/down3.bin IHEX2FW firmware/emi26/bitstream.fw IHEX2FW firmware/emi26/loader.fw IHEX2FW firmware/emi26/firmware.fw IHEX2FW firmware/emi62/loader.fw IHEX2FW firmware/emi62/bitstream.fw IHEX2FW firmware/emi62/spdif.fw IHEX2FW firmware/emi62/midi.fw H16TOFW firmware/edgeport/boot.fw H16TOFW firmware/edgeport/boot2.fw H16TOFW firmware/edgeport/down.fw H16TOFW firmware/edgeport/down2.fw IHEX2FW firmware/whiteheat_loader.fw IHEX2FW firmware/whiteheat.fw IHEX2FW firmware/keyspan_pda/keyspan_pda.fw IHEX2FW firmware/keyspan_pda/xircom_pgs.fw [root@kvm-main linux-4.8.1]#KVM安装的2个步骤,安装module,安装kernel与initramfs
1.安装module
[root@kvm-main linux-4.8.1]# make install && make modules_install [root@kvm-main linux-4.8.1]# make modules_innstall INSTALL sound/usb/misc/snd-ua101.ko INSTALL sound/usb/snd-usb-audio.ko INSTALL sound/usb/snd-usbmidi-lib.ko INSTALL sound/usb/usx2y/snd-usb-us122l.ko INSTALL sound/usb/usx2y/snd-usb-usx2y.ko INSTALL virt/lib/irqbypass.ko DEPMOD 4.8.1 [root@kvm-main linux-4.8.1]# # 检查 [root@kvm-main linux-4.8.1]# ll /lib/modules/3.10.0-862.el7.x86_64/kernel/ [root@kvm-main linux-4.8.1]# ll /lib/modules/3.10.0-862.el7.x86_64/kernel/arch/x86/kvm/2.安装kernel和initramfs
[root@kvm-main linux-4.8.1]# make install sh ./arch/x86/boot/install.sh 4.8.1 arch/x86/boot/bzImage \ System.map "/boot" [root@kvm-main linux-4.8.1]# ll /boot/ -t # 查看grub启动内核选择项 [root@kvm-main linux-4.8.1]# cat /boot/grub2/grub.cfg menuentry 'CentOS Linux (4.8.1) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-09a5160c-9d7f-4367-805e-5fef585719a9'3.重启系统选择刚刚编译的内核kernel
4.手工加载模块
[root@kvm-main kvmhost]# lsmod | grep kvm [root@kvm-main kvmhost]# modprobe kvm [root@kvm-main kvmhost]# modprobe kvm_amd [root@kvm-main kvmhost]# lsmod | grep kvm kvm_amd 73728 0 kvm 585728 1 kvm_amd irqbypass 16384 1 kvm [root@kvm-main kvmhost]# ls -l /dev/kvm crw-rw-rw-+ 1 root kvm 10, 232 Oct 6 19:30 /dev/kvm
3.编译安装QEMU
1.下载QEMU源代码
[root@kvm-main kvmhost]# git clone git://git.qemu.org/qemu.git2.配置和编译QEMU
在进行configure之前需要注意: 1. 安装python3.6及以上版本 2. 安装GCC v7.5 or Clang v6.0及以上 [root@kvm-main qemu]# ./configure --target-list=x86_64-softmmu --python=/usr/bin/python3 --cc=/usr/local/gcc-8.2.0/bin/gcc --cxx=/usr/local/gcc-8.2.0/bin/g++ remote: Enumerating objects: 29348, done. remote: Total 29348 (delta 0), reused 0 (delta 0), pack-reused 29348 Receiving objects: 100% (29348/29348), 41.12 MiB | 2.33 MiB/s, done. Resolving deltas: 100% (21151/21151), done.最后编译生成x86_64-softmmu/qemu-system-x86_64文件就是KVM客户机的工具
3.安装QEMU
[root@kvm-main qemu]# make install [root@kvm-main qemu]# ls /usr/local/share/qemu [root@kvm-main qemu]# ls /usr/local/share/qemu/keymaps/
4.安装客户机
1.创建镜像文件
# 精简 [root@kvm-main kvmhost]# qemu-img create -f raw rhel7.img 20G Formatting 'rhel7.img', fmt=raw size=21474836480 # 置备 [root@kvm-main kvmhost]# qemu-img create -f raw -o preallocation=full rhel8.img 1G Formatting 'rhel8.img', fmt=raw size=1073741824 preallocation='full' [root@kvm-main kvmhost]# du -sh ./* 0 ./rhel7.img 1.0G ./rhel8.img2.安装客户机
3.启动客户机
[root@kvm-main ~]# qemu-system-x86_64 -m 8G -smp 4 /root/rhel7.img
