第四章:KVM使用進(jìn)階
比如ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
https://launchpad.net/cirros/+download //可以下載別人已經(jīng)安裝好的鏡像文件 ,就是一個已經(jīng)安裝好的ios
很小,也就9M
qemu-kvm -name "cirros" -smp 4,cores=2,socket=4 -m 512 -drive file=/root/cirros-0.3.0-x86_64-disk.img,media=disk -net nic -net tap,ifname=vnet0,downscript=no -nographic
//不使用圖形化界面
沒有圖形化界面的時候,也可以使用monitor //ctrl +1 ,ctrl +2在
Ctrl +a ,c //在control和monitor之間進(jìn)行切換
Ctrl+a ,h /顯示幫助信息
//ctrl +a ,c :infor 查看具體硬件信息
//help info查看幫助信息
//控制界面,info信息
:info kvm
:info name
:info status
:info mem
:info tlb
:info cpus
:info vnc
:info mice //查看幫助信息
:info history
// help 則可以查看所有的幫助信息,包括所有的
Savevm :實(shí)現(xiàn)掛起
Loadvm:載入快照
Stop:停止當(dāng)前emulation進(jìn)程
C|conn :繼續(xù)使用當(dāng)前進(jìn)程
Device_add : --add device :添加設(shè)備
Device_del :刪除設(shè)備
Migrate:遷移設(shè)備 //migrate:遷移
遷移://把A上的遷移到B上去
兩個hypervisor之間實(shí)現(xiàn)遷移//A上運(yùn)行一個hypervisor,B想要實(shí)施遷移,也要啟動一個虛擬機(jī)實(shí)例
//B啟動的時候需要說明incoming機(jī)制,他不會啟動起來,會等到其他其他虛擬機(jī)實(shí)例遷移到這里來
A上使用migrate,B上使用incoming,//傳遞完成后,A也就結(jié)束了
A和B應(yīng)該在同一個網(wǎng)段內(nèi)
Ha,Hb主機(jī)
Hb:
Qemu-kvm .... -incoming tcp:0:6767 //6767是一個tcp,0表示允許任意其他主機(jī)發(fā)起連接請求指令,進(jìn)行遷移的
Ha:
Monitor: migrate tcp:10.0.0.1:6767 //遷移的是內(nèi)存中的數(shù)據(jù)
登錄進(jìn)去后:
Cat /proc/sysinfo :查看cpu信息,默認(rèn)是qemu的cpu
Qemu-kvm -cpu ?//可以啟動的時候指定cpu類型,
Qemu-kvm -cpu host //使用主機(jī)的cpu
Qemu-kvm的其它的用到的參數(shù):
動態(tài)遷移時用到的選項:-incoming tcp:0:PORT //使用的端口
讓qemu-kvm進(jìn)程運(yùn)行在后臺:-daemonize
開啟USB總線:-usb
guest os為windows時,-usb -usbdevice tablet //使用usb鼠標(biāo)
打開KVM的支持:
-enable-kvm //打開kvm支持,qemu-kvm默認(rèn)就啟用了此選項
打開聲音設(shè)備:
qemu-kvm -soundhw ?
指定存儲設(shè)備:
-iSCSI //使用iscsi協(xié)議,直接關(guān)聯(lián)到某設(shè)備協(xié)議的話
通過URL指定使用的iscsi設(shè)備// iscsi://
Qemu-kvm -drive file=iscsi://tgt.magedu.com/iqn.2014-05.com.magedu.tg1/1 //使用iscsi設(shè)備作為存儲設(shè)備
Qemu-kvm -iscsi initiator-name= -drive file=iscsi:/tgt.magedu.com/iqn.2014-05.com.magedu.tgt1/1
指定使用bios文件:
-bios /path/to/some_bios_program //指定bios文件
-initrd
-append:向內(nèi)核傳遞的參數(shù)列表
Libvirt:工具實(shí)現(xiàn)虛擬機(jī)管理:
Virt-manger,virt-install,virsh //一般通過virsh-install創(chuàng)建虛擬機(jī),然后通過virsh去使用模板去創(chuàng)建其他主機(jī)
Libvirt使用的安裝的話娿
Virst-install工具的使用
virt-install是一個命令行工具,它能夠?yàn)镵VM、Xen或其它支持libvrit API的hypervisor創(chuàng)建虛擬機(jī)并完成GuestOS安裝;此外,它能夠基于串行控制臺、VNC或SDL支持文本或圖形安裝界面。安裝過程可以使用本地的安裝介質(zhì)如CDROM,也可以通過網(wǎng)絡(luò)方式如NFS、HTTP或FTP服務(wù)實(shí)現(xiàn)。對于通過網(wǎng)絡(luò)安裝的方式,virt-install可以自動加載必要的文件以啟動安裝過程而無須額外提供引導(dǎo)工具。當(dāng)然,virt-install也支持PXE方式的安裝過程,也能夠直接使用現(xiàn)有的磁盤映像直接啟動安裝過程。
virt-install命令有許多選項,這些選項大體可分為下面幾大類,同時對每類中的常用選項也做出簡單說明。
◇一般選項:指定虛擬機(jī)的名稱、內(nèi)存大小、VCPU個數(shù)及特性等;
-n NAME, --name=NAME:虛擬機(jī)名稱,需全局惟一;
//virst-install安裝好后,在etc/libvt目錄會生成該虛擬機(jī)的配置文件,而且該配置文件將來被這個虛擬機(jī)永遠(yuǎn)使用
//除非刪除,qemu-kvm安裝一個虛擬機(jī),關(guān)機(jī)后,重啟需要重新制定參數(shù)
-r MEMORY, --ram=MEMORY:虛擬機(jī)內(nèi)在大小,單位為MB;
--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU個數(shù)及相關(guān)配置;
--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?來獲取支持的CPU模式;
◇安裝方法:指定安裝方法、GuestOS類型等;
-c CDROM, --cdrom=CDROM:光盤安裝介質(zhì);
-l LOCATION, --location=LOCATION:安裝源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;
--pxe:基于PXE完成安裝;
--livecd: 把光盤當(dāng)作LiveCD;
--os-type=DISTRO_TYPE:操作系統(tǒng)類型,如linux、unix或windows等;
--os-variant=DISTRO_VARIANT:某類型操作系統(tǒng)的變體,如rhel5、fedora8等;
-x EXTRA, --extra-args=EXTRA:根據(jù)--location指定的方式安裝GuestOS時,用于傳遞給內(nèi)核的額外選項,例如指定kickstart文件的位置,--extra-args "ks=http://172.16.0.1/class.cfg"
--boot=BOOTOPTS:指定安裝過程完成后的配置選項,如指定引導(dǎo)設(shè)備次序、使用指定的而非安裝的kernel/initrd來引導(dǎo)系統(tǒng)啟動等 ;例如:
--boot cdrom,hd,network:指定引導(dǎo)次序;
--boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定啟動系統(tǒng)的內(nèi)核及initrd文件;
◇存儲配置:指定存儲類型、位置及屬性等;
--disk=DISKOPTS:指定存儲設(shè)備及其屬性;格式為--disk /some/storage/path,opt1=val1,opt2=val2等;常用的選項有:
device:設(shè)備類型,如cdrom、disk或floppy等,默認(rèn)為disk;
bus:磁盤總結(jié)類型,其值可以為ide、scsi、usb、virtio或xen;
perms:訪問權(quán)限,如rw、ro或sh(共享的可讀寫),默認(rèn)為rw;
size:新建磁盤映像的大小,單位為GB;
cache:緩存模型,其值有none、writethrouth(緩存讀)及writeback(緩存讀寫);
format:磁盤映像格式,如raw、qcow2、vmdk等;
sparse:磁盤映像使用稀疏格式,即不立即分配指定大小的空間;
--nodisks:不使用本地磁盤,在LiveCD模式中常用;
◇網(wǎng)絡(luò)配置:指定網(wǎng)絡(luò)接口的網(wǎng)絡(luò)類型及接口屬性如MAC地址、驅(qū)動模式等;
-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:將虛擬機(jī)連入宿主機(jī)的網(wǎng)絡(luò)中,其中NETWORK可以為:
bridge=BRIDGE:連接至名為“BRIDEG”的橋設(shè)備;
network=NAME:連接至名為“NAME”的網(wǎng)絡(luò);
其它常用的選項還有:
model:GuestOS中看到的網(wǎng)絡(luò)設(shè)備型號,如e1000、rtl8139或virtio等;
mac:固定的MAC地址;省略此選項時將使用隨機(jī)地址,但無論何種方式,對于KVM來說,其前三段必須為52:54:00;
--nonetworks:虛擬機(jī)不使用網(wǎng)絡(luò)功能;
◇圖形配置:定義虛擬機(jī)顯示功能相關(guān)的配置,如VNC相關(guān)配置;
--graphics TYPE,opt1=val1,opt2=val2:指定圖形顯示相關(guān)的配置,此選項不會配置任何顯示硬件(如顯卡),而是僅指定虛擬機(jī)啟動后對其進(jìn)行訪問的接口;
TYPE:指定顯示類型,可以為vnc、sdl、spice或none等,默認(rèn)為vnc;
port:TYPE為vnc或spice時其監(jiān)聽的端口;
listen:TYPE為vnc或時所監(jiān)聽的IP地址,默認(rèn)為127.0.0.1,可以通過修改/etc/libvirt/qemu.conf定義新的默認(rèn)值;
password:TYPE為vnc或spice時,為遠(yuǎn)程訪問監(jiān)聽的服務(wù)進(jìn)指定認(rèn)證密碼;
--noautoconsole:禁止自動連接至虛擬機(jī)的控制臺;
◇設(shè)備選項:指定文本控制臺、聲音設(shè)備、串行接口、并行接口、顯示接口等;
--serial=CHAROPTS:附加一個串行設(shè)備至當(dāng)前虛擬機(jī),根據(jù)設(shè)備類型的不同,可以使用不同的選項,格式為“--serial type,opt1=val1,opt2=val2,...”,例如:
--serial pty:創(chuàng)建偽終端;
--serial dev,path=HOSTPATH:附加主機(jī)設(shè)備至此虛擬機(jī);
--video=VIDEO:指定顯卡設(shè)備模型,可用取值為cirrus、vga、qxl或vmvga;
◇虛擬化平臺:虛擬化模型(hvm或paravirt)、模擬的CPU平臺類型、模擬的主機(jī)類型、hypervisor類型(如kvm、xen或qemu等)以及當(dāng)前虛擬機(jī)的UUID等;
-v, --hvm:當(dāng)物理機(jī)同時支持完全虛擬化和半虛擬化時,指定使用完全虛擬化;
-p, --paravirt:指定使用半虛擬化;
--virt-type:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令獲取;
◇其它:
--autostart:指定虛擬機(jī)是否在物理啟動后自動啟動;
--print-xml:如果虛擬機(jī)不需要安裝過程(--import、--boot),則顯示生成的XML而不是創(chuàng)建此虛擬機(jī);默認(rèn)情況下,此選項仍會創(chuàng)建磁盤映像;
--force:禁止命令進(jìn)入交互式模式,如果有需要回答yes或no選項,則自動回答為yes;
--dry-run:執(zhí)行創(chuàng)建虛擬機(jī)的整個過程,但不真正創(chuàng)建虛擬機(jī)、改變主機(jī)上的設(shè)備配置信息及將其創(chuàng)建的需求通知給libvirt;
-d, --debug:顯示debug信息;
盡管virt-install命令有著類似上述的眾多選項,但實(shí)際使用中,其必須提供的選項僅包括--name、--ram、--disk(也可是--nodisks)及安裝過程相關(guān)的選項。此外,有時還需要使用括--connect=CONNCT選項來指定連接至一個非默認(rèn)的hypervisor。
實(shí)驗(yàn)安裝
yum install virt-viewer libvirt python-virtinst virt-manager -y
Ifconfig //libvirt會自動創(chuàng)建一個virbr0的接口,
Ifconfig virbr0 down
Brctl delbr virbr0 //刪除原有的,自己創(chuàng)建新的
Service libvirtd start //啟動libvirtd服務(wù)
systemctl start libvirtd
Virsh //即可進(jìn)入virsh的交互命令行
Uri:查看當(dāng)前主機(jī)的連接接口
另外一臺主機(jī): yum install libvirt python-virtinst //不使用,只是告訴可以使用而已
Sytemctl start libvirtd
Virsh
Help iface-bridge //查看使用方法,然后 exit
//注意:加入也有virnet的話,也要刪除后自己創(chuàng)建
// virsh iface-bridge enp14s0 br0 :老失敗 //生成橋接設(shè)備
[root@localhost ~]# virt-install -n "centos7" --vcpus 2 -r 512 -l /usr/local/src/iso7/Ce
ntOS-7-x86_64-DVD-1511.iso --disk path=/p_w_picpaths/centos7.qcow2,bus=virtio,size=20 --network bridge=virbr0,model=virtio
//親自實(shí)踐過
1.這里有一個橋接的接口,
下面這個示例創(chuàng)建一個名為rhel5的虛擬機(jī),其hypervisor為KVM,內(nèi)存大小為512MB,磁盤為8G的映像文件/var/lib/libvirt/p_w_picpaths/rhel5.8.img,通過boot.iso光盤鏡像來引導(dǎo)啟動安裝過程。
# virt-install \
--connect qemu:///system \ //這是制定連接到哪一個hypervisor上去創(chuàng)建,默認(rèn)為本機(jī)的hypervisor
--virt-type kvm \
--name rhel5 \
--ram 512 \
--disk path=/var/lib/libvirt/p_w_picpaths/rhel5.img,size=8 \
--graphics vnc \
--cdrom /tmp/boot.iso \
--os-variant rhel5
2.下面的示例將創(chuàng)建一個名為rhel6的虛擬機(jī),其有兩個虛擬CPU,安裝方法為FTP,并指定了ks文件的位置,磁盤映像文件為稀疏格式,連接至物理主機(jī)上的名為brnet0的橋接網(wǎng)絡(luò):
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name rhel6 \
--ram 1024 \
--vcpus 2 \
--network bridge=brnet0 \
--disk path=/VMs/p_w_picpaths/rhel6.img,size=120,sparse \
--location ftp://172.16.0.1/rhel6/dvd \
--extra_args “ks=http://172.16.0.1/rhel6.cfg”\
--os-variant rhel6 \
--force //強(qiáng)制回答為yes
3.下面的示例將創(chuàng)建一個名為rhel5.8的虛擬機(jī),磁盤映像文件為稀疏模式的格式為qcow2且總線類型為virtio,安裝過程不啟動圖形界面(--nographics),但會啟動一個串行終端將安裝過程以字符形式顯示在當(dāng)前文本模式下,虛擬機(jī)顯卡類型為cirrus:
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name rhel5.8 \
--vcpus 2,maxvcpus=4 \
--ram 512 \
--disk path=/VMs/p_w_picpaths/rhel5.8.img,size=120,format=qcow2,bus=virtio,sparse \
--network bridge=brnet0,model=virtio
--nographics \
--location ftp://172.16.0.1/pub \
--extra-args "ks=http://172.16.0.1/class.cfg console=ttyS0 serial" \
--os-variant rhel5 \
--force \
--video=cirrus
4.下面的示例則利用已經(jīng)存在的磁盤映像文件(已經(jīng)有安裝好的系統(tǒng))創(chuàng)建一個名為rhel5.8的虛擬機(jī):
# virt-install \
--name rhel5.8
--ram 512
--disk /VMs/rhel5.8.img
--import
每個虛擬機(jī)創(chuàng)建后,其配置信息保存在/etc/libvirt/qemu目錄中,文件名與虛擬機(jī)相同,格式為XML。
virsh uri: 查看當(dāng)前主機(jī)上hypervisor的連接路徑;
實(shí)驗(yàn):使用原有的配置文件,創(chuàng)建新的虛擬機(jī)// 視頻也沒有完成
virsh dumpxml centos7 > /etc/libvirt/qemu/cirros5.xml //備份xml文件,拷貝配置文件
Vim cirros5.xml //修改配置文件,并復(fù)制磁盤
Name
Uuid
Source :硬盤文件需要修改 //可以復(fù)制原有的硬盤文件,到自己制定的目錄中
Cp /p_w_picpaths/cirros-0.3.0-x86_64-disk.img /p_w_picpaths/vm5/cirros.img
virt-install -n "cirros5" -r 512 --vcpus=2 --disk path=/p_w_picpaths/vm5/cirrors.img --network bridge=br0 --import
//導(dǎo)入,已經(jīng)安裝好系統(tǒng)的硬盤,然后直接使用即可
Virsh:
undefine centos7 //刪除虛擬機(jī),
//這個錯誤哦,一般是服務(wù)沒有啟動
Virsh的命令介紹:
1.Domain //管理各個虛擬機(jī)的
//加入把圖形界面關(guān)閉了,使用virsh console cirros:cirross為虛擬機(jī)創(chuàng)建時的名字,即可連接
create //創(chuàng)建虛擬機(jī),并打開
define //都可以用來創(chuàng)建虛擬機(jī),但是define不會打開虛擬機(jī)
undefine //刪除一個虛擬機(jī)
start //手動啟動一個虛擬機(jī)實(shí)例
shutdown //關(guān)閉一個虛擬機(jī)實(shí)例
setvcpus //調(diào)整cpu的個數(shù)
save //保存一個域狀態(tài)到文件中
restore //恢復(fù)域
domstate //查看狀態(tài)
doiflist //列出實(shí)例的接口
2.hypervisor相關(guān)
sysinfo //狀態(tài)信息
capabilities //當(dāng)前hypervisor的虛擬能力
nodeinfo //當(dāng)前hypervisor的信息,系統(tǒng)信息
3.interface接口的//hypervisor上的接口
4.network:虛擬機(jī)上的接口
5.snapshot 快照
6.storage pool :存儲池//存儲池中大多數(shù)都是卷