天天看點

虛拟化之KVM

目錄

一、安裝
    1.1、先确認CPU是否支援虛拟化
    1.2、安裝KVM及相關工具包
    1.3、啟動libvirtd并設定為開機啟動
    1.4、建立磁盤
    1.5、開始安裝虛拟機

二、虛拟機操作
    2.1 虛拟機啟停操作
    2.2 虛拟機網卡操作
    2.3 虛拟機快照
    
三、擷取幫助
    3.1 擷取所有指令幫助
    3.2 擷取子指令幫助
           

一、安裝

1.1、先确認CPU是否支援虛拟化

intel的CPU虛拟化技術是vmx,AMD的CPU是svm:

[root@localhost ~]# grep -E "vmx|svm" /proc/cpuinfo
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust smep
           
有輸出結果,表示你的CPU支援虛拟化

1.2、安裝KVM及相關工具包

[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
           

1.3、啟動libvirtd并設定為開機啟動

libvirtd程序會建立一個橋接的網上virbr0,而且IP位址是192.168.122.1

[root@localhost ~]# systemctl  start libvirtd
[root@localhost ~]# systemctl  enable  libvirtd
[root@localhost ~]# ifconfig  virbr0
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:cb:ca:b0  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
           

下面的是為虛拟機配置設定IP位址的服務:

[root@localhost ~]# ps -aux | grep dns
nobody     2877  0.0  0.0  15552   888 ?        S    13:06   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root       2878  0.0  0.0  15524   180 ?        S    13:06   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root       4546  0.0  0.0 112664   980 pts/0    S+   13:29   0:00 grep --color=auto dns
           

1.4、建立磁盤

[root@llocalhost ~]# qemu-img create -f qcow2 /opt/CentOS-7-x86_64.qcow2 10G #建立一個格式為qcow2大小為10G的磁盤
Formatting '/opt/CentOS-7-x86_64.raw', fmt=qcow2 size=10737418240 
           
注意:常用的磁盤格式有raw和qcow2。raw是直接從實體磁盤上劃一塊空間出來,建立磁盤時設定的磁盤是10GB,生成出來的磁盤檔案就是10GB,raw格式的磁盤比較占用主控端的資源,但是它的性能相較于qcow2要好。而qcow2格式,隻是設定了一個邏輯大小為10GB,使用磁盤空間最多不能超過10GB,,生成的磁盤檔案開始隻有100KB,這個檔案的大小 ,會随着你的使用增大,但不會超過10GB。

1.5、開始安裝虛拟機

[root@LOCALHOST imgs]# virt-install --virt-type=kvm --name=openstack-load_balancing-node1 --ram=4096 --vcpus=1 --cdrom=/system/iso/CentOS-7-x86_64-Minimal-1511.iso --disk path=/system/imgs/openstack-load_balancing-node1.qcow2,size=100,format=qcow2 --network bridge=br1 --graphics vnc,listen=0.0.0.0,port=60000 --noautoconsole

#參數解釋
--virt-type=kvm     指定虛拟機類型為KVM

--name=openstack-load_balancing-node1   指定虛拟機名稱

--ram=4096          指定記憶體為4096M,預設機關是M

--vcpus=1           指定虛拟CPU個數為1個

--cdrom=/system/iso/CentOS-7-x86_64-Minimal-1511.iso    指定安裝虛拟機用的鏡像

--disk path=/system/imgs/openstack-load_balancing-node1.qcow2,size=100,format=qcow2     指定虛拟磁盤,切記要加上size和format,否則安裝系統時會出現磁盤僅為194K,不能安裝系統的情況

--network bridge=br1    橋接到主控端的br1網卡

--graphics vnc,listen=0.0.0.0,port=60000    使用VNC遠端桌面連接配接,操作安裝系統用,端口為60000;VNC預設的端口為5900,有時可能會被營運商禁用,這時你需要換一個端口試試。

--noautoconsole     不要自動嘗試連接配接到用戶端控制台
           
注意:要想為虛拟機添加多塊網卡,就需要指定多個“--network” 參數。

指令執行成功,如下圖:

虛拟化之KVM

image.png

這時就可以用VNC連接配接圖形界面,進行安裝了:

虛拟化之KVM
虛拟化之KVM
進入安裝界面,将CentOS 7無規則的網卡命名方式修改為eth0 、eth1這樣,需在上述界面中按上方向鍵選中“Install CentOS Linux 7”,然後按“Tab”鍵進行編輯,給核心傳參,加入“net.ifnames=0 biosdevname=0”。
虛拟化之KVM

接下來的系統安裝步驟就不再贅述了。

二、虛拟機操作

2.1 虛拟機啟停操作

檢視:

virsh list --all

開啟:

virsh start openstack-load2

重新開機:

virsh reboot openstack-load2

關機:

virsh shutdown openstack-load2

删除:

virsh undefine openstack-load2

随主控端自啟動:

virsh autostart openstack-load2

恢複:

virsh define /etc/libvirtd/qemu/openstack-load2.xml

注意:要想恢複虛拟機,必須保證虛拟機配置檔案中

<source file='/system/imgs/openstack-load2.qcow2'/>

定義的虛拟磁盤是存在的。

2.2 虛拟機網卡操作

  • 列出指定虛拟機的網卡:
指令:

virsh domiflist openstack-compute1

  • 動态添加虛拟機網卡:

virsh attach-interface --domain openstack-compute1 --type bridge --source br2 --model virtio --persistent --config

注意:
  • --domain 後面可以跟虛拟機名稱或者虛拟機ID。
  • --persistent 實時更改并将修改寫入配置檔案中
  • --config 下一次啟動時生效
  • 移除虛拟網卡

virsh detach-interface openstack-load1 --type bridge --mac 52:54:00:0f:0d:df

注意:虛拟機網卡MAC位址可以通過

virsh domiflist openstack-load1

指令擷取

2.3 虛拟機快照

  • 列出指定虛拟的所有快照:

virsh snapshot-list openstack-load1

  • 為指定虛拟機建立快照:
    • 指令格式:

      virsh snapshot-create-as 虛拟機名 快照别名

virsh snapshot-create-as openstack-load1 openstack-load1-base-180324

  • 列出指定虛拟機的快照

virsh snapshot-list openstack-compute1

  • 檢視虛拟機目前快照:

virsh snapshot-current openstack-load1

  • 為虛拟機恢複至指定快照
[root@LOCALHOST ~]# virsh snapshot-revert --help
  NAME
    snapshot-revert - Revert a domain to a snapshot

  SYNOPSIS
    snapshot-revert <domain> [<snapshotname>] [--current] [--running] [--paused] [--force]

  DESCRIPTION
    Revert domain to snapshot

  OPTIONS
    [--domain] <string>  domain name, id or uuid
    [--snapshotname] <string>  snapshot name
    --current        revert to current snapshot
    --running        after reverting, change state to running
    --paused         after reverting, change state to paused
    --force          try harder on risky reverts
           

virsh snapshot-revert openstack-load1 openstack-load1-base-180324 --running

-

openstack-load1

:虛拟機名稱

openstack-load1-base-180324

是快照名稱,可通過

virsh snapshot-list 虛機名

檢視

--running

表示恢複快照後,将虛拟機狀态改為正在運作

2.4 虛拟機改名

1)終端指令行下檢視虛拟機

