2021-05-12 14:32:11
CentOS 7下使用virt-install命令安裝KVM虛擬機器
一、使用virt-install命令建立虛擬機器
virt-install命令既可以互動執行,也可以以自動的方式建立與部署虛擬機器系統,配合kickstart技術可以實現無人值守安裝虛擬機器作業系統。該命令提供了很多選項,使用virt-install --help可以檢視選選項和幫助
命令格式:
virt-install [選項]
-h 檢視幫助
--connect=CONNECT 連線非預設的hypervisor,預設為qemu:///system
-n name 新的虛擬機器主機範例名稱
-r MEMORT 虛擬機器記憶體設定
--arch=ARCH cpu架構
--machine=MACHINE 虛擬機器模擬機型別,Xen或者KVM等。
--vcpus=VCPUS 虛擬主機CPU個數
-c CDROM 設定光碟映象或光碟裝置路徑
-l LOCATION 指定安裝源路徑
--pxe 使用pxe協定啟動
--import 匯入現有的虛擬機器
-x EXTRA 附加的核心引數,如-x "ks=http://server/server.ks"
--os-type=Type 作業系統型別,如linux、windwos等
--disk=DISKOPTS 設定虛擬機器磁碟,如--disk /dev/storage/path
-w NETWORK 設定虛擬機器網路,如-w bridge=br0
--noneworks 虛擬機器不設定任何網路介面
-m MAC 設定虛擬機器MAC地址
--vnc 設定通過vnc檢視虛擬機器
--hvm 使用全虛擬化技術
--paravirt 使用半虛擬化技術
--soundhw MODEL 設定音效卡裝置
--autostart 設定虛擬機器為開機啟動
官方幫助文件案例如下:
1)安裝Fedora 13,使用virtio 驅動的磁碟與網絡卡裝置,建立8GB的儲存檔案,使用CDROM安裝作業系統,使用VNC檢視虛擬機器介面
virt-install --connect qemu:///system --virt-type kvm --name demo --ram 500 --disk path=/var/lib/libvirt/images/demo.img,size=8 -graphics vnc --cdrom /dev/cdrom --os-variant fedora13
2)安裝Fedora9 ,使用LVM分割區,虛擬機器網路設定為從PXE啟動,使用vnc連線虛擬機器介面:
virt-install --connect qemu:///system --name demo --ram 500 --disk path=/dev/HostVG/DemoVM --virt-type qemu --graphics vnc --os-variant fedora9
3)在真實的磁碟中安裝虛擬機器,使用預設QEMU hypervisor,使用SDL連線虛擬機器介面通過遠端初始化及安裝
virt-install --connect qemu:///system --name demo --disk path=/dev/hdc --network brige=eno1 --arch ppc64 --graphics sdl --location /linux/core/6/x86_64/os/
以下為在本地安裝一台Ubuntu虛擬機器示意,
virt-install --connect qemu:///system #連線預設本機hypervisor --virt-type kvm #虛擬化型別為kvm --vcpus=1 #vcpu為1 --name unbuntu16 #虛擬機器名稱 --ram 512 #記憶體大小 --cdrom /var/lib/libvirt/images/ubuntu-16.04.5-server-amd64.iso #指定使用cdrom光碟機啟動,指定映象路徑 --disk path=/var/lib/libvirt/images/ubuuntu16.img,size=50,format=qcow2,bus=virtio #指定硬碟路徑,大小,格式為qcow2,匯流排型別為virtio --network bridge=br0 #指定虛擬網路型別為網橋br0 --os-type=linux #指定虛擬機器作業系統型別為linux
然後跳出安裝介面
然後使用virt-manger檢視虛擬機器硬體選項,與命令列設定一致
二、 virsh命令
virsh是非常優秀的hypervisor和虛擬主機的命令列管理工具,它是由libvirt-client軟體提供的命令,可以使用該命令列工具替代圖形介面的virt-manager工具
語法 virsh[選項] 命令 [引數]
cd 更改當前目錄
connect 連線(重新連線)到 hypervisor
echo echo 引數
exit 退出這個非互動式終端
help 列印幫助
pwd 輸出當前目錄
quit 退出這個非互動式終端
常用命令:
list 列出正在執行的虛擬機器列表
以下域其實就是domain,kvm中指虛擬機器
autostart -自動開始一個域,設定虛擬機器自啟,--disable表示禁用自啟動
connect - 連線(重新連線)到 hypervisor
dumpxml - XML 中的域資訊,輸出特定虛擬機器XML格式的組態檔
create - 從一個 XML 檔案建立一個域,新虛擬機器
define - 從一個 XML 檔案定義(但不開始)一個域
destroy - 銷毀(停止)域
dominfo - 域資訊
domid - 把一個域名或 UUID 轉換為域 id
domstate - 域狀態
edit - 編輯某個域的 XML 設定
reboot - 重新啟動一個域
shutdown - 關閉一個域
destroy - 銷毀(停止)域
start - 開始一個(以前定義的)非活躍的域
save - 把一個域的狀態儲存到一個檔案
restore - 從一個存在一個檔案中的狀態恢復一個域
screenshot - 提取當前域控制台截圖並儲存到檔案中
suspend - 掛起一個域
resume - 重新恢復一個域
setmem - 改變記憶體的分配
setmaxmem - 改變最大記憶體限制值
setvcpus - 改變虛擬 CPU 個數
vcpuinfo - 詳細的域 vcpu 資訊
attach-device - 從一個XML檔案新增裝置
net-create - 從一個 XML 檔案建立一個網路
net-dumpxml - 輸出XML格式的網路資訊
net-list - 列出網路
net-start - 開始一個(以前定義的)不活躍的網路
iface-define-使用XML檔案定義主機網路介面
iface-list - 物理主機介面列表
snapshot-create - 使用 XML 生成快照
snapshot-delete - 刪除域快照
snapshot-dumpxml - 為域快照備份xml
snapshot-list - 為域列出快照
1)檢視當前正在執行的虛擬機器列表,檢視所有的虛擬機器列表
2)設定虛擬機器為開機自啟
3)備份虛擬機器組態檔,將組態檔儲存為ubuntu.xml
virsh dumpxml ubuntu16 > ubntu16.xml
4)檢視虛擬機器的基本資訊
virsh dominfo 6
5)設定虛擬記憶體大小,最大記憶體以及vcpu個數,下次重新啟動生效
virsh setmaxmem ubuntu16 1048576 --config #單位為kB --config為下次啟動生效 virsh setmem ubuntu16 1048576 --config virsh setvcpus unbuntu16 2 --config
三、虛擬儲存
kvm儲存池是被libvirt所管理的檔案、目錄或儲存裝置,儲存池可以位於本地,也可以通過網路共用,儲存池最終可以被虛擬機器所使用。預設libvirt使用基於目錄的儲存池設計,/var/lib/libvirt/images目錄就是預設的儲存池。本地儲存池可以是原生的一個目錄、磁碟裝置、物理分割區或LVM捲,但是本地儲存池不適合於大規模產品部署,也不支援虛擬機器遷移功能。網路共用儲存池使用標準的網路協定進行儲存裝置的共用,它支援SAN,IP-SAN,NFS,GFS2等協定。在kvm虛擬化技術中,儲存池可以包含多個儲存卷,對虛擬機器而言,這些儲存卷都被是被為物理硬體儲存裝置。
3.1 建立基於目錄的虛擬儲存池與儲存卷
建立目錄
mkdir /var/lib/libvirt/test
修改檔案安全相關屬性
chown root.root /var/lib/libvirt/test/ chmod 700 /var/lib/libvirt/test/
使用virsh命令建立儲存池,
virsh pool-define-as test --type dir --target /var/lib/libvirt/test/ #建立為目錄型別的儲存池 virsh pool-build test #構建池 virsh pool-start test #啟用 virsh pool-autostart test #自動啟用 virsh pool-list
還有可以使用xml定義的方式建立儲存池,首先建立一個名為test的xml文件
# cat test <pool type='dir'> #定義型別為目錄 <name>test</name> #定義名稱為test <source> </source> <target> <path>/var/lib/libvirt/test</path> #定義目錄 <permissions> <mode>0700</mode> <owner>-1</owner> <group>-1</group> </permissions> </target> </pool>
然後呼叫pool-create命令,載入xml檔案
virsh pool-create test virsh pool-list
然後再建立儲存卷,格式為qcow2,大小為10G
virsh vol-create-as test vol-test.qcow2 10G --format qcow2 virsh vol-list test #檢視池下的捲
然後為虛擬機器新增硬碟,將test儲存池中的vol-test.qcow2卷作為硬碟新增到虛擬機器ubuntu中
virsh attach-disk --domain ubuntu16 #指定虛擬機器 --source /var/lib/libvirt/test/vol-test.qcow2 #指定捲的路徑 --target vdb #指定將硬碟識別為虛擬機器的vdb --targetbus virtio #匯流排協定 --driver qemu #驅動型別 --subdriver qcow2 #磁碟源的驅動型別 --sourcetype block #磁碟源方式 file即檔案裝置,block為塊裝置 --cache none #不用快取 --persistent #會讓此操作同時對執行的虛擬機器以及虛擬機器的xml檔案都會生效 --config #下次重新啟動生效
此時登陸虛擬機器,可以看到硬碟已經新增
相關文章