virsh 既有命令行模式,也有交互模式,在命令行直接輸入 virsh 就進(jìn)入交互模式, virsh 后面跟命令參數(shù),則是命令行模式;
(1)基礎(chǔ)操作 --- 命令行下管理虛擬機(jī)
virsh list 列出當(dāng)前宿主機(jī)上處于運(yùn)行狀態(tài)的虛擬機(jī)
virsh list --all 列出當(dāng)前宿主機(jī)上所有的虛擬機(jī)
virsh start vm1 ?。ㄌ摂M機(jī)name) 開啟某一臺(tái)虛擬機(jī)
virsh shutdown vm1 (虛擬機(jī)name) 正常關(guān)閉一臺(tái)虛擬機(jī)
virsh destroy vm1 強(qiáng)制關(guān)閉某一臺(tái)虛擬機(jī)
virsh autostart vm1 開機(jī)自啟動(dòng)虛擬機(jī)vm1
virsh autostart --disable vm1 關(guān)閉開機(jī)自啟動(dòng)
virsh edit vm1 編輯某個(gè)虛擬機(jī)的配置文件
virsh pool-list 列出存儲(chǔ)池
2)創(chuàng)建新磁盤
qemu-img create -f qcow2(指定磁盤格式) -o size=9G(指定大小) /var/lib/libvirt/images/haha.qcow2(路徑和名稱)
/var/lib/libvirt/image/為磁盤鏡像的默認(rèn)路徑。
注意注定磁盤大小的時(shí)候不能有空格,否則報(bào)錯(cuò)
[root@localhost images]# qemu-img create -f qcow2 -o size =9G /var/lib/libvirt/images/haha.qcow2
qemu-img: Invalid image size specified! You may use k, M, G, T, P or E suffixes for
qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes.
[root@localhost images]# qemu-img create -f qcow2 -o size=9G /var/lib/libvirt/images/haha.qcow2
Formatting '/var/lib/libvirt/images/haha.qcow2', fmt=qcow2 size=9663676416 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost images]# qemu-img info haha.qcow2
3)查看磁盤情況
qemu-img info 磁盤名
[root@localhost images]# qemu-img info /var/lib/libvirt/images/haha.qcow2
image: haha.qcow2
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 196K #實(shí)際占用磁盤196k,最高可用9G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
4)命令行下創(chuàng)建 && 管理虛擬機(jī)
Virt-install: 命令行下創(chuàng)建虛擬機(jī)的命令,不過在它后面需要跟上很多的參數(shù)
--name: 虛擬機(jī)的名字。
--disk Location: 磁盤映像的位置。
--graphics : 怎樣連接 VM ,通常是 SPICE 。
--vcpu : 虛擬 CPU 的數(shù)量。
--ram : 以兆字節(jié)計(jì)算的已分配內(nèi)存大小。
--location : 指定安裝源路徑
--network : 指定虛擬網(wǎng)絡(luò),通常是 virbr0 或者自己設(shè)定的 br0
例如:創(chuàng)建一個(gè)磁盤
路徑為/var/lib/libvirt/image/
指定cpu內(nèi)存為1g
cpu數(shù)量為1
以spice方式連接vm
執(zhí)行虛擬網(wǎng)絡(luò)為自設(shè)網(wǎng)橋br0
1 | virt-install --name=test --disk path=/ var /lib/libvirt/image/test.qcow2 --ram=1024 --vcpus=1 --graphics spice --location=/export/download/software/iso/CentOS-7.3-x86_64-DVD.iso --network bridge=br0 |
注意磁盤路徑與磁盤安裝源路徑的區(qū)別。
由于使用virsh命令創(chuàng)建虛擬機(jī)同樣還需要在圖形化界面操作,所以用的不多,了解就行。
5)其余重要的一些virsh命令
virsh define xx.xml 從一個(gè) XML 文件定義、恢復(fù)(但不開始)一個(gè)域
virsh undefine xx 刪除一個(gè)虛機(jī)域
定義:在宿主機(jī)上直接能夠連通創(chuàng)建的虛擬機(jī)并執(zhí)行操作,功能類似于ssh。
前提:新安裝一臺(tái)虛擬機(jī)后,是無法通過virsh console 命令連入虛擬機(jī)中的,這時(shí)我們需要開啟虛擬機(jī)的console功能。
我們這里以centos7以上的版本做說明:
(1)在被連接的虛機(jī)里執(zhí)行
1 | [root@localhost ~]# grubby --update-kernel=ALL --args= "console=ttyS0" |
(2)重啟此機(jī)
1 | [root@localhost ~]# reboot |
3)在宿主機(jī)上執(zhí)行
[root@localhost ~]# virsh console vm5
連接到域 vm5
換碼符為 ^] #ctrl ] 退出
1、一直hang在這個(gè)狀態(tài)無法連接上虛擬機(jī),這是因?yàn)樗拗鳈C(jī)通過ttyss0連接虛擬機(jī),但被連接主機(jī)沒有設(shè)置或者沒有設(shè)置成功。
2、或者grubby命令沒有下載,yum安裝后再次嘗試
3、VNC Viewer 遠(yuǎn)程管理kvm主機(jī)
前提是宿主機(jī)內(nèi)的虛擬機(jī)狀態(tài)為開啟
(1)在window中安裝VNC Viewer 軟件,一直點(diǎn)下一步就行。
2 )輸入宿主機(jī)的ip地址。
點(diǎn)擊Continue,即可連接里面的虛機(jī)
KVM 虛擬化需要處理器對(duì)虛擬化技術(shù)的支持,當(dāng)我們需要進(jìn)行虛擬機(jī)嵌套虛擬機(jī)時(shí),我們需要讓虛擬機(jī)中處理器對(duì) VT 功能的支持達(dá)到透傳的效果。
nested 虛擬機(jī)嵌套( kvm on kvm ):nested 技術(shù),簡單的說,就是在虛擬機(jī)上跑虛擬機(jī)。
KVM 虛擬機(jī)嵌套和 VMWare 原理不同, VMWare第一層是用的硬件虛擬化技術(shù),第二層就是完全軟件模擬出來的,所以 VMWare 只能做兩層嵌套。 KVM 是將物理 CPU 的特性全部傳給虛擬機(jī),所有理論上可以嵌套 N 多層。
1、查看一層客戶端是否支持 VT
grep vmx(svm) /proc/cpuinfo
如果查詢未果,證明一層 KVM 的虛擬機(jī),并未將宿主機(jī)處理器的 VT 功能成功透傳。
因此我們需要透傳。
2、在物理服務(wù)器上(宿主機(jī))為嵌套虛擬機(jī)做準(zhǔn)備 --- CPU 虛擬化透傳
注意查看你的虛擬機(jī)架構(gòu)支持的是amd還是intel
1 2 | [root@localhost ~]# cat /etc/modprobe.d/kvm-nested.conf options kvm_amd nested=1 |
3、在宿主機(jī)啟用 kvm_amd 模塊的嵌套虛擬化功能,并且使透傳永久有效
(2)重新加載 kvm 模塊
# modprobe -r kvm_amd -r參數(shù):remove掉kvm_amd模塊
# modprobe kvm_amd 加載kvm_amd模塊
4、驗(yàn)證是否加載成功
#cat /sys/module/kvm_intel/parameters/nested
1或者y證明加載成功。
0和N或者沒有返回值證明沒加載成功。
重新加載modprobe模塊或者查看架構(gòu)是支持intel還是amd來稍微更改下模塊和目錄。
1 2 | [root@localhost ~]# cat /sys/module/kvm_amd/parameters/nested 1 |
5、編輯需要做虛擬化透傳的虛擬機(jī)的配置文件
更改下面綠綠的一行即可。
host-passthrough 直接將物理 CPU 暴露給虛擬機(jī)使用,在虛擬機(jī)上完全可以看到的就是物理 CPU的型號(hào)(我們前面介紹過kvm透傳就是將宿主機(jī)的cpu特性全部傳給被透主機(jī))
root@localhost ~]# virsh edit vm4
<domain type='kvm'>
<name>vm4</name>
<uuid>98c5d257-6b75-493b-91db-66589b582733</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'/> #刪除下面兩行
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
6、進(jìn)入透傳虛擬機(jī)中查看cpu是否透傳成功
[root@localhost ~]# lsmod | grep kvm
kvm_amd 69849 0
kvm 566340 1 kvm_amd
irqbypass 13503 1 kvm
7、在被透傳虛擬機(jī)中查看cpu是否支持虛擬化
次數(shù)大于0證明透傳成功,可以開始虛擬機(jī)嵌套了。
svm是支持amd架構(gòu)
vmx支持intel架構(gòu)
[root@localhost ~]# egrep svm /proc/cpuinfo | wc -l
1
聯(lián)系客服