使用qemu-img創建磁盤文件
- 通過文件管理可以直接查看、修改、複製虛擬機的內部文件。
- 例如,當系統因爲配置文件無法啓動時,可以直接修改虛擬機的文件。虛擬機磁盤文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺點就是不支持一些新的功能,如支持鏡像,zlib磁盤壓縮,AES加密等。要使用鏡像功能,磁盤格式必須爲qcow2。
- raw格式的話,速度稍微快點,在高版本的qemu-kvm中,幾乎不比qcow2的格式快,而qcow2格式節省空間,可動態增長,在公有云中廣泛使用,建議使用qcow2。所有有時候,我們需要將raw格式的磁盤轉換成qcow2格式
創建一個raw格式的磁盤文件
環境採用之前安裝的kvm環境,如果沒有需要先安裝KVM
- 通過終端實現創建磁盤文件
[root@localhost ~]# qemu-img create /kvm/data/vmtest01.img 8G
Formatting ‘/kvm/data/vmtest01.img’, fmt=raw size=8589934592
[root@localhost ~]# ll -h /kvm/data/vmtest01.img
-rw-r–r-- 1 root root 8.0G 11月 25 22:14 /kvm/data/vmtest01.img
[root@localhost ~]# qemu-img info /kvm/data/vmtest01.img #查看磁盤文件信息
image: /kvm/data/vmtest01.img
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 0 #實際空間大小
雖然通過ls命令看到磁盤爲8G,但是實際空間大小爲0,所以通過qemu-img創建的磁盤爲稀疏模式磁盤。
-通過終端創建新的虛擬機,名稱爲vmtest01
[root@localhost ~]# virt-install --name vmtest01 --vcpus 1 --ram 1024 --disk /kvm/data/vmtest01.img,format=raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/kvm/ios/CentOS-7.4-x86_64-DVD-1708.iso
參數解釋:
-os-type=linux //系統類型
–os-variant centos7.0 //系統髮型版本
–name vmtest01 //虛擬機命名
–ram 1024 //內存大小
–vcpus 1 //cpu核心數
–disk /opt/centos2.raw,format=raw,size=10 //虛擬磁盤選項
–location /iso/CentOS-7.3-x86_64-DVD-1611.iso //選取本地鏡像
–network //網絡類型
–graphics vnc,listen=0.0.0.0 //圖形化,監聽端口
–noautoconsole //vnc,不自動連接。
完成後使用virt-manager圖形管理界面進行安裝虛擬機,安裝時開啓虛擬機的網絡連接
kvm虛擬機的virsh日常管理和配置操作語法
查看虛擬機信息
語法格式:virsh dominfo <vmname>
[root@localhost ~]# virsh dominfo vmtest01
查看當前運行的虛擬機
語法格式:virsh list [--all]
不加任何參數,只顯示正在運行的虛擬機。
啓動和關閉虛擬機virsh <start|shutdown> <vmname>
通常使用vrish命令進行shutdown關機時可以使用ID號執行,不過有時候會出現使用id號關不了機的情況,所以儘量使用vmname虛擬機名稱來執行
有時候我們在使用shutdown的時候也關閉不了虛擬機,一般情況是虛擬機正在裝機或者虛擬機狀態處於暫停狀態
[root@localhost ~]# virsh shutdown vmtest01
錯誤:關閉域 vmtest01 失敗
錯誤:Requested operation is not valid: domain is not running
如出現上述報錯,我們使用虛擬機強制關機(其實相當於切斷電源)的語法進行關閉虛擬機
語法格式virsh destroy <vmname>
dumpxml備份虛擬機vmtest01
使用kvm創建完成的虛擬機只有兩個文件分別爲:磁盤文件、配置文件
配置文件存放路徑爲/etc/libvirt/qemu
創建一個目錄用來存放以後的備份數據
語法格式:virsh dumpxml <vmname> > <back-data>
[root@localhost ~]# mkdir /kvm/xmlconf_back
[root@localhost ~]# virsh dumpxml vmtest01 > /kvm/xmlconf_back/vmtest01-back.xml
[root@localhost ~]# ll /kvm/xmlconf_back/
總用量 4
-rw-r–r-- 1 root root 3621 11月 26 01:11 vmtest01-back.xml
刪除虛擬機vmtest01
語法格式:virsh undefine <vmname>
想要刪除虛擬機時只能是虛擬機關機狀態下執行
查看配置文件,已經被刪除。不過要注意的是,磁盤文件還是在的。
恢復虛擬機vmtest01
通過上圖可以發現,剛纔刪除的vmtest01已經恢復了,並且配置文件也恢復了
接下來我們通過edit命令修改虛擬機的配置文件,並且在使用的過程中自帶語法檢查
首先我們先將vmtest01的磁盤文件進行改名,讓其啓動失敗,然後使用edit編輯配置文件讓其正常運行
[root@localhost ~]# mv /kvm/data/vmtest01.img /kvm/data/vmtest-edit-01.img
[root@localhost ~]# virsh start vmtest01
錯誤:開始域 vmtest01 失敗
錯誤:Cannot access storage file ‘/kvm/data/vmtest01.img’ (as uid:107, gid:107): No such file or directory
[root@localhost ~]# virsh edit vmtest01
---省略部分代碼----
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm/data/vmtest-edit-01.img'/> #這裏填寫剛纔修改的路徑
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
---省略部分代碼----
再次啓動vmtest01,並且查看啓動狀態,可以看到vmtest01已經能夠正常運行了
將虛擬機vmtest01改名爲Centos7.4-01(Centos7.2版本以上才才能支持改名)
想要對虛擬機改名必須是虛擬機在關機狀態下執行
[root@localhost ~]# virsh domrename vmtest01 Centos7.4-01
錯誤:Requested operation is not valid: cannot rename active domain
[root@localhost ~]# virsh shutdown vmtest01
域 vmtest01 被關閉
[root@localhost ~]# virsh domrename vmtest01 Centos7.4-01
Domain successfully renamed
啓動虛擬機Centos7.4-01對其進行掛起和恢復操作
掛起(suspend)、恢復(resume)
設置kvm虛擬機開機自啓。
開機自動啓動:autostart,前提:systemctl enable libvirtd;
[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# virsh autostart vmtest02
域 vmtest02標記爲自動開始
[root@localhost ~]# virsh autostart Centos7.4-01
域 Centos7.4-01標記爲自動開始
設置開機自啓其實就是對虛擬機的配置文件進行了軟連接到開機自啓的目錄下
[root@localhost ~]# ll /etc/libvirt/qemu/autostart/
總用量 0
lrwxrwxrwx 1 root root 34 11月 26 02:15 Centos7.4-01.xml -> /etc/libvirt/qemu/Centos7.4-01.xml
lrwxrwxrwx 1 root root 30 11月 26 02:23 vmtest02.xml -> /etc/libvirt/qemu/vmtest02.xml
[root@localhost ~]# reboot #重啓測試,可以看到虛擬機變爲開機自啓了
取消開機自啓Centos7.4-01和vmtest02
語法格式:virsh autostart --disable <vmname>
[root@localhost ~]# virsh autostart --disable vmtest02
域 vmtest02取消標記爲自動開始
使用console連接虛擬機vmtest02,這裏連接成功後操作環境爲字符界面
首先連接虛擬機在終端上輸入grubby --update-kernel=ALL --args=“console=ttyS0” 支持通過console連接到虛擬機
[root@localhost ~]# virsh console vmtest02
連接到域 vmtest02
換碼符爲 ^]
localhost login: root
密碼:
Last login: Tue Nov 26 18:03:03 on :0
如果還是不行可以修改虛擬機grub菜單添加console=ttyS0並且重啓,進行測試
[root@localhost ~]# vim /boot/grub2/grub.cfg
使用宿主機vnc連接管理kvm裏面創建的linux虛擬機Centos7.4-01
要想使用vnc連接管理,需要kvm創建虛擬機時開啓vnc功能,這裏我們剛開始使用virsh-install安裝虛擬機已經開啓了nvc的功能了
接下來我們來查看虛擬機的vnc功能是否開啓
[root@localhost ~]# virsh vncdisplay Centos7.4-01
:0 #返回:0表示這臺虛擬機監聽的地址爲5900 ,:1表示監聽5901,後續以此類推
[root@localhost ~]# netstat -anput | grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 1771/qemu-kvm
使用宿主機連接kvm裏面的虛擬機Cen7.4-01,不過這裏vnc要輸入的IP地址爲安裝kvm的IP地址
使用宿主機的vnc-viewer進行連接,在連接時我們是不需要輸入密碼就可以連接到
接下來設置在連接的過程中輸入密碼進行連接
[root@localhost ~]# virsh edit Centos7.4-01
-----省略部分代碼-----
添加在graphics元素中添加passwd選項
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='123.com'>
<listen type='address' address='0.0.0.0'/>
</graphics>
-----省略部分代碼-----
修改完成後重啓kvm虛擬機Centos7.4-01,使用vnc進行測試