Linux系統 虛擬化篇之KVM

徹底虛擬化 VMware 
半虛擬化 xen 
硬件輔助虛擬化Kvmnode

#查看物理機是否支持虛擬化
處理器虛擬化 VT-X
I/O虛擬化 VT-d
網絡虛擬化 VT-Cpython


/etc/udev/rules.d/70-persistent-net.rules配置文件。新的mac會出如今這個文件中。所以Redhat 6以後須要更改兩個文件:
修改 /etc/udev/rules.d/70-persistent-net.rules 文件 
刪除掉關於 eth0 的信息。修改第二條 eth1 的網卡的名字爲 eth0. 
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中mac地址爲 
/etc/udev/rules.d/70-persistent-net.rules 修改後的eth0的mac地址。
以後重啓network服務。若仍是提示錯誤信息「Device eth0 does not seem to be present, delaying initialization.」則reboot便可解決。linux


egrep "(svm|vmx)" /proc/cpuinfo
grep -Ei 'vmx|svm' /proc/cpuinfo
#安裝KVM虛擬化
yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-install virt-viewerios

kvm:軟件包中含有KVM內核模塊,它在默認linux內核中提供kvm管理程序
libvirts:安裝虛擬機管理工具,使用virsh等命令來管理和控制虛擬機。
bridge-utils:設置網絡網卡橋接。
virt-*:建立、克隆虛擬機命令,以及圖形化管理工具virt-manager
qemu-img:安裝qemu組件,使用qemu命令來建立磁盤等。ubuntu

LXC系統隔離
kvm服務器虛擬化 
kvm負責cpu虛擬化+內存虛擬化
qemu是模擬IO設備(網卡,磁盤)
libvirt 則是調用kvm虛擬化技術的接口用於管理的
1.KVM是內核自己的一部分,所以能夠利用內核的優化和改進。
2.高性能, 穩定, 無需修改客戶機系統。
3.開源、免費後端

#檢查KVM模塊是否加載
lsmod |grep kvmcentos

#安裝字符集
yum install -y dejavu-lgc-sans-fonts
#安裝vnc
yum install -y tigervnc-server tigervnc-server-module 
#安裝圖形頁面
yum -y groupinstall "GNOME Desktop"
#清空語言
export LANG=C
#啓動libvirtd虛擬機監控進程
/etc/init.d/libvirtd restart
#設置字符界面啓動
systemctl set-default multi-user.target
#設置虛擬化橋接網卡
[root@nt213 network-scripts]# cat ifcfg-em4
TYPE=Ethernet
NAME=em4
DEVICE=em4
ONBOOT=yes
BRIDGE=br0api

[root@nt213 network-scripts]# cat ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
DNS1=10.10.1.3
IPADDR=10.10.49.223
PREFIX=16
GATEWAY=10.10.1.246緩存

#修改主機密碼
linux16行中,將ro這兩個字母修改成rw init=/sysroot/bin/sh
ctrl+x進入單用戶模式
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot安全

kvm 建立虛擬機
#底層它們基本上都是經過開源的虛擬化庫Libvirt來開發的virsh
虛擬機定義爲domain,而不是vm(virtual machine)。Xen中Domain0表示宿主機系統,而在KVM中,domain徹底指虛擬機系統。
type一項指明瞭使用的是哪一種虛擬化技術。若是使用的是KVM,那麼值爲kvm。若是使用的是Xen,那麼值爲xen。
virsh #命令交互
virt-manager #圖形界面虛擬機管理器

#建立虛擬機步驟
1.生成硬盤鏡像文件
/var/lib/libvirt/images/ #默認鏡像文件位置 
qemu-img create -f qcow2 /images/centos6.3-x86_64.img 10G
chown qemu:qemu /images/centos6.3-x86_64.img
virt-install 
--name centos6.3 
--memory=1024 
--arch=x86_64 
--vcpus=1 
--check-cpu 
--os-type=linux 
--os-variant='rhel6' 
-c /tmp/CentOS-6.3-x86_64-minimal.iso 
--disk path=/images/centos6.3-x86_64.img,device=disk,bus=virtio,size=10,format=qcow2 
--bridge=br100 
--noautoconsole 
--vnc 
--vncport=5902 
--vnclisten=0.0.0.0

