一、在宿主机上准备好yum(只须要本地镜像yum就能够)python
二、查看CPU是否支持inter或AMD的虚拟技术vim
# cat /proc/cpuinfo |grep -E "vmx|svm"
三、安装kvmcentos
# yum install qemu-kvm libvirt virt-install libvirt-python virt-manager virt-install libvirt-client virt-viewer
四、确认是否有装在kvm模块,没有装载可使用modprobe kvm来装载api
# lsmod |grep kvm kvm_intel 170181 0 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm
五、启动并设置为开机自启动网络
# systemctl start libvirtd # systemctl status libvirtd # systemctl enable libvirtd
启动报错排查dom
[root@server ~]# systemctl start libvirtd Job for libvirtd.service failed because the control process exited with error code. See "systemctl status libvirtd.service" and "journalctl -xe" for details. [root@server ~]# journalctl -xe -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit libvirtd.service has failed. -- -- The result is failed. 1月 04 16:34:19 server systemd[1]: Unit libvirtd.service entered failed state. 1月 04 16:34:19 server systemd[1]: libvirtd.service failed. 1月 04 16:34:19 server systemd[1]: libvirtd.service holdoff time over, scheduling restart. 1月 04 16:34:19 server systemd[1]: start request repeated too quickly for libvirtd.service 1月 04 16:34:19 server systemd[1]: Failed to start Virtualization daemon. -- Subject: Unit libvirtd.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit libvirtd.service has failed. -- -- The result is failed. 1月 04 16:34:19 server systemd[1]: Unit libvirtd.service entered failed state. 1月 04 16:34:19 server systemd[1]: libvirtd.service failed. 查看/var/log/messages日志发现: Jan 4 16:41:44 server libvirtd: 2019-01-04 08:41:44.437+0000: 23439: error : virModuleLoadFile:53 : 内部错误:Failed to load module '/usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so': /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so: undefined symbol: rbd_diff_iterate2 解决办法: # cd /usr/lib64/libvirt/storage-backend # mv libvirt_storage_backend_rbd.so libvirt_storage_backend_rbd.so.back 再次启动就ok
--和xen同样的命令,打开虚拟机管理器
# virt-manager
第一步、ssh
安装方式: --我这里选择第一个,使用iso直接安装ide
第二步、ui
安装路径:/data/CentOS-7-x86_64-DVD-1611.iso --写上iso的路径centos7
第三步、
内存大小: 800M -- 内存若是较小,安装时没法使用图形安装方式,只能使用文本安装方式
cpu个数:2 --不能大于宿主机器的cpu核数
第四步、
硬盘大小:20G --我这里定义20G大小;它的默认路径会在/var/lib/libvirt/images/kvm1.qcow2
第五步、
name:kvm1 --自定义一个虚拟机名称
网络如今只能选择default --这是一个nat网络(私有网络),桥接网络不能选,须要后面单独配置后才能选择
# virt-install --hvm --name "kvm1" --memory 800 --vcpus 2 --disk=/var/lib/libvirt/images/kvm1.qcow2,size=20 -l /share/CentOS-7-x86_64-DVD-1611.iso --network bridge=virbr0
--hvm 指使用全虚拟化
virsh help virsh help domain virsh help network virsh help monitor --由于参数不少,能够用象domain,network,monitor这种关键字,只查看与关键字有关的参数帮助 ......
# virsh list Id Name State ---------------------------------------------------- 1 kvm1 running # virsh list --all Id Name State ---------------------------------------------------- 1 kvm1 running - kvm2 shut off
# virsh start kvm1 --启动一个虚拟机
# virsh shutdown kvm1 --正常关闭一个虚拟机(把服务都停掉,再关电源)
# virsh reboot kvm1 --正常重启一个虚拟机,先shutdown再start
# virsh destroy kvm1 --强制关闭一个虚拟机,相似断电,能够瞬间关闭虚拟机 # virsh reset kvm1 --至关因而先destroy,再start
# virsh save kvm1 /etc/libvirt/qemu/kvm1.save --把kvm1关闭,并把当前状态保存为一个文件 # virsh restore /etc/libvirt/qemu/kvm1.save --经过保存的文件,恢复当时save时的状态 # virsh suspend kvm1 --暂停kvm1的状态 # virsh resume kvm1 --由暂停切换为继续的状态
# virt-manager 打开管理器,双击你要链接的虚拟机
# virt-viewer kvm1 --链接一个已经启动的虚拟机,并使用图形查看
# ssh x.x.x.x --非图形方式就能够连,但须要虚拟机配置好ip
非图形方式也可使用console连(此方法不须要虚拟机配置ip均可以连),但须要配置受权
# virsh console kvm1 --字符链接一个虚拟机,可是如今链接不了;由于须要一个串口的受权才能够;
受权作法:
1,在kvm1虚拟机里操做(注意不是在宿主机上操做)
# grubby --update-kernel=ALL --args="console=ttyS0"
# reboot
2,在宿主机virsh console kvm1链接使用
3,退出的方式
exit只是退出登陆的用户而已
要彻底退出这个console链接,须要使用的是ctrl+ ] (也就是右中框号的这个键)
以kvm1为例:
配置文件在:
/etc/libvirt/qemu/kvm1.xml
磁盘文件默认在:
/var/lib/libvirt/images/kvm1.qcow2
打开虚拟机配置文件的作法:
方法一:
# vim /etc/libvirt/qemu/kvm1.xml
方法二:
# virsh edit kvm1 --此方法默认是调用vi,因此没有颜色,你能够作个软连接,让访问vi实际连接到vim就能够了
命令删除一个虚拟机的作法(假设kvm3)
# virsh destroy kvm3 # virsh undefine kvm3 # rm -rf /var/lib/libvirt/images/kvm3.img
--注意:克隆都须要源虚拟机器是关闭或者暂停状态
一、拷贝配置文件和磁盘文件
# cp /etc/libvirt/qemu/kvm1.xml /etc/libvirt/qemu/kvm3.xml # cp /var/lib/libvirt/images/kvm1.qcow2 /var/lib/libvirt/images/kvm3.qcow2
二、修改拷贝的配置文件
# vim /etc/libvirt/qemu/kvm3.xml <domain type='kvm'> <name>kvm3</name> --名字改为kvm3 <uuid>811d69e8-b1d8-cfbf-684a-69f2e0af6b88</uuid> --uuid随便改几个数字 <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/kvm3.qcow2'/> --磁盘路径改为kvm3.qcow2的路径 <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='52:54:00:5c:3a:2d'/> --网卡地址随便改下,只改后三位 <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> <sound model='ich6'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </sound> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain>
三、保存后,使用virsh list --all查看不到的,须要define一下
# virsh define /etc/libvirt/qemu/kvm3.xml
# virsh list --all --再查就能够查看到kvm3 Id Name State ---------------------------------------------------- - kvm1 shut off - kvm1-clone shut off - kvm2 shut off - kvm3 shut off
四、再启动
# virsh start kvm3 --能够启动克隆的机器了
# virt-clone -o kvm1 -n kvm4 -f /var/lib/libvirt/images/kvm4.img Allocating kvm4.img 7% [- ] 34 MB/s | 957 MB 05:29 ETA
--把kvm1克隆成kvm4,指定磁盘路径为/var/lib/libvirt/images/kvm4.img;若是kvm1有多个硬盘,那么克隆时也要对应的克隆成多个路径
只查看与网络有关的帮助参数
# virsh help network
# virsh net-list --all Name State Autostart ----------------------------------------- default active yes --这是一个NAT网络,私有网络
# virsh net-info default Name default UUID 704eb1b7-3feb-4a38-8642-9c3fe2f023bb Active: yes Persistent: yes Autostart: yes Bridge: virbr0
default网段的配置文件的路径为:
/etc/libvirt/qemu/networks/default.xml
# virsh net-destroy default --停掉default网络,由virsh net-list --all去查看,状态变为inactive # virsh net-start default --启动default网络,状态变为active
virt-manager打开图形--》edit --》connections details --》 virtual networks--》点左下角的+号增长一个私有网络(选择名字,网络分配地址范围,dhcp的分配范围)
注意:这里最后一步有三种网络:
一、isolated 至关vmware的hostonly,没有NAT,也没有网关(彻底和vmware的hostonly类型同样)
二、NAT 有网关,有NAT,能够经过宿主上外网(和vmware的NAT类型同样)
三、routed 也是至关于hostonly,在isolated的基础上就是加了一个网关(仍然是和vmware的hostonly一致,但多了一个网关)
把上面的步骤作完后,直接在宿主机用ifconfig或virsh net-list --all,就能够看到新加的网络了
一、拷贝一个网络配置文件并编辑
# cp /etc/libvirt/qemu/networks/default1.xml /etc/libvirt/qemu/networks/default2.xml
# vim /etc/libvirt/qemu/networks/default2.xml
<network> <name>default2</name> --修更名字为default2 <uuid>243166ddb-e2fd-9983-1997-5e8efdc06c42</uuid> --uuid随便修改一下 <bridge name='virbr2' stp='on' delay='0' /> --virbr1改为virbr2 <mac address='52:54:00:AF:27:25'/> --MAC地址改一下,只改后面三位 <ip address='192.168.101.1' netmask='255.255.255.0'> --IP改成101 <dhcp> <range start='192.168.101.128' end='192.168.101.254' /> --dhcp地址范围也改为101的 </dhcp> </ip> </network>
二、定义一下,而后就可使用virsh net-list --all去查看,状态为inactive,autostart的状态为no
# virsh net-define /etc/libvirt/qemu/networks/default2.xml
三、启动
# virsh net-start default2
四、查看
# ifconfig virbr2 |head -2 --查看就有了 virbr2 Link encap:Ethernet HWaddr 52:54:00:AF:27:25 inet addr:192.168.101.1 Bcast:192.168.101.255 Mask:255.255.255.0
# ls /etc/libvirt/qemu/networks/autostart/ default1.xml default.xml
五、设置为开机自动启动
# virsh net-autostart default2 # ls /etc/libvirt/qemu/networks/autostart/ --这里就会多了default2.xml了,其实都是网络配置文件的软连接 default1.xml default2.xml default.xml
刚加的网络配置文件都在下面的目录
# ls /etc/libvirt/qemu/networks autostart default1.xml default2.xml default.xml
一、编辑配置文件
# vim /etc/libvirt/qemu/networks/default2.xml <network> <name>default2</name> <uuid>243166ddb-e2fd-9982-1996-5e8efdc06c42</uuid> <forward dev='eth0' mode='route'> <interface dev='eth0'/> </forward> <bridge name='virbr2' stp='on' delay='0' /> <mac address='52:54:00:AF:166:45'/> <ip address='192.168.102.1' netmask='255.255.255.0'> --我这里把之前的192.168.101.0的IP范围都改为了192.168.102.0 <dhcp> <range start='192.168.102.128' end='192.168.102.254' /> </dhcp> </ip> </network>
保存后,使用ifconfig virbr1 查看,仍是192.168.102.1, 没有改变
须要作下面三步:
二、定义一个网络,使你的修改被他知道
# virsh net-define /etc/libvirt/qemu/networks/default2.xml --定义一个网络,使你的修改被他知道 Network default2 defined from /etc/libvirt/qemu/networks/default3.xml
三、停一下这个网络
# virsh net-destroy default2 --停一下这个网络 Network default2 destroyed
四、再启动这个网络
# virsh net-start default2 --再启这个网络 Network default2 started
ifconfig virbr2查看,成功修改为192.168.102.1
上面的第一步和第二步能够统一成一步来作:
# virsh net-edit default2 --使用这个命令打开,修改,而后就直接net-destroy和net-start,不须要去net-define
virt-manager打开图形--》edit --》connections details --》 virtual networks--》选择你要删除的网络,而后左下角,先停,再删除就能够了
# virsh net-destroy default2 --停掉要删除的网络,用virsh net-list --all命令去查就变成了inactive状态 # virsh net-undefine default2 --这下就删除了这个网络定义了,而且物理上的配置文件也没了
把物理网卡enp2s0桥接到br0(这个名字是本身定义的)
一、在宿主机上建立一个桥接网络
# systemctl stop NetworkManager # systemctl status NetworkManager # systemctl disable NetworkManager
# vim /etc/sysconfig/network-scripts/ifcfg-br0 --此文件不存在,br0这个名字是自定义的 DEVICE=br0 --名字对应好 TYPE=Bridge --这里的Birdge,B要大写,后面的irdge要小写 BOOTPROTO=static IPADDR=172.16.13.X NETMASK=255.255.255.0 GATEWAY=172.16.13.254 DNS1=114.114.114.114 ONBOOT=yes
二、把一个物理网卡加到一个桥接网络里,这里是把enp2s0加到br0
# vim /etc/sysconfig/network-scripts/ifcfg-enp2s0 --原物理网卡enp2s0里的配置只留下这三句就能够了 DEVICE="enp2s0" ONBOOT="yes" BRIDGE=br0
三、重启网络
/etc/init.d/network restart 或者 systemctl restart network
在宿主机上ifconfig 查看就会有br0这个网卡,有IP;而原enp2s0网卡没有IP;这是正常的
virt-manager打开图形,双击你要修改的虚拟机--》点击左上的一个!号(centos7里看到的是一个像灯泡同样的符号)按钮show virtual hardware detail-->>找个网卡,修改为你想要改的网络
# virsh edit kvm3 <interface type='network'> <mac address='52:54:00:07:8d:e5'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> 改为下面的样子 <interface type='bridge'> --network改为了bridge <mac address='52:54:00:07:8d:e5'/> <source bridge='br0'/> --network改为了bridge;default改为了br0 <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
# virsh shutdown kvm1 # virsh start kvm1 --重启后,虚拟机就是桥接网络
virt-manager--》 双击打开kvm4--》点左上角的灯泡符号show virtual hardware details --》点左下角add devices 直接添加,并写上相关参数就能够(注意参数,device type都选择virtio,不须要重启虚拟机,能够直接生效,而且磁盘名叫vda,vdb,vdc...;若是你第一次加硬盘选择IDE disk,须要重启,而且磁盘名叫sda,sdb,sdc...)
注意:用图形方式在线删除磁盘后,还要去物理上把它的磁盘xxx.qcow2文件给rm掉
一、使用dd命令建立一个磁盘文件
# dd if=/dev/zero of=/var/lib/libvirt/images/kvm4-2.img bs=1M count=1 seek=4000000 --seek是指跳过多少个BS块,这里就是产生一个4T大小的文件(实际大小只1M)
# qemu-img info /var/lib/libvirt/images/kvm4-2.img image: /var/lib/libvirt/images/kvm4-2.img file format: raw --格式为raw(这是老版本的默认格式,新版本是qcow2格式) virtual size: 3.8T (4194305048576 bytes) disk size: 1.0M
# cd /var/lib/libvirt/images/ # qemu-img convert -f raw -O qcow2 kvm4-2.img kvm4-2.qcow2 --把kvm4-2.img文件转换成一个新文件kvm4-2.qcow2(格式也转换成qcow2) # rm kvm4-2.img -rf --原来的这个文件不用了就能够删除掉了
# qemu-img info /var/lib/libvirt/images/kvm4-2.qcow2 image: /var/lib/libvirt/images/kvm4-2.qcow2 file format: qcow2 --转化后的新文件格式就为qcow2格式了 virtual size: 3.8T (4194305048576 bytes) disk size: 256K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
二、编辑虚拟机的配置文件
# virsh edit kvm4 <devices>与</devices>之间加上下面的一段,也能够把其它磁盘的配置定义拷贝一段进行修改 <disk type='file' device='disk'> <driver name='qemu' type='qcow2' /> --格式为qcow2 <source file='/var/lib/libvirt/images/kvm4-2.qcow2'/> --路径名称改为kvm4-2.qcow2 <target dev='vdb' bus='virtio'/> --新加的硬盘,就叫vdb <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> --slot也改一下,我这里是把0x07改为0x09(只要这个编号没有被重复占用就能够) </disk>
三、重启虚拟机后(有可能reboot还不行,须要force off再启动),登陆使用fdisk就能查看到这个4T大小的硬盘了
好比宿主机的/var目录空间不够,想把磁盘文件改到气他目录(如/data/kvm/目录)
# virsh destroy kvm1 --先停掉kvm1 # mv /var/lib/libvirt/images/kvm1.qcow2 /data/kvm/ # virsh edit kvm1 ...... <disk type='file' device='disk'> <driver name='qemu' type='qcow2' /> <source file='/data/kvm/kvm1.qcow2'/> --把这个路径改为mv后的新路径 <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> ...... # virsh start kvm1