做下面操作前先安裝這些工具:
yum install virt-install libvirt-admin libvirt-client libvirt-daemon
libvirt主要的配置文件和目錄
(1) libvirtd服務的主配置文件 /etc/libvirt/libvirtd.conf
vim /etc/libvirt/libvirtd.conf
listen_tls=0 #關閉TLS安全認證連接(默認是打開的)
listen_tcp=1 #啟用TCP監聽.(默認關閉)
tcp_port="16666"
unix_sock_dir="/var/run/libvirt"
auth_tcp="none" #TCP連接不使用認證方式
#默認service libvirtd start啟動libvirtd是不能使TCP、TLS等連接生效的,即別人是不能連接的.
#若要讓上面配置生效,啟動libvirtd時需要加上" --listen -d":
libvirtd --listen -d -t 300 #-d:以daemon方式運行,連接超時為300秒
(2)客戶端主配置文件: /etc/libvirt/libvirt.conf
vim /etc/libvirt/libvirt.conf
uri_aliases = ["remote1=qemu+ssh://root@1.1.1.1/system",
"remote2=qemu+tcp://1.1.1.1:16666/system",]
Hypervisor的訪問路徑:
本地URL: driver[+transport]:///[path][?extral-param]
driver: 連接Hypervisor的驅動名:如:qemu/xen/lxc
transport: 傳輸方式: 如:ssh
例如:kvm是使用qemu驅動,其寫法如下:
system:Hypervioser 監視器
qemu:///system :默認連接本機
遠程URL: driver[+transport]:///[user[@host[:port]]/[path][?extral-param]
qemu+ssh://root@test.a.com/system :使用ssh加密的方式連接。
qemu+tcp://1.1.1.1/system
# virt-install 在創建VM前,需要先啟動:libvirtd
service libvirtd start 【CentOS6】
systemctl start libvirtd 【CentOS7】
# 使用libvirt.conf中定義的別名來連接遠程libvirtd.
virsh -c remote1
virsh -c qemu+tcp://1.1.1.1:16666/system 或 virsh -c remote2
(3) Qemu的主配置文件:/etc/libvirt/qemu.conf
#qemu.conf是libvirt對QEMU驅動提供的配置文件,包括VNC/SPICE等和連接它們時采用的權限
#認證方式的配置,也包括內存大頁、SELinux、Cgroups等相關配置。
#/etc/libvirt/qemu/
# 此目錄是virt-manager創建VM時,存放創建VM配置的默認目錄。
# 該目錄下networks子目錄: 保存了創建VM時的默認網絡連接配置。
(4) virt-manager創建VM的xml配置文件配置說明
#默認virt-manager創建VM后,其配置文件會放到:/etc/libvirt/qemu/下.
#virsh就是通過讀取這些配置文件來獲取VM的信息。
#
# 1. 關於CPU的配置
<vcpu placement='static'>2</vcpu> #表示指定VM有2顆vCPU
<features> #為vCPU指定添加以下特性
<acpi/>
<apic/>
<pae/>
</features>
# 設置vCPU允許運行在哪些物理CPU核心上.
# cpuset:設定vCPU允許在哪些核心上運行,‘^3:表示排除3號物理核心'
# current: 啟動時只給VM一個vCPU, 最大2個vCPU.
<vcpu placement='static' cpuset="1-4,^3,6" current="1">2</vcpu>
# 設置vCPU綁定到指定的物理核心.
<cputune>
<vcpupin vcpu="0" cpuset="1"/> #將vCPU0綁定到物理核心1上.
<vcpupin vcpu="1" cpuset="2,3"/>
<emulatiorpin cpuset="0-1" /> #指定Qemu模擬器在0到1號vCPU綁定到物理CPU上.
<shares>2048</shares> #設定VM獲得CPU時間片的配額,越高時間片獲取的越多。
<period>100000</period>
<quota>-1</quota>
<emulator_period>100000</emulator_period>
<emulator_quota>-1</emulator_quota>
</cputune>
#2. 內存配置
<memory unit='KiB'>1048576</memory>
<urrrentMemory unit='KiB'>1048576</memory>
# 內存的縮放之ballooning配置
<devices>
<memballoon model='virtio'> #virt-balloon的配置只需設定一個虛擬PCI總線地址.
<address type='pci' domain='0x0000' bus='0x00' solt='0x06' function='0x0'/>
</memballoon>
</devices>
#3. VM系統類型和啟動順序
<os>
<type arch='x86_64' machine='rhel6.3.0'>hvm</type>
#注: 編譯安裝的qemu-kvm不支持'rhel...'這樣的主機類型描述.
#virsh創建VM時可能會報錯.這時可使用"pc"來代替,默認pc是一個別名,指向對高版本的PC類型.
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
#4. 網絡配置
<interface type='bridge'>
<mac address='52:54:00:00:00:01'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' solt='0x03' function='0x0'/>
</interface>
# NAT方式配置虛擬網絡
<interface type='network'>
<mac address='52:54:00:00:00:01'/>
<source network='default'/> #使用默認網絡配置,VM啟動時將被分配192.168.122.0/24的IP.
#但需要本機已經運行DHCP和DNS服務,一般使用dnsmasq來代替.
#默認網絡配置文件:/etc/libvirt/qemu/networks/default.xml
# 或使用:/usr/shared/libvirt/networks/default.xml
<address type='pci' domain='0x0000' bus='0x00' solt='0x03' function='0x0'/>
</interface>
# 分配物理網卡
<interface type='hostdev'> #注: 此類定義方法,僅支持SR-IOV的PCI設備,並且libvirt的版本必須為0.9.11以上.
<source> #指定分配PCI總線地址為08:10.0的VF網卡給VM
<address type='pci' domain='0x0000' bus='0x08' solt='0x10' function='0x0'/>
</source>
<mac address='52:54:00:00:00:02'/> #指定VM中看到的網卡MAC地址.
</interface>
# 通用性較高的分配物理網卡的標簽.
# 此種方式通用,並且支持SR-IOV的PCI硬件,也支持沒有SR-IOV的PCI設備分配給VM
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x08' solt='0x10' function='0x0'/>
</source>
</hostdev>
#5. 存儲配置
<disk type='file' device='disk'>
#type=[file|block|dir|network]
#device=[floopy|disk|cdrom|lun(邏輯單元號)]
<driver name='qemu' type='raw' cache='none'/>
#type=[raw|qcow2|qed|...]
#cache=[default|none|writethrough|writeback|directsync|unsafe]
<source file='/var/lib/libvirt/images/rhel6u3-1.img'/>
<target dev='vda' bus='virtio'/>
#bus=[ide|scsi|virtio|xen|usb|sata]
#若bus被省略,則默認根據dev來推斷bus; vda會被推斷為virtio;sda->sata
<address type='pci' domain='0x0000' bus='0x00' solt='0x05' function='0x0'/> #可省略.
</disk>
#6. 顯示配置
# SDL的配置
<graphics type='sdl' display=':0.0'/>
# VNC配置
<graphics type='vnc' port='5901'>
<listen type='address' address='1.1.1.1'/>
</graphics>
# RDP配置
<graphics type='rdp' autoport='yes' multiUser='yes'/>
<graphics type='desktop' fullscreen='yes'/>
# SPICE配置
<graphics type='spice'>
<listen type='network' network='net1'/>
</graphics>
#7. 聲卡和顯卡配置
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' solt='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' solt='0x02' function='0x0'/>
</video>
#8. 串口和控制台
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
#9. PCI控制器
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x01' solt='0x01' function='0x0'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' solt='0x01' function='0x0'/>
</controller>
virsh 命令
virsh list #獲取當前節點上所有域(VM)的列表
virsh console <ID> #連接到一個VM上.
virsh domid <Name | UUID> #根據名稱或UUID返回ID值
virsh domname <ID | UUID>
virsh domstatc <[ID | Name | UUID]> #獲取一個VM的運行狀態
virsh dominfo <ID> #獲取一個VM的基本信息
pwd
cd <NewDir>
quit | exit
#連接相關
virsh vncdisplay <ID> #顯示一個VM的VNC連接IP和端口
#定義和創建、關閉、暫停
virsh define <VM.xml> #定義一個VM域.使其永久有效,並可使用start來啟動VM.
# VM.xml會被復制一份到/etc/libvirt/qemu/下。
virsh create <VM.xml> #它可通過VM.xml來啟動臨時VM.
virsh suspend <ID> #在內存掛起一台VM
virsh resume <ID> #喚醒一台VM
virsh save <ID> <file.img> #類似與VMware上的暫停,並保存內存數據到image文件.
virsh restore <file.img> #重新載入暫停的VM
#保存當前狀態,並destroy VM 【注: 當VM的啟動配置文件在/etc/libvirt/qemu下時,才能使用它保存VM】.
# --bypass: 保存VM時不保存文件系統緩存
# --running:使用start恢復運行時,直接進入running狀態.
virsh managedsave [--bypass] <VMName> [--running | --paused]
virsh start <VMName> #重新啟動managedsave 保存的VM.
virsh shutdown <ID>
virsh reboot <ID>
virsh reset <ID>
virsh destroy <ID>
virsh undefine <VM.xml>
#快照管理
#創建一個VM快照;直接創建其名為'date +%s'所的得值.指定一個xml的快照配置可自定義名稱.
virsh snapshot-create <VMName | xxx.xml>
virsh snapshot-list <VMName> #顯示當前VM的所有快照
#導出一個快照的配置文件.
# 注: 測試時,我是先創建一個快照,然后,導出成xml配置文件,修改其<name>標簽值,
# 再通過"date +%s"計算當前時間,最后創建快照,這樣就實現了自定義快照名的目的.
# 另注:virsh創建快照時,總是默認會將前一個快照做為當前創建快照的parent快照.
# 但我測試時,即便刪除parent快照,也不會對當前快照有影響.
virsh snapshot-dumpxml <VMName> <SnapName>
#編輯一個快照的配置信息
#注: --rename:參數可改名,但在qemu-kvm 0.12.1這邊版本中存在bug,改名后,快照將失效.
virsh snapshot-edit <VMName> <SnapName>
virsh snapshot-delete <VMName> <SnapName>
#恢復一個快照.注:0.12.1版本中存在bug,只能恢復一次,第二次將當中VM宕機。
virsh snapshot-revert <VMName> <SnapName>
virsh snapshot-info <VMName> <SnapName> #顯示快照的詳情.
#VM的網絡接口管理
virsh domiflist <VMName> #顯示VM的接口信息
virsh domifstat <VMName> <Viface> #顯示VM的接口通信統計信息
#網絡管理
# 接口管理
virsh iface-list #顯示物理主機的網絡接口列表
virsh iface-mac <if-name> #顯示指定接口名的MAC
virsh iface-name <MAC>
virsh iface-dempxml <if-name | UUID> #導出一份xml格式的接口狀態信息
virsh iface-edit <if-name | UUID> #編輯一個物理主機的網絡接口的xml配置文件.
virsh iface-destrey <if-name | UUID> #關閉宿主機上一個物理網卡
# 虛擬網絡管理
virsh net-list #顯示libvirt的虛擬網絡
virsh net-info <NetName | UUID> #根據名稱或UUID查詢一個虛擬網絡的基本信息
virsh net-uuid <NetName> #根據名稱查詢虛擬網絡的UUID
virsh net-name <NetUUID>
virsh net-dumpxml <NetName | UUID> #導出一份xml格式的虛擬網絡配置信息
virsh net-edit <NetName | UUID> #編輯一個虛擬網絡的xml配置文件
virsh net-create <net.xml> #根據網絡xml配置信息文件創建一個虛擬網絡
virsh net-destroy <NetName | UUID> #刪除一個虛擬網絡
#VM磁盤管理
virsh domblklist <VMName> #顯示VM當前連接的塊設備
virsh domblkinfo <VMName> </path/to/img.img> #顯示img.img的容量信息.
virsh domblkstat <VMName> [--human] </path/to/img.img> #顯示img的讀寫等信息的統計結果
virsh domblkerror <VMName> #顯示VM連接的塊設備的錯誤信息
#存儲池管理
#關於存儲池的構建,可參看IBM知識庫的一篇文章:
# http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/
virsh pool-list #顯示出libvirt管理的存儲池
virsh pool-info <poolName> #根據一個存儲池名稱查詢其基本信息
virsh pool-uuid <PoolName>
virsh pool-edit <PoolName | UUID> #編輯一個存儲池的xml配置文件
virsh pool-create <pool.xml> #根據xml配置文件的信息創建一個存儲池
virsh pool-destroy <PoolName | UUID> #關閉一個存儲池
virsh pool-delete <PoolName | UUID> #刪除一個存儲池
#存儲卷管理
virsh vol-list <PoolName | UUID> #查詢一個存儲池中存儲卷的列表
virsh vol-name <VolKey | Path> #查詢一個存儲卷的名字
virsh vol-path --pool <pool> <VolName | Key> #查詢一個存儲卷的路徑
virsh vol-create <Vol.xml> #根據xml配置文件創建一個存儲池
virsh vol-clone <VolNamePath> <Name> #克隆一個存儲卷
virsh vol-delete <VolName | Key | Path> #刪除一個存儲卷
#遷移
#格式:
# virsh migrate [OptionParas] <VMName> <TargetURI> [<MigrateURI>] [--dname <DestNewVMName>]
#OptionParas:
# --live : 在線遷移
# --p2p : 點到點的遷移
# --direct : 直接遷移
# --tunnelled:隧道模式遷移
# --persistent :指遷移VM到目標后,再執行virsh define VM,使其持久化。
# --undefinesource :指遷移VM到目標后,在源宿主機上執行 virsh undefine VM。
# --suspend : 遷移到目標后不重啟VM
# --copy-storage-all :在不使用共享存儲的情況下,遷移時一同將VM的磁盤映像一起復制到目標端。
# --copy-storage-inc : 在不使用共享存儲時,僅將VM的磁盤映像的增量文件復制到目標端,
# 但前提是后端磁盤映像文件必須先復制到目標端,且位置要與源端一致。
# --dname :指定遷移到目標后,將VM的名字該成指定名稱.
virsh migrate <ID> <Target_URL> #將一個VM遷移到另一個目的地址
示例:
#注: 源和目的宿主機采用NFS共享cirros-01的磁盤映像文件.
virsh migrate --live cirros-01 qemu+tcp://192.168.10.12:16666/system --dname cirros0001
# vCPU相關
virsh vcpinfo <ID>
virsh vcppin <ID> <vCPU> <pCPU> #將一個VM的vCPU綁定到指定的物理核心上
virsh setvcpus <ID> <vCPU-Num> #設置一個VM的最多vCPU個數。
virsh nodecpustats <CPU-Num> #顯示VM(某個)CPU使用情況的統計
#內存相關
virsh dommemstat <ID> #獲取一個VM內存使用情況統計信息。
virsh setmem <ID> <MemSize> #設置一個VM的內存大小(默認單位:KB)
virsh freecell #顯示當前MUMA單元的可用空閑內存
virsh nodememstats <cell> #顯示VM的(某個)內存單元使用情況的統計
#熱插拔設備
# 注:USB控制器、IDE等設備是不支持熱插拔的,測試添加SCSI 磁盤是可以的.
# 如: scsi.xml
# <disk type='file' device='disk'>
# <driver name='qemu' type='qcow2' cache='none'/>
# <source file='/images/kvm/10g.img'/>
# <target dev='sda' bus='scsi'/>
# <alias name='scsi0-0-0'/>
# <address type='drive' controller='1' bus='0' target='0' unit='0'/>
# </disk>
attach-device <ID> <device.xml> #向一個域中添加XML文件中的熱插拔設備.
detach-device <ID> <device.xml> #從一個VM中移除XML文件中指定的熱插拔設備。
#其它
virsh dumpxml <ID> #顯示一個運行中的VM的xml格式的配置信息.
virsh version #顯示libvirt 和 Hypervisor的版本信息
virsh sysinfo #以xml格式打印宿主機的系統信息
virsh capabilities #顯示當前連接節點所在的宿主機和其自身的架構和特性
virsh nodeinfo #顯示當前連接節點的基本信息
virsh uri #顯示當前連接節點的URI
virsh hostname
virsh connect <URI> #連接到URI指定的Hypervisor
virsh qemu-attach <PID> #根據PID添加一個Qemu進程到libvirt中
#直接向Qemu monitor中發送命令; --hmp:直接傳入monitor中無需轉換.
virsh qemu-monitor-command domain [--hmp] CMD
使用virt-install創建虛擬機並安裝GuestOS
virt-install是一個命令行工具,它能夠為KVM、Xen或其它支持libvirt API的hypervisor創建虛擬機並完成GuestOS安裝;此外,它能夠基於串行控制台、VNC或SDL支持文本或圖形安裝界面。安裝過程可以使用本地的安裝介質如CDROM,也可以通過網絡方式如NFS、HTTP或FTP服務實現。對於通過網絡安裝的方式,virt-install可以自動加載必要的文件以啟動安裝過程而無須額外提供引導工具。當然,virt-install也支持PXE方式的安裝過程,也能夠直接使用現有的磁盤映像直接啟動安裝過程。
virt-install命令有許多選項,這些選項大體可分為下面幾大類,同時對每類中的常用選項也做出簡單說明。
◇ 一般選項:指定虛擬機的名稱、內存大小、VCPU個數及特性等;
-n NAME, --name=NAME:虛擬機名稱,需全局惟一;
-r MEMORY, --ram=MEMORY:虛擬機內在大小,單位為MB;
--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU個數及相關配置;
--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?來獲取支持的CPU模式;
--keymap=en-us #指定鍵盤布局.
#xml配置文件中可修改VNC配置項: <graphics type='vnc' port='-1' keymap='en-us'/>
◇ 安裝方法:指定安裝方法、GuestOS類型等;
-c CDROM, --cdrom=CDROM:光盤安裝介質;
-l LOCATION, --location=LOCATION:安裝源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;
--pxe:基於PXE完成安裝;
--livecd: 把光盤當作LiveCD;
--os-type=DISTRO_TYPE:操作系統類型,如linux、unix或windows等;
--os-variant=DISTRO_VARIANT:某類型操作系統的變體,如rhel5、fedora8等;
-x EXTRA, --extra-args=EXTRA:根據--location指定的方式安裝GuestOS時,用於傳遞給內核的額外選項,例如指定kickstart文件的位置,--extra-args "ks=http://172.16.0.1/class.cfg"
--boot=BOOTOPTS:指定安裝過程完成后的配置選項,如指定引導設備次序、使用指定的而非安裝的kernel/initrd來引導系統啟動等 ;例如:
--boot cdrom,hd,network:指定引導次序;
--boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定啟動系統的內核及initrd文件;
◇ 存儲配置:指定存儲類型、位置及屬性等;
--disk=DISKOPTS:指定存儲設備及其屬性;格式為--disk /some/storage/path,opt1=val1,opt2=val2等;常用的選項有:
device:設備類型,如cdrom、disk或floppy等,默認為disk;
bus:磁盤總線類型,其值可以為ide、scsi、usb、virtio或xen;
perms:訪問權限,如rw、ro或sh(共享的可讀寫),默認為rw;
size:新建磁盤映像的大小,單位為GB;
cache:緩存模型,其值有none、writethrouth(緩存讀)及writeback(緩存讀寫);
format:磁盤映像格式,如raw、qcow2、vmdk等;
sparse:磁盤映像使用稀疏格式,即不立即分配指定大小的空間;
--nodisks:不使用本地磁盤,在LiveCD模式中常用;
◇ 網絡配置:指定網絡接口的網絡類型及接口屬性如MAC地址、驅動模式等;
-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:將虛擬機連入宿主機的網絡中,其中NETWORK可以為:
bridge=BRIDGE:連接至名為“BRIDEG”的橋設備;
network=NAME:連接至名為“NAME”的網絡;
其它常用的選項還有:
model:GuestOS中看到的網絡設備型號,如e1000、rtl8139或virtio等;
mac:固定的MAC地址;省略此選項時將使用隨機地址,但無論何種方式,對於KVM來說,其前三段必須為52:54:00;
--nonetworks:虛擬機不使用網絡功能;
◇ 圖形配置:定義虛擬機顯示功能相關的配置,如VNC相關配置;
--graphics TYPE,opt1=val1,opt2=val2:指定圖形顯示相關的配置,此選項不會配置任何顯示硬件(如顯卡),而是僅指定虛擬機啟動后對其進行訪問的接口;
TYPE:指定顯示類型,可以為vnc、sdl、spice或none等,默認為vnc;
port:TYPE為vnc或spice時其監聽的端口;
listen:TYPE為vnc或spice時所監聽的IP地址,默認為127.0.0.1,可以通過修改/etc/libvirt/qemu.conf定義新的默認值;
password:TYPE為vnc或spice時,為遠程訪問監聽的服務進指定認證密碼;
--noautoconsole:禁止自動連接至虛擬機的控制台;
◇ 設備選項:指定文本控制台、聲音設備、串行接口、並行接口、顯示接口等;
--serial=CHAROPTS:附加一個串行設備至當前虛擬機,根據設備類型的不同,可以使用不同的選項,格式為“--serial type,opt1=val1,opt2=val2,...”,例如:
--serial pty:創建偽終端;
--serial dev,path=HOSTPATH:附加主機設備至此虛擬機;
--video=VIDEO:指定顯卡設備模型,可用取值為cirrus、vga、qxl或vmvga;
◇ 虛擬化平台:虛擬化模型(hvm或paravirt)、模擬的CPU平台類型、模擬的主機類型、hypervisor類型(如kvm、xen或qemu等)以及當前虛擬機的UUID等;
-v, --hvm:當物理機同時支持完全虛擬化和半虛擬化時,指定使用完全虛擬化;
-p, --paravirt:指定使用半虛擬化;
--virt-type:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令獲取;
◇ 其它:
--autostart:指定虛擬機是否在物理啟動后自動啟動;
--print-xml:如果虛擬機不需要安裝過程(--import、--boot),則顯示生成的XML而不是創建此虛擬機;默認情況下,此選項仍會創建磁盤映像;
--force:禁止命令進入交互式模式,如果有需要回答yes或no選項,則自動回答為yes;
--dry-run:執行創建虛擬機的整個過程,但不真正創建虛擬機、改變主機上的設備配置信息及將其創建的需求通知給libvirt;
-d, --debug:顯示debug信息;
盡管virt-install命令有着類似上述的眾多選項,但實際使用中,其必須提供的選項僅包括--name、--ram、--disk(也可是--nodisks)及安裝過程相關的選項。此外,有時還需要使用括--connect=CONNCT選項來指定連接至一個非默認的hypervisor。
使用示例:
(1) # virt-install -n "centos6" -r 512 --vcpus=2 -l http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/ -x "ks=http://172.16.0.1/centos6.x86_64.cfg" --disk path=/images/kvm/centos6.img,size=120,sparse --force -w bridge=br100,model=virtio
(2) 下面這個示例創建一個名為rhel5的虛擬機,其hypervisor為KVM,內存大小為512MB,磁盤為8G的映像文件/var/lib/libvirt/images/rhel5.8.img,通過boot.iso光盤鏡像來引導啟動安裝過程。
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name rhel5 \
--ram 512 \
--disk path=/var/lib/libvirt/images/rhel5.img,size=8 \
--graphics vnc \
--cdrom /tmp/boot.iso \
--os-variant rhel5
(3) 下面的示例將創建一個名為rhel6的虛擬機,其有兩個虛擬CPU,安裝方法為FTP,並指定了ks文件的位置,磁盤映像文件為稀疏格式,連接至物理主機上的名為brnet0的橋接網絡:
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name rhel6 \
--ram 1024 \
--vcpus 2 \
--network bridge=brnet0 \
--disk path=/VMs/images/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
(4) 下面的示例將創建一個名為rhel5.8的虛擬機,磁盤映像文件為稀疏模式的格式為qcow2且總線類型為virtio,安裝過程不啟動圖形界面(--nographics),但會啟動一個串行終端將安裝過程以字符形式顯示在當前文本模式下,虛擬機顯卡類型為cirrus:
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name rhel5.8 \
--vcpus 2,maxvcpus=4 \
--ram 512 \
--disk path=/VMs/images/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
(5) 下面的示例則利用已經存在的磁盤映像文件(已經有安裝好的系統)創建一個名為rhel5.8的虛擬機:
# virt-install \
--name rhel5.8
--ram 512
--disk /VMs/rhel5.8.img
--import
注意:每個虛擬機創建后,其配置信息保存在/etc/libvirt/qemu目錄中,文件名與虛擬機相同,格式為XML。