2.編寫xml配置文件
/etc/libvirt/qemu/ #虛擬機配置文件默認目錄xml
<domain type='kvm'>
虛擬機總體信息
系統信息
硬件資源特性
突發事件處理
虛擬磁盤(單個或多個)
虛擬光盤(可選)
虛擬網絡(單個或多個)
vnc/spice配置
</domain>


3.建立並運行虛擬機

qemu-img info kvm01 #查看虛擬機鏡像格式 
qemu-img convert -f raw -O qcow2 kvm01.img kvm01.qcow2 #轉換虛擬機鏡像格式 
qemu-img create -f qcow2 /var/lib/libvirt/images/kvm01-1.img 20G #新建虛擬機鏡像磁盤 
virsh attach-disk kvm01 /var/lib/libvirt/images/kvm01-1.img vdb --cache=none --subdriver=qcow2 #在線添加虛擬機鏡像硬盤

 

--version show programs version number and exit
--connect URI 經過 libvirt URI 鏈接到虛擬機管理程序
通用選項:
-n NAME, --name NAME 客戶機實例名稱
--memory MEMORY Configure guest memory allocation. Ex:
--memory 1024 (in MiB)
--memory 512,maxmemory=1024
--memory 512,maxmemory=1024,hotplugmemorymax=2048,hotplugmemoryslots=2
--vcpus VCPUS 配置客戶機虛擬 CPU(vcpu) 數量。例如:
--vcpus 5
--vcpus 5,maxcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2
--cpu CPU CPU 模型和特性。例如:
--cpu coreduo,+x2apic
--cpu host
--metadata METADATA 配置客戶機元數據。例如:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description"

安裝方法選項:
--cdrom CDROM 光驅安裝介質
-l LOCATION, --location LOCATION
安裝源 (例如:nfs:host:/path, http://host/path,
ftp://host/path)
--pxe 使用 PXE 協議從網絡引導
--import 在已有的磁盤鏡像中構建客戶機
--livecd 將光驅介質視爲 Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
將附加參數添加到由 --location
引導的內核中
--initrd-inject INITRD_INJECT
添加指定文件到由 --location 指定的 initrd
根中
--os-variant DISTRO_VARIANT
在客戶機上安裝的操做系統,例如:'fedor
a18'、'rhel6'、'winxp' 等。
--boot BOOT 配置客戶機引導設置。例如:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (針對容器)
--idmap IDMAP 爲 LXC 容器啓用用戶名稱空間。例如:
--idmap uid_start=0,uid_target=1000,uid_count=10
設備選項:
--disk DISK 指定存儲的各類選項。例如:
--disk size=10 (在默認位置建立 10GiB 鏡像)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
配置客戶機網絡接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS 配置客戶機顯示設置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
配置客戶機控制器設備。例如:
--controller type=usb,model=ich9-ehci1
--input INPUT 配置客戶機輸入設備。例如:
--input tablet
--input keyboard,bus=usb
--serial SERIAL 配置客戶機串口設備
--parallel PARALLEL 配置客戶機並口設備
--channel CHANNEL 配置客戶機通訊通道
--console CONSOLE 配置文本控制檯鏈接主機與客戶機
--hostdev HOSTDEV 配置物理 USB/PCI 等主機設備與客戶機共享
--filesystem FILESYSTEM
傳遞主機目錄到客戶機。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] 配置客戶機聲音設備仿真
--watchdog WATCHDOG 配置客戶機 watchdog 設備
--video VIDEO 配置客戶機視頻硬件。
--smartcard SMARTCARD
配置客戶機智能卡設備。例如:
--smartcard mode=passthrough
--redirdev REDIRDEV 配置客戶機重定向設備。例如:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
配置客戶機 memballoon 設備。例如:
--memballoon model=virtio
--tpm TPM 配置客戶機 TPM 設備。例如:
--tpm /dev/tpm
--rng RNG 配置客戶機隨機數生成器設備。例如:
--rng /dev/random
--panic PANIC 配置客戶機 panic 設備。例如:
--panic default
--memdev MEMDEV Configure a guest memory device. Ex:
--memdev dimm,target_size=1024

