KVM 是基于 Linux 内核实现的,KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。在 x86 平台上最热门运用最广泛的虚拟化方案莫过于 KVM 了。其中云计算框架 OpenStack 对 KVM 支持得也最好,我们的教程也理所当然选择 KVM 作为 实验环境的 Hypervisor。
安装KVM虚拟机 1.配置宿主机为网桥
cd /etc/sysconfig/network-scriptscp -a ifcfg-eno16777728 ifcfg-br0vim ifcfg-br0 TYPE=Bridge DEVICE=br0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.13 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=114.114.114.114 reboot
2.宿主机的软件安装和配置
yum install -y qemu-kvm libvirt virt-install bridge-utils
3.安装完毕之后,检查模块是否已经加载
4.执行下列命令开启虚拟机
systemctl start libvirtd.service systemctl enable libvirtd.service
KVM的创建及管理 创建并实现基本管理虚拟机 virt-install -n lyshark -r 256 --vcpus 1 --disk /tmp/lyshark.img,format=qcow2,size=5 --network bridge=br0 --os-type=linux --os-variant=rhel7.0 --cdrom /tmp/rhel-server-7.0_x86_64-dvd.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 ------------------------------------------------------------------------------------------------- [参数说明] --n --r --disk --os-type --os-variant= --vcpus= --cpu= --os-variant=freebsd8 --os-variant=win7 --os-variant=win7 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom --os-variant=win2k8 --os-variant=win2k8 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom --os-variant=rhel7 ------------------------------------------------------------------------------------------------- virsh list --all virsh dominfo yum install virt-top -y virt-top virt-df virsh destroy virsh undefine virsh start virsh shutdown virsh autostart virsh autostart --disable virsh console virsh attach-disk kvm-1 /dev/sdb vbd --driver qemu --mode shareable -------------------------------------------------------------------------------------------------
更改内存 [root@sh-kvm-1 ~] Max memory: 4194304 KiB Used memory: 4194304 KiB virsh setmem kvm-1 524288 Max memory: 14194304 KiB Used memory: 524288 kiB virsh shutdown kvm-1 virsh edit kvm-1 virsh create /etc/libvirt/demu/kvm-1/xml
更改CPU virsh shutdown kvm-1 virsh edit kvm-1 virsh create /etc/libvirt/demu/kvm-1/xml
磁盘扩容 1. Create a 10-GB non-sparse file: 2. Shutdown the VM: 3. Add an extra entry for ‘disk’ in the VM's XML file in /etc/libvirt/qemu. You can look copy & paste the entry for your mail storage device and just change the target and address tags. For example: # virsh edit vm1 <disk type=' file' device=' disk'> <driver name=' qemu' type=' raw' cache=' none' io=' threads'/> <source file=' /vm-images/vm1.img'/> <target dev=' vda' bus=' virtio'/> <address type=' pci' domain=' 0x0000' bus=' 0x00' slot=' 0x04' function=' 0x0'/> </disk> Add: <disk type=' file' device=' disk'> <driver name=' qemu' type=' raw' cache=' none' io=' threads'/> <source file=' /vm-images/vm1-add.img'/> <target dev=' vdb' bus=' virtio'/> <address type=' pci' domain=' 0x0000' bus=' 0x00' slot=' 0x06' function=' 0x0'/> </disk> # 这里建议使用上面的添加硬盘的方式添加
虚拟机的克隆 将一个虚拟机克隆完毕之后,就可以以此为模板进行克隆,其它虚拟机就不必在一一进行创建,安装操作系统等操作。虚拟机克隆操作的代码如下:
#!/usr/bin/env bash set -euxset -o pipefailvm_path="/var/lib/libvirt/images/vm_os" for (( i = 0 ; i <= 9 ; i ++ ))do vm_dir=$vm_path /vm$i if [ ! -d $vm_dir ]; then mkdir -p $vm_dir fi virt-clone --connect qemu:///system --original vm00 --name vm$i --file $vm_dir /vm"$i " system.img done
虚拟机磁盘挂载 虚拟机挂载磁盘的命令是virsh attach-disk,卸载磁盘的命令是virsh detach-disk,同样,为了批量操作方便,我们写个脚本来进行处理。
#!/usr/bin/env bash set -euxset -o pipefailvm_path="/var/lib/libvirt/images/vm_disk" for (( i = 0 ; i <= 9 ; i ++ ))do vm_dir=$vm_path /vm$i if [ ! -d $vm_dir ]; then mkdir -p $vm_dir fi fallocate -l 15G $vm_dir /disk_15G.img virsh attach-disk vm$i --source $vm_dir /disk_15G.img --target sdb --persistent done