1、安裝kvm虛擬化linux
#若是自己是圖形化界面可忽略 [root@kvm-test ~]# yum -y groupinstall "GNOME Desktop" #安裝GNOME桌面環境 [root@kvm-test ~]# yum -y install qemu-kvm # KVM模塊 [root@kvm-test ~]# yum -y install qemu-kvm-tools # KVM調試工具,可不安裝 [root@kvm-test ~]# yum -y install virt-install # 構建虛擬機的命令行工具 [root@kvm-test ~]# yum -y install qemu-img # qemu組件,建立磁盤、啓動虛擬機等 [root@kvm-test ~]# yum -y install bridge-utils # 網絡支持工具 [root@kvm-test ~]# yum -y install libvirt # 虛擬機管理工具 [root@kvm-test ~]# yum -y install virt-manager # 圖形界面管理虛擬機 [root@kvm-test ~]# yum -y install libguestfs-tools # 用來管理虛擬機磁盤格式 #若是自己就是圖形化界面可忽略下一步 [root@kvm-test ~]# ls -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target #將系統默認運行的target更改成graphical.target,若不執行該命令,重啓時可能會報錯。
二、安裝完畢後,需重啓系統,執行下面命令對系統進行檢查:web
[root@kvm-test ~]# cat /proc/cpuinfo | grep vmx #查看Intel的CPU是否支持虛擬化,如果AMD的CPU,需 「cat /proc/cpuinfo | grep smv」 [root@kvm-test ~]# lsmod | grep kvm #檢查KVM模塊是否安裝 kvm_intel 188688 0 kvm 636965 1 kvm_intel irqbypass 13503 1 kvm [root@kvm-test ~]# systemctl start libvirtd # 啓動libvirtd服務 [root@kvm-test ~]# systemctl enable libvirtd # 設置該服務爲開機自啓
三、在命令行模式中建立虛擬機(圖形化建立虛擬機可參考博文:圖形化桌面新建虛擬機)vim
[root@kvm-test ~]# mkdir -p /kvm/{iso,disk} [root@kvm-test ~]# ls /kvm/iso/ #準備要安裝的虛擬機操做系統文件 CentOS-7-x86_64-DVD-1611.iso [root@kvm-test ~]# qemu-img create -f raw /kvm/disk/test1.raw 10G # 建立虛擬機磁盤 Formatting '/kvm/disk/test1.raw', fmt=raw size=10737418240 [root@kvm-test ~]# virt-install --os-type=linux --os-variant centos7.0 --name test1 --ram 1024 --vcpus 1 --disk /kvm/disk/test1.raw,format=raw,size=10 --location /kvm/iso/CentOS-7-x86_64-DVD-1611.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install... Retrieving file .treeinfo... | 366 B 00:00:00 Retrieving file vmlinuz... | 5.1 MB 00:00:00 Retrieving file initrd.img... | 41 MB 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process. #根據上面的提示打開圖形化控制檯 [root@kvm-test ~]# virt-manager
輸入打開控制檯的命令後,便會彈出如下窗口:
單擊「打開」後,會出現如下界面,和咱們本身安裝系統同樣了(自行操做便可):
至此,命令行建立虛擬機就完成了,接下來使用手動更改配置文件的方式,克隆test1,生成新的虛擬機test2(在我博文前面的那個博文連接中有專用於克隆的命令工具的使用方法,這裏只是爲了來了解虛擬機的配置文件)
2、手動更改配置文件的方式,克隆web01,生成新的虛擬機web02centos
[root@kvm-test ~]# virsh list --all #確保要克隆的虛擬機在關閉狀態下 Id Name State ---------------------------------------------------- - test1 shut off [root@kvm-test ~]# cd /kvm/disk/ # 切換至虛擬機的虛擬磁盤存放目錄 [root@kvm-test disk]# cp test1.raw test2.raw # 將要克隆的虛擬機磁盤複製一份,並更更名稱 [root@kvm-test disk]# cd /etc/libvirt/qemu/ # 切換至KVM虛擬機配置文件的目錄 [root@kvm-test qemu]# ls # 查看當前目錄下的文件 networks test1.xml [root@kvm-test qemu]# virsh dumpxml test1 > ./test2.xml # 將test1的配置文件使用dumpxml工具進行備份爲當前目錄下的test1.xml [root@kvm-test qemu]# ls # 確保已經備份成功 networks test1.xml test2.xml [root@kvm-test qemu]# vim test2.xml <domain type='kvm'> <name>test2</name> # 更更名字爲test2 <uuid>3f90fb61-b84c-4946-885f-e2827275e107</uuid> # 刪除UUID這行配置,防止衝突 <memory unit='KiB'>1048576</memory> .............#省略部份內容 <devices> # 定位到此標籤 <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/kvm/disk/test2.raw'/> #將這裏的路徑更改成剛纔使用cp命令複製的test2.raw文件 <target dev='vda' bus='virtio'/> [root@kvm-test qemu]# virsh define test2.xml # 定義此配置文件 #(能夠理解爲載入該虛擬機,此時,須要注意當前的工做路徑) Domain test2 defined from test2.xml [root@kvm-test qemu]# virsh list --all # 查看是否克隆成功 Id Name State ---------------------------------------------------- - test1 shut off - test2 shut off # OK!查看到了,能夠自行運行test2,測試是否運行正常。 [root@kvm-test qemu]# virsh start test2 # 啓動test2 Domain test2 started [root@kvm-test qemu]# virsh list --all # 能夠看到已經成功啓動 Id Name State ---------------------------------------------------- 2 test2 running - test1 shut off
3、將web01加入開機自啓,與web02對比有何異同網絡
[root@kvm-test ~]# virsh dominfo test1 # 查看指定虛擬機的信息 Id: - Name: test1 UUID: 3f90fb61-b84c-4946-885f-e2827275e107 OS Type: hvm State: shut off CPU(s): 1 Max memory: 1048576 KiB Used memory: 1048576 KiB Persistent: yes Autostart: disable # 默認此處爲禁用狀態 Managed save: no Security model: none Security DOI: 0 [root@kvm-test ~]# virsh autostart test1 # 設置test1爲開機自啓 Domain test1 marked as autostarted [root@kvm-test ~]# virsh dominfo test1 # 查看是否爲開機自啓 Id: - Name: test1 UUID: 3f90fb61-b84c-4946-885f-e2827275e107 OS Type: hvm State: shut off CPU(s): 1 Max memory: 1048576 KiB Used memory: 1048576 KiB Persistent: yes Autostart: enable # OK 已經開啓 Managed save: no Security model: none Security DOI: 0 [root@kvm-test ~]# virsh dominfo test2 # 查看test2是否爲開機自啓 Id: 2 Name: test2 UUID: 375ec9f8-83ba-4c8f-bdcd-cd91bcc327f7 OS Type: hvm State: running CPU(s): 1 CPU time: 35.0s Max memory: 1048576 KiB Used memory: 1048576 KiB Persistent: yes Autostart: disable # 目前是禁用狀態 Managed save: no Security model: none Security DOI: 0 #此時能夠重啓宿主機,而後查看虛擬機的狀態(須要確保libvirtd服務的狀態爲開機自啓,不然會出現問題) [root@kvm-test ~]# reboot # 重啓 [root@kvm-test ~]# virsh list # 重啓後查看正在運行的虛擬機 Id Name State ---------------------------------------------------- 1 test1 running #此時,只有test1處於運行狀態,由於它設置了開機自啓,在libvirtd服務開機自啓的前提下,它會隨着宿主機的啓動而啓動
4、遠程鏈接虛擬機的兩種方法
(1)使用VNC軟件
VNC的安裝比較簡單,這裏就不髒各位老闆的眼了dom
[root@kvm-test ~]# virsh vncdisplay test1 :0 <!-- 查看出的結果是「:0」,解釋以下: 「:0」表示監聽5900端口; 「:1」表示監聽5901端口; 以此類推...... -->
打開vnc進行鏈接(注意防火牆相關配置):
爲了方便接下來使用console進行鏈接,此時須要調整虛擬機(test1)的內核參數,以下:ide
[root@test1 ~]# grubby --update-kernel=ALL --args="console=ttyS0" #在虛擬機中執行此命令 [root@test1 ~]# init 6 #重啓此虛擬機,以便更改生效
(2)使用console登錄web02
在KVM宿主機上執行如下命令便可登錄成功(前提是在使用vnc登錄時已經更改了web02的內核參數)工具
[root@kvm-test ~]# virsh console test1 Connected to domain test1 Escape character is ^] #敲一下回車 CentOS Linux 7 (Core) Kernel 3.10.0-514.el7.x86_64 on an x86_64 test1 login: root # 輸入test1 的用戶及密碼便可登陸 密碼: Last login: Tue Jul 28 11:31:28 on tty1 [root@test1 ~]#
5、使用默認的NAT網絡類型使test1能夠ping通外網
這裏就進行ping百度的測試,務必保證KVM宿主機能夠ping通百度。
(1)檢查相關配置性能
[root@kvm-test ~]# virsh net-list --all # 檢查當前的網絡設置 Name State Autostart Persistent ---------------------------------------------------------- default active yes yes [root@kvm-test ~]# ifconfig # 檢查當前網絡接口 virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:87:53:59 txqueuelen 1000 (Ethernet) #virbr0是由宿主機虛擬機支持模塊安裝時產生的虛擬網絡接口, 也是一個switch和bridge,負責把內容分發到各虛擬機。 virbr0是一個橋接器,接收全部到網絡192.168.122.*的內容。 從下面命令能夠驗證: [root@kvm-test ~]# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400875359 yes virbr0-nic vnet0 [root@kvm-test ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 192.168.171.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
(2)接下來開始配置nat網絡測試
[root@kvm-test ~]# virsh net-define /usr/share/libvirt/networks/default.xml #若是沒有上面指定的文件,可使用該命令定義一個虛擬網絡,也能夠修改該文件,建立本身的虛擬網絡 [root@kvm-test ~]# virsh net-autostart default # 網絡default標記爲自動啓動 [root@kvm-test ~]# virsh net-start default # 啓動網絡,若已啓動,此處會報錯 [root@kvm-test ~]# vim /etc/sysctl.conf # 修改此配置文件 ............省略部份內容 net.ipv4.ip_forward=1 #在文件末尾加入該行,以便容許IP轉發 [root@kvm-test ~]# sysctl -p [root@kvm-test ~]# vim /etc/libvirt/qemu/test1.xml <interface type='network'> <mac address='52:54:00:40:21:38'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> #定位「interface」關鍵字,肯定有上述內容
(3)鏈接到虛擬機web02,更改網卡的配置:
[root@test1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
更改網卡後,保存退出。
[root@test1 ~]# systemctl restart network
進行ping測試:
若要使用靜態IP,配置文件可更改以下(更改完成後自行重啓網卡,能夠增長DNS配置):
6、KVM虛擬機管理命令彙總
[root@kvm ~]# virsh start 虛擬機名稱 #開啓虛擬機 [root@kvm ~]# virsh list #僅查看運行的虛擬機列表 [root@kvm ~]# virsh list --all #查看全部虛擬機列表 [root@kvm ~]# virsh shutdown 虛擬機名稱 #正常的關閉虛擬機 [root@kvm ~]# virsh destroy 虛擬機名稱 #強制關閉虛擬機(相似於拔電源) [root@kvm ~]# virsh dumpxml 虛擬機名稱 > /root/test01-dum.xml #虛擬機備份 [root@kvm ~]# virsh undefine 虛擬機名稱 #刪除虛擬機(注意:取消定義以後,磁盤文件須要手動刪除) [root@kvm ~]# virsh define 備份的.xml虛擬機文件 #還原虛擬機 [root@kvm ~]# virsh edit 虛擬機名稱 #編輯虛擬機的配置文件 [root@kvm ~]# virsh domrename 原名字 要更改的名字 # 如:([root@kvm ~]# virsh domrename test01 test03) 更改虛擬機名稱 [root@kvm qemu]# virsh dominfo test02 #查看虛擬機的詳細信息 [root@kvm ~]# virsh autostart test02 #設置虛擬機爲開機自啓 [root@kvm ~]# virsh autostart --disable test02 #取消開機自啓 [root@kvm ~]# virsh vncdisplay test02 #查看對應的VNC鏈接端口號;默認第一個端口號爲:5900(用「:0」表示) [root@kvm ~]# virsh suspend test02 #掛起虛擬機 [root@kvm ~]# virsh resume test02 #取消掛起虛擬機 [root@kvm ~]# virsh console test02 #console登錄虛擬機 [root@kvm ~]# qemu-img info /kvm/disk/test01.raw #查看虛擬機的磁盤信息 [root@kvm disk]# qemu-img create test.raw 2G #建立虛擬機使用的磁盤 [root@kvm disk]# qemu-img create -f qcow2 21.qcow2 2G #建立qcow2格式的虛擬機磁盤 [root@kvm disk]# qemu-img convert -f raw -O qcow2 test.raw test.qcow2 #將test.raw磁盤格式raw轉換爲qcow2 [root@kvm qemu]# virsh snapshot-create test02 #建立虛擬機快照 [root@kvm disk]# virsh snapshot-list test02 #查看虛擬機快照 [root@kvm disk]# virsh snapshot-revert test02 1570692304 #恢復快照 [root@kvm disk]# virt-clone --auto-clone -o test01 -n 指定要克隆的名字(可選) #自動克隆虛擬機 [root@kvm disk]# virt-clone -o test01 -n test04 -f /kvm/disk/test04.qcow2 #手動克隆 #上述都是屬於完整克隆。 [root@kvm disk]# qemu-img create -f qcow2 -b test01.qcow2 lktest01.qcow2 # -f:指定要克隆爲的磁盤格式; # -b:指定要轉換的源文件及目標文件 #上述命令是在克隆虛擬機的磁盤文件
RAW:裸格式。佔用空間較大,性能比較好,但不支持快照功能。
qcow:copy on write(寫時複製機制)。
qcow2:佔用空間較小,性能相比較RAW稍差,,但它支持快照功能。