客戶機配置選項:
--security SECURITY 設置域安全驅動配置。
--numatune NUMATUNE 爲域進程調整 NUMA 策略。
--memtune MEMTUNE 爲域進程調整內存策略。
--blkiotune BLKIOTUNE
爲域進程調整 blkio 策略。
--memorybacking MEMORYBACKING
爲域進程設置內存後備策略。例如:
--memorybacking hugepages=on
--features FEATURES 設置域 <features> XML。例如:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK 設置域 <clock> XML。例如:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM 配置 VM 電源管理功能
--events EVENTS 配置 VM 生命週期管理策略
--resource RESOURCE 配置 VM 資源分區(cgroups)
--sysinfo SYSINFO Configure SMBIOS System Information. Ex:
--sysinfo emulate
--sysinfo host
--sysinfo bios_vendor=Vendor_Inc.,bios_version=1.2.3-abc,...
--sysinfo system_manufacturer=System_Corp.,system_product=Computer,...
--sysinfo baseBoard_manufacturer=Baseboard_Corp.,baseBoard_product=Motherboard,...
--qemu-commandline QEMU_COMMANDLINE
Pass arguments directly to the qemu emulator. Ex:
--qemu-commandline='-display gtk,gl=on'
--qemu-commandline env=DISPLAY=:0.1

虛擬化平臺選項:
-v, --hvm 這個客戶機應該是一個全虛擬化客戶機
-p, --paravirt 這個客戶機應該是一個半虛擬化客戶機
--container 這個客戶機應該是一個容器客戶機
--virt-type HV_TYPE 要使用的管理程序名稱 (kvm, qemu, xen, ...)
--arch ARCH 模擬 CPU 架構
--machine MACHINE 機器類型爲仿真類型

其它選項:
--autostart 主機啓動時自動啓動域。
--transient Create a transient domain.
--wait WAIT 請等待數分鐘以便完成安裝。
--noautoconsole 不要自動嘗試鏈接到客戶端控制檯
--noreboot 安裝完成後不啓動客戶機。
--print-xml [XMLONLY]
打印生成的 XML 域,而不是建立客戶機。
--dry-run 運行安裝程序,但不建立設備或定義客戶
機。
--check CHECK 啓用或禁用驗證檢查。例如:
--check path_in_use=off
--check all=off
-q, --quiet 抑制非錯誤輸出
-d, --debug 輸入故障排除信息