[root@kvm-server ~]# virsh list
Id Name State
----------------------------------------------------
4 vmserver004 running
5 vmserver003 running
6 vmserver005 running
           

2)關閉虛拟機

[root@kvm-server ~]# virsh shutdown vmserver003
           

3)導出xml檔案

[root@kvm-server ~]# cd /etc/libvirt/qemu
[root@kvm-server qemu]# ls
networks vmserver003.xml vmserver004.xml vmserver005.xml
[root@kvm-server qemu]# virsh dumpxml vmserver003 > test-huanqiu.xml
[root@kvm-server qemu]# ls
networks test-huanqiu.xml vmserver004.xml vmserver005.xml
           

4)編輯test-huanqiu.xml檔案,将裡面的vmserver003全部替換成test-huanqiu

[root@kvm-server qemu]# sed -i 's/vmserver003/test-huanqiu/g' test-huanqiu.xml
           
  1. 重定義
[root@kvm-server qemu]# virsh undefine vmserver003
[root@kvm-server qemu]# virsh define test-huanqiu.xml
           

若有修改img也将檔案重命名下如:

[root@kvm-server qemu]# vim test-huanqiu.xml

# 将裡面使用的img鏡像檔案名也可以重命名(檔案裡有鏡像檔案路徑)

6)啟動虛拟機

[root@kvm-server qemu]# virsh start test-huanqiu
           

7) 重命名後檢視

[root@kvm-server qemu]# virsh list
Id Name State
----------------------------------------------------
4 vmserver004 running
5 test-huanqiu running
6 vmserver005 running
           

2.5 KVM虛拟機硬體配置修改、磁盤擴充以及主機遷移

1,KVM虛拟機硬體配置修改

關機,virsh edit host 編譯虛拟機配置檔案,進行記憶體 、cpu參數修改。修改以後重新開機虛拟機加載最新配置。

2,磁盤擴充

由于非專業搞虛拟化,這裡隻用于測試環境部署使用。更為專業的磁盤擴充請參考其他資料。這裡以linux 66主機的qcow2為例擴充。操作步驟:

(1)關機

(2)擴充

qemu-img resize linuxt66.qcow2 +5G

(3)啟動并登入伺服器擴充磁盤

3,主機遷移

思路:

(1)導出xml檔案

(2)轉移虛拟機磁盤檔案

(3)新伺服器重新定義主機 virsh define host

(4)啟動

三、擷取幫助

3.1 擷取所有指令幫助

virsh --help

3.2 擷取子指令幫助

virsh 子指令 --help

繼續閱讀