KVM虚拟化搭建 1.关闭防火墙 1 2 3 4 5 systemctl stop firewalld systemctl disable firewalld
2.关闭enforce 1 2 3 setenforce 0 vi /etc/selinux/config
3.查cpu是否支持VT 1 egrep '(vmx|svm)' --color=always /proc/cpuinfo
4.检查内核模块是否加载
5.安装kvm及依赖 若离线安装请先部署本地yum源,在线安装直接安装即可
1 yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm virt-install libguestfs-tools
设置开机启动
1 2 systemctl enable libvirtd systemctl start libvirtd
查看状态是否正常
1 systemctl status libvirtd
配置软连接
1 ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
6.为虚拟机创建网桥 首先备份一下网卡设置
1 cp /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-ens160.bak
配置虚拟网桥
1 2 3 4 5 6 7 8 cat >/etc/sysconfig/network-scripts/ifcfg-ens160 <<EOF DEVICE=ens160 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes BRIDGE=br0 EOF
新建br0
1 2 3 4 5 6 7 8 9 10 11 12 cat >/etc/sysconfig/network-scripts/ifcfg-br0 <<EOF TYPE="Bridge" BOOTPROTO=static DEVICE="br0" ONBOOT="yes" IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=114.114.114.114 DNS2=8.8.8.8 DELAY="0" EOF
自动化搭建kvm简易脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #!/bin/sh etlName=$1 IP=$2 GWay=$3 NMask=$4 if [ ${etlName} "x" == "x" ]||[ ${IP} "x" == "x" ]||[ ${GWay} "x" == "x" ];then echo "参数错误,请检查参数设置是否正确!!!" echo "参数1: 桥接网卡名称" echo "参数2: 桥接ip的地址" echo "参数3: 桥接网关地址" echo "参数4: 桥接子网掩码" exit fi if [ ${NMask} "x" == "x" ];then NMask="255.255.255.0" fi echo "参数1: 桥接网卡名称-> $etlName " echo "参数2: 桥接ip的地址-> $IP " echo "参数3: 桥接网关地址-> $GWay " echo "参数4: 桥接子网掩码-> $NMask " systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm virt-install libguestfs-tools systemctl enable libvirtd systemctl start libvirtd systemctl status libvirtd ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvmcp -a /etc/sysconfig/network-scripts/ifcfg-${etlName} /etc/sysconfig/network-scripts/ifcfg-${etlName} $(date +"%Y%m%d" ).bakcat >/etc/sysconfig/network-scripts/ifcfg-${etlName} <<EOF DEVICE=${etlName} TYPE=Ethernet BOOTPROTO=none ONBOOT=yes BRIDGE=br0 EOF cat >/etc/sysconfig/network-scripts/ifcfg-br0 <<EOF TYPE="Bridge" BOOTPROTO=static DEVICE="br0" ONBOOT="yes" IPADDR=${IP} NETMASK=${NMask} GATEWAY=${GWay} DNS1=114.114.114.114 DNS2=8.8.8.8 DELAY="0" EOF exit
7.重启网络 1 systemctl restart network
8.查看网桥 1 2 brctl show brctl stp br0 on
9.创建虚拟机 方式1
1 2 3 4 5 6 7 8 qemu-img create -f qcow2 centos1.qcow2 500G qemu-img create -f qcow2 centos2.qcow2 500G qemu-kvm -name c1 -cpu host -smp 2 -m 64 -drive file=/data/imgs/centos1.qcow2,if =virtio,media=disk,format=qcow2 -drive file=/opt/CentOS-5.5-i386-bin-DVD.iso,index=1,media=cdrom -vnc :0 -net nic,model=e1000,macaddr=52:54:00:00:01:01 -net tap,script=/etc/qemu-ifup-pn1 -daemonize qemu-kvm -name c2 -cpu host -smp 2 -m 64 -drive file=/data/imgs/centos2.qcow2,if =virtio,media=disk,format=qcow2 -drive file=/opt/CentOS-5.5-i386-bin-DVD.iso,index=1,media=cdrom -vnc :1 -net nic,model=e1000,macaddr=52:54:00:00:00:01 -net tap,script=/etc/qemu-ifup-pn1 -daemonize
注意:-vnc :0/1 是窗口号;MAC 地址52:54:00 不能改,后边随意
开2个终端,vnc 连接虚拟机
1 2 3 vncviewer 192.168.30.107:0 vncviewer 192.168.30.107:1
方式2
推荐此方式
1 2 3 4 5 qemu-img create -f qcow2 centos1.qcow2 500G virt-manager
virt-manager若无法打开尝试执行export DISPLAY=Windows的IP:0.0
1 export DISPLAY=192.168.11.13:0.0
方式3
1 2 3 4 5 qemu-img create -f qcow2 centos1.qcow2 500G virt-install --name=master1 --memory 8192 --vcpus=2 --disk path=/data/qemu/centos1/centos1.qcow2,size=500,format=qcow2,bus=virtio --accelerate --cdrom=/data/CentOS-7-x86_64-DVD-1810.iso --vnc --vncport=6004 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
10.KVM虚拟机日常操作命令 KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。
下面列出kvm日常管理中的命令:
查看KVM虚拟机配置文件及运行状态KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/autostart目录是配置kvm虚拟机开机自启动目录。
virsh命令帮助:
virsh -help
或直接virsh命令和,再执行子命令。如下所示。
1 2 3 4 5 6 7 virsh 欢迎使用 virsh,虚拟化的交互式终端。 输入:'help' 来获得命令的帮助信息 'quit' 退出virsh
(1)查看kvm虚拟机状态
(2)KVM虚拟机开机
KVM虚拟机关机或断电 默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。
1 2 chkconfig acpid on service acpid restart
(3)virsh关机 1 virsh shutdown oeltest01
(4)强制关闭电源
(5)通过配置文件启动虚拟机 1 virsh create /etc/libvirt/qemu/wintest01.xml
(6)配置开机自启动虚拟机 1 virsh autostart oeltest01
autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。
(7)导出KVM虚拟机配置文件 1 virsh dumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml
KVM虚拟机配置文件可以通过这种方式进行备份。
(8)删除kvm虚拟机 1 virsh undefine wintest01
说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。
(9)重新定义虚拟机配置文件 通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。
1 2 mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xmlvirsh define /etc/libvirt/qemu/wintest01.xml
(10)编辑KVM虚拟机配置文件
virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。 可以但不建议直接通过vi编辑。
1 vi /etc/libvirt/qemu/wintest01.xml
(11)kvm虚拟机console控制台登录配置
(12)挂起服务器
(13)恢复服务器
(14)创建虚拟机 1 2 3 4 5 6 virt-install --name=centos1 \ --ram 1024 --vcpus=1 \ --disk path=/root/centos1.img,size=10 \ --accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \ --graphics vnc,port=5921 --network bridge=br0
(15)如果有图形界面的话,可以进入虚拟机的界面
(16)重启虚拟机
(17)暂停虚拟机
(18)恢复虚拟机
(19)克隆centos1
如果我们要建几个一样的虚拟机,这个命令,非常有用。
1 virt-clone --connect=qemu:
(20)未登录的情况下,查看镜像目录 1 2 3 4 virt-ls centos.img /home
(21)查看虚拟机的分区情况 1 2 3 virt-filesystems -d centos1
(22) 将centos1中的文件copy到tmp下面 1 virt-copy-out -d centos1 /etc/passwd /tmp
(23)mount虚拟机 1 2 3 4 5 6 guestmount -a /root/centos.img -m /dev/VolGroup/lv_root --rw /mnt/usb cd /mnt/usb/ls
(24)修改kvm中虚拟机的内存大小 1 2 3 4 5 6 7 8 virsh shutdown vm01 virsh list
(25)删除一个虚拟机 可以删除一个状态为“shut off”的虚拟机。
1 2 virsh undefine vm01 rm -f /home/data/vm01.img
(26)网络设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 virsh net-list brctl show brctl delif bro vnet1 brctl addif bro vnet1
(27)virtsh参数如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 autostart #自动加载指定的一个虚拟机 connect #重新连接到hypervisor console #连接到客户会话 create #从一个SML文件创建一个虚拟机 start #开始一个非活跃的虚拟机 destroy #删除一个虚拟机 define #从一个XML文件定义一个虚拟机 domid #把一个虚拟机名或UUID转换为ID domuuid #把一个郁闷或ID转换为UUID dominfo #查看虚拟机信息 domstate #查看虚拟机状态 domblkstat #获取虚拟机设备快状态 domifstat #获取虚拟机网络接口状态 dumpxml #XML中的虚拟机信息 edit #编辑某个虚拟机的XML文件 list #列出虚拟机 migrate #将虚拟机迁移到另一台主机 quit #退出非交互式终端 reboot #重新启动一个虚拟机 resume #重新恢复一个虚拟机 save #把一个虚拟机的状态保存到一个文件 dump #把一个虚拟机的内核dump到一个文件中以方便分析 shutdown #关闭一个虚拟机 setmem #改变内存的分配 setmaxmem #改变最大内存限制值 suspend #挂起一个虚拟机 vcpuinfo #虚拟机的cpu信息 version #显示virsh版本
来源简书