#virsh交互模式命令
Domain Management (help keyword 'domain'):
attach-device 從一個XML文件附加裝置
attach-disk 附加磁盤設備
attach-interface 得到網絡界面
autostart 自動開始一個域
blkdeviotune 設定或者查詢塊設備 I/O 調節參數。
blkiotune 獲取或者數值 blkio 參數
blockcommit 啓動塊提交操做。
blockcopy 啓動塊複製操做。
blockjob 管理活躍塊操做
blockpull 使用其後端映像填充磁盤。
blockresize 創新定義域塊設備大小
change-media 更改 CD 介質或者軟盤驅動器
console 鏈接到客戶會話
cpu-baseline 計算基線 CPU
cpu-compare 使用 XML 文件中描述的 CPU 與主機 CPU 進行對比
cpu-stats 顯示域 cpu 統計數據
create 從一個 XML 文件建立一個域
define 從一個 XML 文件定義(但不開始)一個域
desc 顯示或者設定域描述或者標題
destroy 銷燬(中止)域
detach-device 從一個 XML 文件分離設備
detach-disk 分離磁盤設備
detach-interface 分離網絡界面
domdisplay 域顯示鏈接 URI
domfsfreeze Freeze domain's mounted filesystems.
domfsthaw Thaw domain's mounted filesystems.
domfsinfo Get information of domain's mounted filesystems.
domfstrim 在域掛載的文件系統中調用 fstrim。
domhostname 輸出域主機名
domid 把一個域名或 UUID 轉換爲域 id
domif-setlink 設定虛擬接口的連接狀態
domiftune 獲取/設定虛擬接口參數
domjobabort 忽略活躍域任務
domjobinfo 域任務信息
domname 將域 id 或 UUID 轉換爲域名
domrename rename a domain
dompmsuspend 使用電源管理功能掛起域
dompmwakeup 從 pmsuspended 狀態喚醒域
domuuid 把一個域名或 id 轉換爲域 UUID
domxml-from-native 將原始配置轉換爲域 XML
domxml-to-native 將域 XML 轉換爲原始配置
dump 把一個域的內核 dump 到一個文件中以方便分析
dumpxml XML 中的域信息
edit 編輯某個域的 XML 配置
event Domain Events
inject-nmi 在虛擬機中輸入 NMI
iothreadinfo view domain IOThreads
iothreadpin control domain IOThread affinity
iothreadadd add an IOThread to the guest domain
iothreaddel delete an IOThread from the guest domain
send-key 向虛擬機發送序列號
send-process-signal 向進程發送信號
lxc-enter-namespace LXC 虛擬機進入名稱空間
managedsave 管理域狀態的保存
managedsave-remove 刪除域的管理保存
memtune 獲取或者數值內存參數
perf Get or set perf event
metadata show or set domain's custom XML metadata
migrate 將域遷移到另外一個主機中
migrate-setmaxdowntime 設定最大可耐受故障時間
migrate-compcache 獲取/設定壓縮緩存大小
migrate-setspeed 設定遷移帶寬的最大值
migrate-getspeed 獲取最長遷移帶寬
migrate-postcopy Switch running migration from pre-copy to post-copy
numatune 獲取或者數值 numa 參數
qemu-attach QEMU 附加
qemu-monitor-command QEMU 監控程序命令
qemu-monitor-event QEMU Monitor Events
qemu-agent-command QEMU 虛擬機代理命令
reboot 從新啓動一個域
reset 從新設定域
restore 從一個存在一個文件中的狀態恢復一個域
resume 從新恢復一個域
save 把一個域的狀態保存到一個文件
save-image-define 爲域的保存狀態文件從新定義 XML
save-image-dumpxml 在 XML 中保存狀態域信息
save-image-edit 爲域保存狀態文件編輯 XML
schedinfo 顯示/設置日程安排變量
screenshot 提取當前域控制檯快照並保存到文件中
set-user-password set the user password inside the domain
setmaxmem 改變最大內存限制值
setmem 改變內存的分配
setvcpus 改變虛擬 CPU 的號
shutdown 關閉一個域
start 開始一個(之前定義的)非活躍的域
suspend 掛起一個域
ttyconsole tty 控制檯
undefine 取消定義一個域
update-device 從 XML 文件中關係設備
vcpucount 域 vcpu 計數
vcpuinfo 詳細的域 vcpu 信息
vcpupin 控制或者查詢域 vcpu 親和性
emulatorpin 控制火車查詢域模擬器親和性
vncdisplay vnc 顯示
guestvcpus query or modify state of vcpu in the guest (via agent)
setvcpu attach/detach vcpu or groups of threads
domblkthreshold set the threshold for block-threshold event for a given block device or it's backing chain element

Domain Monitoring (help keyword 'monitor'):
domblkerror 在塊設備中顯示錯誤
domblkinfo 域塊設備大小信息
domblklist 列出全部域塊
domblkstat 得到域設備塊狀態
domcontrol 域控制接口狀態
domif-getlink 獲取虛擬接口連接狀態
domifaddr Get network interfaces' addresses for a running domain
domiflist 列出全部域虛擬接口
domifstat 得到域網絡接口狀態
dominfo 域信息
dommemstat 獲取域的內存統計
domstate 域狀態
domstats get statistics about one or multiple domains
domtime domain time
list 列出域

Host and Hypervisor (help keyword 'host'):
allocpages Manipulate pages pool size
capabilities 性能
cpu-models CPU models
domcapabilities domain capabilities
freecell NUMA可用內存
freepages NUMA free pages
hostname 打印管理程序主機名
maxvcpus 鏈接 vcpu 最大值
node-memory-tune 獲取或者設定節點內存參數
nodecpumap 節點 cpu 映射
nodecpustats 輸出節點的 cpu 狀統計數據。
nodeinfo 節點信息
nodememstats 輸出節點的內存狀統計數據。
nodesuspend 在給定時間段掛起主機節點
sysinfo 輸出 hypervisor sysinfo
uri 打印管理程序典型的URI
version 顯示版本

