1. 在linux系统上安装KVM
1. 确认系统是否支持虚拟化技术(如果不支持下面操作就不用做了)
egrep "vmx|svm" /proc/cpuinfo
或 lscpu | egrep "vmx|svm"
2. 安装虚拟化服务KVM / QEMU / LIBVIRTD介绍
a. KVM是linux内核的模块,它需要CPU的支持,采用硬件辅劣虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT 和AMD 的RVI 技术
b. QEMU是一个虚拟化的仿真工具,通过ioctl与内核kvm交互完成对硬件的虚拟化支持
c. Libvirt是一个对虚拟化管理的接口和工具,提供用户端程序virsh,virt-install, virt-manager, virt-view 与用户交互
3. 必备软件
qemu-kvm ---> 为kvm提供底层仿真支持
libvirt-daemon ---> libvirtd守护进程,管理虚拟机
libvirt-client ---> 用户端软件,提供客户端管理命令
libvirt-daemon-driver-qemu ---> libvirtd连接qemu的驱劢
4. 可选功能
virt-install ---> 系统安装工具
virt-manager ---> 图形管理工具
virt-v2v ---> 虚拟机迁移工具
virt-p2v ---> 物理机迁移工具
5. 安装
yum install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu virt-manager
6. 启动libvirtd服务
systemctl restart libvirtd
systemctl enable libvirtd
7. 虚拟机组成
内核虚拟化模块(KVM)
系统设备仿真(QEMU)
虚拟机管理程序(LIBVIRT)
一个XML 文件(虚拟机配置声明文件) ---> 位置/etc/libvirt/qemu/
一个磁盘镜像文件(虚拟机的硬盘)---> 位置/var/lib/libvirt/images/
2. 制作一个后端盘
1. 利用virt-manager安装一个系统然后对这个系统进行初始化(安装系统的部分就不介绍了)
a. 禁用selinux /etc/selinux/config
SELINUX=disabled
b. 卸载防火墙与NetworkManager
yum remove -y NetworkManager-* firewalld-* python-firewall
c. 配置yum 源
d. 安装常用软件
yum -y install vim bash-completion tree iftop net-tools ...
e. 删除网络配置里的个性化信息
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
TYPE="Ethernet"
BOOTPROTO="dhcp"
f. 禁用空路由
/etc/sysconfig/network
NOZEROCONF="yes"
g. 添加Console 配置/etc/default/grub
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8 xxxx"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
重新生成grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
h. 删除磁盘分区里的个性化信息
/etc/fstab文件中到UUID 手工修改成系统设备
blkid查看uuid对应的磁盘设备,修改fstab文件
2. 关闭虚拟机并保存好这个刚刚制作好的模板
cd /var/lib/libvirt/images
这个目录下面的一个*.qcow2结尾的文件就是模板文件了
qemu-img info *.qcow2 查看模板文件的信息
3. demo.xml
<domain type='kvm'>
<name>demo</name>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'>
</cpu>
<clock offset='localtime'>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/kvm_storage/demo.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='network'>
<source network='vbr'/>
<model type='virtio'/>
</interface>
<serial type='pty'></serial>
<console type='pty'>
<target type='serial'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'>
<listen type='address'/>
<image compression='off'/>
</graphics>
<memballoon model='virtio'>
</memballoon>
</devices>
</domain>
4. 通过模板和demo.xml文件快速生成虚拟机
1. xml 文件配置
把我们的xml 模板文件进行复制并修改名称及磁盘文件
cp demo.xml node.xml
sed -i 's/demo/node/g' node.xml
2. img文件创建
以我们刚刚装系统的模板为后端文件创建虚拟机
qemu-img create –b demo.qcow2 –f qcow2 node.img
3. 完成虚拟机注册和启动虚拟机
virsh define node.xml
virsh start node