KVM libvirt使用虛擬機(jī)、磁盤、快照
文章目錄
基本命令
其中kylin01表機(jī)器名稱,執(zhí)行命令需要在宿主機(jī)上執(zhí)行
重啟:virsh reboot kylin01
開(kāi)機(jī):virsh start kylin01
開(kāi)機(jī)自啟:virsh authostart kylin01
取消開(kāi)機(jī)自啟:virsh authostart --disable kylin01
掛起:virsh suspend kylin01
恢復(fù):virsh resume kylin01
控制臺(tái):virsh console kylin01
強(qiáng)制關(guān)機(jī): virsh destroy kylin01
普通關(guān)機(jī)(這個(gè)不好用,建議用destroy):
virsh shutdown kylin01
編輯配置(不建議使用vi直接修改xml文件):
virsh edit kylin01
查看所有虛擬機(jī),不帶all只能看到開(kāi)機(jī)的,帶了all可以查看所有:
virsh list [--all]
查看詳細(xì)信息,包括文件類型
virsh dominfo kylin01
查看版本號(hào):virsh verison
備份/導(dǎo)出配置文件,隨意備份到什么地方
virsh dumpxml kylin01 > /tmp/kylin01.xml
查看備份文件
virsh dumpxml kylin01
解除虛擬機(jī)在list中標(biāo)記
virsh undefine kylin01
恢復(fù)kylin01,需要先備份
virsh define /tmp/kylin01.xml
相關(guān)文件位置,也可以自行創(chuàng)建
# 自帶的xml位置,每個(gè)虛擬機(jī)都有自己的xml文件
/etc/libvirt/qemu/
存放快照的目錄
/var/lib/libvirt/qemu/
存放磁盤的位置
/var/lib/libvirt/imges
# 自定義克隆后虛擬機(jī)存放的位置
/virt
# 本文中自定義存放增加的磁盤的位置
/images
磁盤格式說(shuō)明
kvm磁盤鏡像常見(jiàn)的格式主要有raw和qcow2兩種格式,一般默認(rèn)是raw,也是使用virt-install安裝時(shí)的默認(rèn)格式。
以下兩種圖片對(duì)格式有說(shuō)明,鏈接來(lái)自于http://www.361way.com/kvm-img-format/3167.html,不再?gòu)?fù)述:


也有表格對(duì)比的圖片,來(lái)源https://blog.csdn.net/majiangNB/article/details/81672911:

