kvm安裝 1、在宿主機上準備好yum(只需要本地鏡像yum就可以) 2、查看CPU是否支持inter或AMD的虛擬技術 3、安裝kvm 4、確認是否有裝在kvm模塊,沒有裝載可以使用modprobe kvm來裝載 5、啟動並設置為開機自啟動 kvm安裝虛擬機 圖形安裝 第一步、 安裝方式: --我 ...
kvm安裝
1、在宿主機上準備好yum(只需要本地鏡像yum就可以)
2、查看CPU是否支持inter或AMD的虛擬技術
# cat /proc/cpuinfo |grep -E "vmx|svm"
3、安裝kvm
# yum install qemu-kvm libvirt virt-install libvirt-python virt-manager virt-install libvirt-client virt-viewer
4、確認是否有裝在kvm模塊,沒有裝載可以使用modprobe kvm來裝載
# lsmod |grep kvm kvm_intel 170181 0 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm
5、啟動並設置為開機自啟動
# systemctl start libvirtd # systemctl status libvirtd # systemctl enable libvirtd
kvm安裝虛擬機
圖形安裝
--和xen一樣的命令,打開虛擬機管理器
# virt-manager
第一步、
安裝方式: --我這裡選擇第一個,使用iso直接安裝
第二步、
安裝路徑:/data/CentOS-7-x86_64-DVD-1611.iso --寫上iso的路徑
第三步、
記憶體大小: 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 指使用全虛擬化
kvm主要的管理命令
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
kvm的克隆
--註意:克隆都需要源虛擬機器是關閉或者暫停狀態
圖形克隆
- 先關閉kvm1或 virsh suspend kvm1暫停kvm1(使用virsh resume kvm1恢復)
- virt-manager--》右鍵點kvm1--》選擇clone-->修改克隆後的名字或其它參數--》點clone
文本克隆
1、拷貝配置文件和磁碟文件
# cp /etc/libvirt/qemu/kvm1.xml /etc/libvirt/qemu/kvm3.xml # cp /var/lib/libvirt/images/kvm1.qcow2 /var/lib/libvirt/images/kvm3.qcow2
2、修改拷貝的配置文件
# 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>
3、保存後,使用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
4、再啟動
# 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有多個硬碟,那麼克隆時也要對應的克隆成多個路徑
kvm網路管理
只查看與網路有關的幫助參數
# 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的分配範圍)
註意:這裡最後一步有三種網路:
1、isolated 相當vmware的hostonly,沒有NAT,也沒有網關(完全和vmware的hostonly類型一樣)
2、NAT 有網關,有NAT,可以通過宿主上外網(和vmware的NAT類型一樣)
3、routed 也是相當於hostonly,在isolated的基礎上就是加了一個網關(仍然是和vmware的hostonly一致,但多了一個網關)
把上面的步驟做完後,直接在宿主機用ifconfig或virsh net-list --all,就可以看到新加的網路了
手動增加私有網路
1、拷貝一個網路配置文件並編輯
# 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>
2、定義一下,然後就可以使用virsh net-list --all去查看,狀態為inactive,autostart的狀態為no
# virsh net-define /etc/libvirt/qemu/networks/default2.xml
3、啟動
# virsh net-start default2
4、查看
# 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
5、設置為開機自動啟動
# 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
修改一個網路
1、編輯配置文件
# 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, 沒有改變
需要做下麵三步:
2、定義一個網路,使你的修改被他知道
# virsh net-define /etc/libvirt/qemu/networks/default2.xml --定義一個網路,使你的修改被他知道 Network default2 defined from /etc/libvirt/qemu/networks/default3.xml
3、停一下這個網路
# virsh net-destroy default2 --停一下這個網路 Network default2 destroyed
4、再啟動這個網路
# 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(這個名字是自己定義的)
1、在宿主機上創建一個橋接網路
# 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
2、把一個物理網卡加到一個橋接網路里,這裡是把enp2s0加到br0
# vim /etc/sysconfig/network-scripts/ifcfg-enp2s0 --原物理網卡enp2s0里的配置只留下這三句就可以了 DEVICE="enp2s0" ONBOOT="yes" BRIDGE=br0
3、重啟網路
/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 --重啟後,虛擬機就是橋接網路
kvm磁碟管理
圖形添加硬碟設備
virt-manager--》 雙擊打開kvm4--》點左上角的燈泡符號show virtual hardware details --》點左下角add devices 直接添加,並寫上相關參數就可以(註意參數,device type都選擇virtio,不需要重啟虛擬機,可以直接生效,並且磁碟名叫vda,vdb,vdc...;如果你第一次加硬碟選擇IDE disk,需要重啟,並且磁碟名叫sda,sdb,sdc...)
註意:用圖形方式線上刪除磁碟後,還要去物理上把它的磁碟xxx.qcow2文件給rm掉
命令添加硬碟設備
1、使用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
2、編輯虛擬機的配置文件
# 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>
3、重啟虛擬機後(有可能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