Interface (help keyword 'interface'):
iface-begin 生成當前接口設置快照,可在從此用於提交 (iface-commit) 或者恢復 (iface-rollback)
iface-bridge 生成橋接設備併爲其附加一個現有網絡設備
iface-commit 提交 iface-begin 後的更改並釋放恢復點
iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy 刪除物理主機接口(啓用它請執行 "if-down")
iface-dumpxml XML 中的接口信息
iface-edit 爲物理主機界面編輯 XML 配置
iface-list 物理主機接口列表
iface-mac 將接口名稱轉換爲接口 MAC 地址
iface-name 將接口 MAC 地址轉換爲接口名稱
iface-rollback 恢復到以前保存的使用 iface-begin 生成的更改
iface-start 啓動物理主機接口(啓用它請執行 "if-up")
iface-unbridge 分離其輔助設備後取消定義橋接設備
iface-undefine 取消定義物理主機接口(從配置中刪除)

Network Filter (help keyword 'filter'):
nwfilter-define 使用 XML 文件定義或者更新網絡過濾器
nwfilter-dumpxml XML 中的網絡過濾器信息
nwfilter-edit 爲網絡過濾器編輯 XML 配置
nwfilter-list 列出網絡過濾器
nwfilter-undefine 取消定義網絡過濾器

Networking (help keyword 'network'):
net-autostart 自動開始網絡
net-create 從一個 XML 文件建立一個網絡
net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy 銷燬(中止)網絡
net-dhcp-leases print lease info for a given network
net-dumpxml XML 中的網絡信息
net-edit 爲網絡編輯 XML 配置
net-event Network Events
net-info 網絡信息
net-list 列出網絡
net-name 把一個網絡UUID 轉換爲網絡名
net-start 開始一個(之前定義的)不活躍的網絡
net-undefine undefine a persistent network
net-update 更新現有網絡配置的部分
net-uuid 把一個網絡名轉換爲網絡UUID

Node Device (help keyword 'nodedev'):
nodedev-create 根據節點中的 XML 文件定義生成設備
nodedev-destroy 銷燬(中止)節點中的設備
nodedev-detach 將節點設備與其設備驅動程序分離
nodedev-dumpxml XML 中的節點設備詳情
nodedev-list 這臺主機中中的枚舉設備
nodedev-reattach 從新將節點設備附加到他的設備驅動程序中
nodedev-reset 重置節點設備
nodedev-event Node Device Events

Secret (help keyword 'secret'):
secret-define 定義或者修改 XML 中的 secret
secret-dumpxml XML 中的 secret 屬性
secret-event Secret Events
secret-get-value secret 值輸出
secret-list 列出 secret
secret-set-value 設定 secret 值
secret-undefine 取消定義 secret

Snapshot (help keyword 'snapshot'):
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一組參數生成快照
snapshot-current 獲取或者設定當前快照
snapshot-delete 刪除域快照
snapshot-dumpxml 爲域快照轉儲 XML
snapshot-edit 編輯快照 XML
snapshot-info 快照信息
snapshot-list 爲域列出快照
snapshot-parent 獲取快照的上級快照名稱
snapshot-revert 將域轉換爲快照

Storage Pool (help keyword 'pool'):
find-storage-pool-sources-as 找到潛在存儲池源
find-storage-pool-sources 發現潛在存儲池源
pool-autostart 自動啓動某個池
pool-build 創建池
pool-create-as 從一組變量中建立一個池
pool-create 從一個 XML 文件中建立一個池
pool-define-as 在一組變量中定義池
pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file
pool-delete 刪除池
pool-destroy 銷燬(刪除)池
pool-dumpxml XML 中的池信息
pool-edit 爲存儲池編輯 XML 配置
pool-info 存儲池信息
pool-list 列出池
pool-name 將池 UUID 轉換爲池名稱
pool-refresh 刷新池
pool-start 啓動一個(之前定義的)非活躍的池
pool-undefine 取消定義一個不活躍的池
pool-uuid 把一個池名稱轉換爲池 UUID
pool-event Storage Pool Events