創(chuàng)建虛擬機(jī)
這里有個(gè)圖片文檔,還蠻不錯(cuò)
1、https://blog.csdn.net/qq_36345864/article/details/104828420
2、有說(shuō)明具體步驟:http://chengyaogen.blog.chinaunix.net/uid-30272819-id-5166021.html
clone虛擬機(jī)
kylinBase為克隆的虛擬機(jī),kylin01為克隆后的虛擬機(jī):
# 先關(guān)閉kylinBase
virsh destroy kylinBase
# clone,如果想要做快照,生成的文件名后綴用qcow2,raw不支持快照
virt-clone -o kylinBase -n kylin01 -f /virt/kylin01.raw
其中,參數(shù)說(shuō)明:
-o: --origin,克隆的機(jī)器,這就需要自己備一個(gè)模板
-n: --name,克隆后的機(jī)器的名稱
-f: --file,克隆后端機(jī)器存放的目錄
clone后需要改IP,kylin01的IP和kylinBase是一樣的,由于kylinBase已經(jīng)關(guān)機(jī),那么訪問(wèn)該IP進(jìn)入的是kylin01。
以下兩種是我常用的兩種辦法:
1、通過(guò)訪問(wèn)kylinBase的IP+9090端口訪問(wèn)web,在左側(cè)欄找到終端,正常修改后重啟network服務(wù);
2、一種是通過(guò)VNC VIewer軟件連接,訪問(wèn)ip為宿主機(jī)的ip加上端口,這個(gè)端口需要在kylin01的xml配置文件里修改。但是不推薦使用vim去改,而推薦virsh edit kylin01的方式去修改
在文件的最后幾行找到,將autoport改為no,將端口改成我們可以使用的即可
<graphics type='vnc' port='5921' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
然后啟動(dòng)虛擬機(jī)
virsh start kylin01
個(gè)人建議是最好配置端口,有的時(shí)候因?yàn)橐恍┰驎?huì)在本地?zé)o法通過(guò)kylin01的IP訪問(wèn),比如防火墻和路由的關(guān)系,只能訪問(wèn)宿主機(jī),而不能訪問(wèn)虛擬機(jī)。
刪除虛擬機(jī)
1、關(guān)閉需要?jiǎng)h除的虛擬機(jī)
virsh destroy kylin01
2、解除虛擬機(jī)在list中標(biāo)記,建議帶上nvram參數(shù),可以刪除配置
virsh undefine kylin01 [--nvram]
3、手動(dòng)刪除/virt下的raw配置
rm -rf /virt/kylin01.raw
4、刪除磁盤,建議創(chuàng)建磁盤時(shí)命名格式類似kylin01-1這種,方便區(qū)分也方便刪除
rm -rf /images/kylin01*
這時(shí)kylin01已經(jīng)是干凈的,可以直接重新clone了
添加、刪除磁盤
一般kvm常用的有raw和qcow2兩種格式,一般默認(rèn)是raw,但它不支持snapshot,即快照,但qcow2支持。
1、關(guān)機(jī)
virsh destroy kylin01
2、創(chuàng)建一個(gè)raw,后綴也可以是raw
qemu-img create -f raw /images/kylin01-1.img 10G
如果是qcow2
qemu-img create -f qcow2 /images/kylin01-1.qcow2 10G
3、添加磁盤到系統(tǒng)中,映射到如sdg,此時(shí)是關(guān)機(jī)狀態(tài),如果想在運(yùn)行時(shí)添加,則后面加個(gè)live參數(shù)
virsh attach-disk kylin01 /images/kylin01-1.img sdg --cache none --subdriver raw --config [--live]
4、attach-disk能即時(shí)生效,但重啟后就失效,所以修改配置,示例放在稍后
virsh edit kylin01
5、啟動(dòng)
virsh start kylin01
刪除磁盤,主要指定虛擬機(jī)、磁盤名
virsh detach-disk kylin01 sdg --config [--live]
attach-disk和detach-disk參數(shù)如下:
--persistent 讓實(shí)時(shí)更改更改持久,立即生效
--config 影響下一次引導(dǎo),之后一直生效
--live 影響運(yùn)行的域,重啟失效
--current 影響當(dāng)前域
添加磁盤后在配置中默認(rèn)生成如下:
<disk type='file' device='disk'>
<driver name='qemu' type='img' cache='none'/>
<source file='/images/kylin01-1.img'/>
<target dev='sdf' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
我們需要將bus由scsi修改為virtio,刪除
行,:wq退出保存后會(huì)自動(dòng)生成type為pci的行,這段無(wú)需手動(dòng)修改:<disk type='file' device='disk'>
<driver name='qemu' type='img' cache='none'/>
<source file='/images/kylin01-1.img'/>
<target dev='sdf' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</disk>
創(chuàng)建、刪除內(nèi)部快照
內(nèi)部快照不支持raw,需要轉(zhuǎn)換成qcow2。一般來(lái)說(shuō)建議使用外部快照,這里因?yàn)闆](méi)測(cè)過(guò),所以請(qǐng)參考鏈接4。
# 帶-as是可以指定新生成快照名的,如果沒(méi)有-as則不需要第二個(gè)參數(shù)
virsh snapshot-create-as kylin01 kylin01_clone
# 這種方式生成的快照名是數(shù)字
virsh snapshot-create kylin01
查看kylin01的快照狀態(tài)配置文件
virsh snapshot-current kylin01
查看kylin01的快照信息
virsh snapshot-list kylin01
恢復(fù)快照,若要在不停機(jī)時(shí)回滾需要加force參數(shù)
virsh snapshot-revert [--force] kylin01 kylin01_clone
刪除快照
virsh snapshot-delete kylin01 kylin01_clone
注意事項(xiàng):
1、生成的快照目錄`/var/lib/libvirt/qemu`,因此刪除時(shí)還需要手動(dòng)刪除該目錄下對(duì)應(yīng)快照;
2、恢復(fù)前最后關(guān)閉虛擬機(jī),也可以在開(kāi)啟時(shí)回滾,但有新數(shù)據(jù)寫入時(shí)還是有問(wèn)題。需要加--force,不加會(huì)提示
error: revert requires force: Target controller type ide does not match source usb;
3、如果創(chuàng)建時(shí)報(bào)錯(cuò),則說(shuō)明raw不支持內(nèi)部快照,需要轉(zhuǎn)換格式:
error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
轉(zhuǎn)換格式
轉(zhuǎn)換格式,轉(zhuǎn)換后需要改配置里的type和file的名字后綴,-f指源格式,-O指目標(biāo)格式,所以也可以相互轉(zhuǎn)換
qemu-img convert -f raw -O qcow2 /imges/kylin01-1.img /imges/kylin01-1.qcow2
查看磁盤鏡像格式
qemu-img info /imges/kylin01-1.img
查看信息如
[root@localhost images]# qemu-img info kylin01.img
image: kylin01.raw
file format: raw
virtual size: 50G (53687091200 bytes)
disk size: 16G
此外,還需要修改配置,如type由img改為qcow2,并將file的后綴改為qcow2
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/images/kylin01-1.qcow2'/>
<target dev='sdf' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</disk>
但轉(zhuǎn)換了格式之后,創(chuàng)建內(nèi)部快照還是有可能報(bào)錯(cuò),所以可以嘗試外部快照
internal snapshot of a VM with pflash based firmware are not supported
意思是不支持具有基于pflash固件的VM的內(nèi)部快照
其他問(wèn)題
1、如果偶爾出現(xiàn)VNC通過(guò)端口能訪問(wèn)子機(jī),但是宿主機(jī)和子機(jī)之間無(wú)法連接,在排除沒(méi)有搭建橋接的前提下,可以重啟防火墻服務(wù)firewalld,但最好先start再stop,不要直接執(zhí)行restart。
2、如果在重啟了宿主機(jī)后發(fā)現(xiàn),宿主機(jī)內(nèi)能ping通虛擬機(jī),但是從虛擬機(jī)內(nèi)無(wú)法ping通宿主機(jī)及外網(wǎng)。可以用VNC通過(guò)端口連接訪問(wèn)虛擬機(jī),但是xshell無(wú)法連上,從里往外ping宿主機(jī)及相同其他網(wǎng)段都無(wú)法ping通,可以參考鏈接3。簡(jiǎn)單解釋來(lái)說(shuō),就是防火墻被關(guān)之后,路由表就沒(méi)有了,無(wú)法進(jìn)行IP轉(zhuǎn)發(fā)。
3、原本試圖通過(guò)快照來(lái)做環(huán)境恢復(fù),就像VMWare上創(chuàng)建虛擬機(jī)做的那樣,但是后來(lái)發(fā)現(xiàn)這個(gè)快照主要是用來(lái)備份數(shù)據(jù)的。假設(shè)你已經(jīng)創(chuàng)建了虛擬機(jī)子機(jī),你一通過(guò)命令恢復(fù)就會(huì)提示你已存在,如果不存在子機(jī)又會(huì)提示你沒(méi)有這個(gè)子機(jī)。也就是說(shuō),恢復(fù)以子機(jī)存在為前提。
4、Ubuntu橋接配置可以參考我另一篇:https://blog.csdn.net/qq_28304687/article/details/116132295。
5、虛擬機(jī)進(jìn)入pause狀態(tài),無(wú)法resume:https://blog.csdn.net/qq_28304687/article/details/116302027
可參考鏈接
1、內(nèi)部快照:http://www.361way.com/internal-snapshot/3179.html
2、https://blog.csdn.net/qq_36345864/article/details/104828420
3、解決KVM虛擬機(jī)不能連外網(wǎng)的問(wèn)題:https://blog.csdn.net/u010099177/article/details/107426372
4、內(nèi)部快照和外部快照:https://www.jianshu.com/p/4f1a1ce7c6a8
5、圖片文檔:https://blog.csdn.net/qq_36345864/article/details/104828420
6、https://blog.csdn.net/majiangNB/article/details/81672911
7、http://chengyaogen.blog.chinaunix.net/uid-30272819-id-5166021.html
8、Ubuntu配置網(wǎng)橋:https://blog.csdn.net/qq_28304687/article/details/116132295
9、https://blog.csdn.net/weixin_34380296/article/details/85822000
本文來(lái)自博客園,作者:蘇酒酒,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/sujiujiu/p/15370011.html


浙公網(wǎng)安備 33010602011771號(hào)