?
一、遠(yuǎn)程管理kvm虛機(jī)
(2)有些情況下,有一個(gè)要配置的地方。 因?yàn)?KVM(準(zhǔn)確說(shuō)是 Libvirt)默認(rèn)不接受遠(yuǎn)程管理,需要按下面的內(nèi)容配置被管理宿主機(jī)中的兩個(gè)文件:
vim /etc/default/libvirt-bin
start_libvirtd="yes"
libvirtd_opts="-d -l"
vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
unix_sock_group = "libvirtd"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"
然后重啟 Libvirtd 服務(wù)就可以遠(yuǎn)程管理了。
systemctl restart libvirt-bin
二、virsh命令行下管理虛擬機(jī)
virsh既有命令行模式,又有交互模式;在命令行直接輸入virsh就進(jìn)入交互模式,virsh后面跟命令參數(shù),則是命令行模式。
?。?)基礎(chǔ)命令:
virsh help:列出命令下的所有參數(shù)
virsh list help : 列出list命令下的所有參數(shù)
virsh list : 列出當(dāng)前宿主機(jī)處于運(yùn)行狀態(tài)的虛擬機(jī)
virsh list --all : 列出當(dāng)前宿主機(jī)上所有的虛擬機(jī)
virsh start 虛擬機(jī)名 : 開(kāi)啟某一臺(tái)虛擬機(jī)
virsh shutdown 虛擬機(jī)名 : 正常關(guān)閉某一臺(tái)虛擬機(jī)
virsh destroy 虛擬機(jī)名 : 強(qiáng)制關(guān)閉某一臺(tái)虛擬機(jī)
virsh autostart 虛擬機(jī)名 : 開(kāi)機(jī)自啟動(dòng)虛擬機(jī)
virsh autostart --disable 虛擬機(jī)名 : 關(guān)閉開(kāi)機(jī)自啟動(dòng)
virsh edit 虛擬機(jī)名 : 編輯某個(gè)虛擬機(jī)的配置文件
virsh pool-list : 列出存儲(chǔ)池
virsh define???????????????? 從一個(gè) XML 文件定義(但不開(kāi)始)一個(gè)域
virsh undefine???????????? 刪除一個(gè)虛機(jī)域
創(chuàng)建一個(gè)大小為9G的,格式為qcow2的磁盤(pán)鏡像[root@localhost ~]# qemu-img create -f qcow2 -o size=9G /var/lib/libvirt/images/test3.qcow2Formatting '/var/lib/libvirt/images/test3.qcow2', fmt=qcow2 size=9663676416 encryption=off cluster_size=65536 lazy_refcounts=off 查看磁盤(pán)信息[root@localhost ~]# qemu-img info /var/lib/libvirt/images/test3.qcow2 image: /var/lib/libvirt/images/test3.qcow2file format: qcow2 格式virtual size: 9.0G (9663676416 bytes) 大小disk size: 196K 使用大小cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
【注意】disk size: 196K 這里不是9G的原因是:這里采用了精簡(jiǎn)置備(主機(jī)像磁盤(pán)宣告所需空間大小,隨著使用慢慢增長(zhǎng),但是不能超過(guò)磁盤(pán)提供的最大空間,也就是用多少拿多少)
與之相對(duì)應(yīng)的就是厚置備(給多少就占多少空間),類(lèi)似與數(shù)據(jù)庫(kù)中的char和varchar;厚置備會(huì)浪費(fèi)資源。
?
克隆一臺(tái)虛擬機(jī)
[root@localhost ~]# virsh list --all Id 名稱(chēng) 狀態(tài)---------------------------------------------------- - 003 關(guān)閉 - test1 關(guān)閉[root@localhost ~]# yum install -y virt*[root@localhost ~]# virt-clone -o test1 -n test2 -f /var/lib/libvirt/images/test2.qcow2正在分配 'test2.qcow2' | 9.0 GB 00:00:15 成功克隆 'test2'。[root@localhost ~]# virsh list --all Id 名稱(chēng) 狀態(tài)---------------------------------------------------- - 003 關(guān)閉 - test1 關(guān)閉 - test2 關(guān)閉
三、kvm通過(guò) virsh console 進(jìn)入虛擬機(jī)
開(kāi)啟虛擬機(jī)的console功能就可以通過(guò)命令在遠(yuǎn)端進(jìn)入虛擬機(jī)了,這里就不贅述centos7以前的版本了,以下介紹centos7以后版本使用console進(jìn)入虛擬機(jī)。
?
①查看是否可以連接[root@localhost ~]# virsh console test1連接到域 test1換碼符為 ^]②在虛擬機(jī)上進(jìn)行以下操作并重啟[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"[root@localhost ~]# reboot
③在宿主機(jī)上進(jìn)入虛擬機(jī)[root@localhost ~]# virsh console test1連接到域 test1
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
localhost login: root
密碼:
Last login: Tue May 28 19:04:13 on tty1
?
四、kvm虛擬化透?jìng)?/strong>
KVM 虛擬化需要處理器對(duì)虛擬化技術(shù)的支持,當(dāng)我們需要進(jìn)行虛擬機(jī)嵌套虛擬機(jī)時(shí),我們需要讓虛擬機(jī)中處理器對(duì) VT 功能的支持達(dá)到透?jìng)鞯男Ч?br>
nested 虛擬機(jī)嵌套( kvm on kvm ):nested 技術(shù),簡(jiǎn)單的說(shuō),就是在虛擬機(jī)上跑虛擬機(jī)。
KVM 虛擬機(jī)嵌套和 VMWare 原理不同, VMWare第一層是用的硬件虛擬化技術(shù),第二層就是完全軟件模擬出來(lái)的,所以 VMWare 只能做兩層嵌套。 KVM 是將物理 CPU 的特性全部傳給虛擬機(jī),所有理論上可以嵌套 N 多層。
?
?
①查看一層虛擬機(jī)是否支持VT[root@localhost ~]# egrep "(vmx|svm)" /proc/cpuinfo [root@localhost ~]#
②在宿主機(jī)上為嵌套虛擬機(jī)做準(zhǔn)備---cpu虛擬化透?jìng)鱗root@localhost ~]# cat /etc/modprobe.d/kvm-nested.conf
options kvm_intel nested=1 #在宿主機(jī)上啟用kvm_intel的嵌套虛擬化功能,并使透?jìng)饔谰闷鹦?br>③重新加載kvm模塊[root@localhost ~]# modprobe -r kvm_intelmodprobe: FATAL: Module kvm_intel is in use.原因是虛擬機(jī)沒(méi)有關(guān)機(jī)[root@localhost ~]# modprobe -r kvm_intel[root@localhost ~]# lsmod | grep kvm[root@localhost ~]# modprobe kvm_intel[root@localhost ~]# lsmod | grep kvmkvm_intel 170181 0 kvm 554609 1 kvm_intelirqbypass 13503 1 kvm
④驗(yàn)證是否加載成功[root@localhost ~]# cat /sys/module/kvm_intel/parameters/nested Y #Y表示虛擬化透?jìng)鞴δ荛_(kāi)啟
⑤編輯需要做虛擬化透?jìng)鞯奶摂M機(jī)配置文件[root@localhost ~]# virsh edit 003 <cpu mode='host-passthrough'/>
⑥在虛擬機(jī)中查看cpu是否透?jìng)鞒晒?br>[root@localhost ~]# lsmod | grep kvm
kvm_intel???????????? 170181? 0
kvm?????????????????? 554609? 1 kvm_intel
irqbypass????????????? 13503? 1 kvm
⑦在一層虛擬機(jī)中查看是否支持虛擬化
[root@localhost ~]# grep vmx /proc/cpuinfo
flags?? ??? ?: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt
?
五、kvm存儲(chǔ)虛擬化
? 1.介紹
KVM 的存儲(chǔ)虛擬化是通過(guò)存儲(chǔ)池(Storage Pool)和卷(Volume)來(lái)管理的。
Storage Pool 是宿主機(jī)上可以看到的一片存儲(chǔ)空間,可以是多種型;
Volume 是在 Storage Pool 中劃分出的一塊空間,宿主機(jī)將 Volume 分配給虛擬機(jī),Volume 在虛擬機(jī)中看到的就是一塊硬盤(pán)。
2.目錄類(lèi)型的storage pool
文件目錄是最常用的 Storage Pool 類(lèi)型。KVM 將宿主機(jī)目錄 /var/lib/libvirt/images/ 作為默認(rèn)的 Storage Pool
Volume 是該目錄下面的文件,一個(gè)文件就是一個(gè) Volume。
3.創(chuàng)建volume卷,
在虛擬機(jī)查看添加的卷
?
4.創(chuàng)建存儲(chǔ)池pool
?
?kvm默認(rèn)/var/lib/libvirt/images目錄為存儲(chǔ)池。
那 KVM 是怎么知道要把 /var/lib/libvirt/images 這個(gè)目錄當(dāng)做默認(rèn) Storage Pool 的呢?
實(shí)際上 KVM 所有可以使用的 Storage Pool 都定義在宿主機(jī)的 /etc/libvirt/storage 目錄下,每個(gè) Pool 一個(gè) xml 文件,
存儲(chǔ)池的配置文件存放的位置
[root@localhost ~]# cd /etc/libvirt/storage
[root@localhost storage]# cat default.xml <!--WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BEOVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh pool-edit defaultor other application using the libvirt API.--><pool type='dir'> <name>default</name> <uuid>623b2eaa-3f05-4c50-b5b8-bdd52f16a936</uuid> <capacity unit='bytes'>0</capacity> <allocation unit='bytes'>0</allocation> <available unit='bytes'>0</available> <source> </source> <target> <path>/var/lib/libvirt/images</path> </target></pool>
虛擬機(jī)的配置文件存放的位置
[root@localhost qemu]# ls
003.xml? networks? test1.xml? test2.xml
[root@localhost qemu]# pwd
/etc/libvirt/qemu
六、虛擬機(jī)的刪除與恢復(fù)
①先將虛擬機(jī)的配置文件復(fù)制下來(lái),以防以后有用到的時(shí)候
[root@localhost qemu]# cp -a test1.xml /root
②刪除虛擬機(jī)[root@localhost qemu]# virsh undefine test1域 test1 已經(jīng)被取消定義[root@localhost qemu]# virsh list --all Id 名稱(chēng) 狀態(tài)---------------------------------------------------- 5 003 running - test2 關(guān)閉[root@localhost ~]# ls test1.xml
③磁盤(pán)文件還保存在/var/lib/libvirt/images下[root@localhost ~]# vim test1.xml <source file='/var/lib/libvirt/images/test1.qcow2'/>
④恢復(fù)虛擬機(jī),重新定義虛擬機(jī)配置文件即可
[root@localhost ~]# virsh define test1.xml
定義域 test1(從 test1.xml)
⑤查看已恢復(fù)
[root@localhost ~]# virsh list --all
?Id??? 名稱(chēng)???????????????????????? 狀態(tài)
----------------------------------------------------
?-???? 003??????????????????????????? 關(guān)閉
?-???? test1????????????????????????? 關(guān)閉
?-???? test2????????????????????????? 關(guān)閉
七、冷遷移與熱遷移
冷遷移:機(jī)器關(guān)機(jī)狀態(tài)進(jìn)行遷移
①將虛擬機(jī)的配置文件和磁盤(pán)文件發(fā)送到遠(yuǎn)程主機(jī)上
[root@localhost ~]# scp 001.xml 192.168.42.140:/rootThe authenticity of host '192.168.42.140 (192.168.42.140)' can't be established.ECDSA key fingerprint is a9:9d:91:68:6c:88:bd:b6:10:1d:cf:df:5e:5a:8f:bb.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.42.140' (ECDSA) to the list of known hosts.root@192.168.42.140's password: 001.xml 100% 4439 4.3KB/s 00:00[root@localhost ~]# vim 001.xml [root@localhost ~]# cd /var/lib/libvirt/images/[root@localhost images]# ls001.qcow2 [root@localhost images]# scp 001.qcow2 192.168.42.140:/rootroot@192.168.42.140's password:
001.qcow2????????????????????????????????????????????????????????????????????????????? 100% 9218MB? 27.4MB/s?? 05:37
②在遠(yuǎn)程主機(jī)查看配置文件并重新定義虛擬機(jī),查看即可
[root@localhost ~]# ls
001.qcow2?
001.xml???
[root@localhost ~]# virsh list --all
?Id??? 名稱(chēng)???????????????????????? 狀態(tài)
----------------------------------------------------
?-???? 003??????????????????????????? 關(guān)閉
?-???? test1????????????????????????? 關(guān)閉
?-???? test2????????????????????????? 關(guān)閉
[root@localhost ~]# virsh define 001.xml
定義域 001(從 001.xml)
[root@localhost ~]# virsh list --all
?Id??? 名稱(chēng)???????????????????????? 狀態(tài)
----------------------------------------------------
?-???? 001??????????????????????????? 關(guān)閉
?-???? 003??????????????????????????? 關(guān)閉
?-???? test1????????????????????????? 關(guān)閉
?-???? test2????????????????????????? 關(guān)閉
熱遷移:機(jī)器在開(kāi)機(jī)狀態(tài)進(jìn)行遷移
來(lái)源:http://www.icode9.com/content-4-213751.html聯(lián)系客服