Storage Volume (help keyword 'volume'):
vol-clone 克隆卷。
vol-create-as 從一組變量中建立卷
vol-create 從一個 XML 文件建立一個卷
vol-create-from 生成卷,使用另外一個卷做爲輸入。
vol-delete 刪除卷
vol-download 將卷內容下載到文件中
vol-dumpxml XML 中的卷信息
vol-info 存儲卷信息
vol-key 爲給定密鑰或者路徑返回卷密鑰
vol-list 列出卷
vol-name 爲給定密鑰或者路徑返回卷名
vol-path 爲給定密鑰或者路徑返回卷路徑
vol-pool 爲給定密鑰或者路徑返回存儲池
vol-resize 創新定義卷大小
vol-upload 將文件內容上傳到卷中
vol-wipe 擦除卷

Virsh itself (help keyword 'virsh'):
cd 更改當前目錄
echo echo 參數
exit 退出這個非交互式終端
help 打印幫助
pwd 輸出當前目錄
quit 退出這個非交互式終端
connect 鏈接(從新鏈接)到 hypervisor


虛擬機的冷遷移
導出虛擬機xml文件(配置文件) 
# virsh dumpxml vm-name > dump.xml 
vm-name 爲你的虛擬機名稱 
拷貝虛擬機磁盤和xml文件(從hostA -> hostB) 
# scp /path-to-image/vm-image hostB:/root 
# scp dump.xml hostB:/root 
vm-image的默認路徑爲 /var/lib/libvirt/images/ (libvirt管理的虛擬機) 
登陸hostB, 修改dump.xml 
根據B的硬件環境,修改dump.xml的文件內容。 
好比<interface>中bridge名稱,<disk>中<source file>的路徑。 
加載虛擬機

# virsh define dump.xml 
切記不能用virsh create。不然虛擬機關閉後,該虛擬機從虛擬機列表刪除。 
若是你要再次使用該虛擬機的話:則必須從新進行create/define操做。 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit 146
or other application using the libvirt API.
-->

<domain type='kvm'>
<name>146</name>
<uuid>41b0ae02-eda6-4ac0-b002-3a69ffc153a4</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Broadwell</model>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/146.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:71:96:bd'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='2'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>

virsh list #顯示本地活動虛擬機virsh list --all #顯示本地全部的虛擬機(活動的+不活動的)virsh define instance-00000015.xml #經過配置文件定義一個虛擬機(這個虛擬機還不是活動的)virsh edit instance-00000015 # 編輯配置文件(通常是在剛定義完虛擬機以後)virsh start instance-00000015 #啓動名字爲ubuntu的非活動虛擬機virsh reboot instance-00000015 #重啓虛擬機 virsh create instance-00000015.xml #建立虛擬機(建立後,虛擬機當即執行,成爲活動主機)virsh suspend instance-00000015 #暫停虛擬機virsh resume instance-00000015 #啓動暫停的虛擬機virsh shutdown instance-00000015 #正常關閉虛擬機virsh destroy instance-00000015 #強制關閉虛擬機virsh dominfo instance-00000015 #顯示虛擬機的基本信息virsh domname 2 #顯示id號爲2的虛擬機名virsh domid instance-00000015 #顯示虛擬機id號virsh domuuid instance-00000015 #顯示虛擬機的uuidvirsh domstate instance-00000015 #顯示虛擬機的當前狀態virsh dumpxml instance-00000015 #顯示虛擬機的當前配置文件(可能和定義虛擬機時的配置不一樣,由於當虛擬機啓動時,須要給虛擬機分配id號、uuid、vnc端口號等等)virsh setmem instance-00000015 512000 #給不活動虛擬機設置內存大小virsh setvcpus instance-00000015 4 # 給不活動虛擬機設置cpu個數virsh save instance-00000015 a #將該instance-00000015虛擬機的運行狀態存儲到文件a中virsh restore a #恢復被存儲狀態的虛擬機的狀態,即使虛擬機被刪除也能夠恢復(若是虛擬機已經被undefine移除,那麼恢復的虛擬機也只是一個臨時的狀態,關閉後自動消失)virsh undefine instance-00000015 #移除虛擬機,虛擬機處於關閉狀態後還能夠啓動,可是被該指令刪除後不能啓動。在虛擬機處於Running狀態時,調用該指令,該指令暫時不生效,可是當虛擬機被關閉後,該指令生效移除該虛擬機,也能夠在該指令生效以前調用define+TestKVM.xml取消該指令

相關文章
相關標籤/搜索