Linux系统 虚拟化篇之KVM
完全虛擬化 VMware?
半虛擬化 xen?
硬件輔助虛擬化Kvm
#查看物理機(jī)是否支持虛擬化
處理器虛擬化 VT-X
I/O虛擬化 VT-d
網(wǎng)絡(luò)虛擬化 VT-C
/etc/udev/rules.d/70-persistent-net.rules配置文件。新的mac會(huì)出現(xiàn)在這個(gè)文件中。因此Redhat 6之后需要更改兩個(gè)文件:
修改 /etc/udev/rules.d/70-persistent-net.rules 文件?
刪除掉關(guān)于 eth0 的信息。修改第二條 eth1 的網(wǎng)卡的名字為 eth0.?
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中mac地址為?
/etc/udev/rules.d/70-persistent-net.rules 修改后的eth0的mac地址。
之后重啟network服務(wù)。若還是提示錯(cuò)誤信息“Device eth0 does not seem to be present, delaying initialization.”則reboot即可解決。
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-viewer
kvm:軟件包中含有KVM內(nèi)核模塊,它在默認(rèn)linux內(nèi)核中提供kvm管理程序
libvirts:安裝虛擬機(jī)管理工具,使用virsh等命令來(lái)管理和控制虛擬機(jī)。
bridge-utils:設(shè)置網(wǎng)絡(luò)網(wǎng)卡橋接。
virt-*:創(chuàng)建、克隆虛擬機(jī)命令,以及圖形化管理工具virt-manager
qemu-img:安裝qemu組件,使用qemu命令來(lái)創(chuàng)建磁盤等。
LXC系統(tǒng)隔離
kvm服務(wù)器虛擬化?
kvm負(fù)責(zé)cpu虛擬化+內(nèi)存虛擬化
qemu是模擬IO設(shè)備(網(wǎng)卡,磁盤)
libvirt 則是調(diào)用kvm虛擬化技術(shù)的接口用于管理的
1.KVM是內(nèi)核本身的一部分,因此可以利用內(nèi)核的優(yōu)化和改進(jìn)。
2.高性能, 穩(wěn)定, 無(wú)需修改客戶機(jī)系統(tǒng)。
3.開(kāi)源、免費(fèi)
#檢查KVM模塊是否加載
lsmod |grep kvm
#安裝字符集
yum install -y dejavu-lgc-sans-fonts
#安裝vnc
yum install -y tigervnc-server tigervnc-server-module?
#安裝圖形頁(yè)面
yum -y groupinstall "GNOME Desktop"
#清空語(yǔ)言
export LANG=C
#啟動(dòng)libvirtd虛擬機(jī)監(jiān)控進(jìn)程
/etc/init.d/libvirtd restart
#設(shè)置字符界面啟動(dòng)
systemctl set-default multi-user.target
#設(shè)置虛擬化橋接網(wǎng)卡
[root@nt213 network-scripts]# cat ifcfg-em4
TYPE=Ethernet
NAME=em4
DEVICE=em4
ONBOOT=yes
BRIDGE=br0
[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
#修改主機(jī)密碼
linux16行中,將ro這兩個(gè)字母修改為rw init=/sysroot/bin/sh
ctrl+x進(jìn)入單用戶模式
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
kvm 創(chuàng)建虛擬機(jī)
#底層它們基本上都是通過(guò)開(kāi)源的虛擬化庫(kù)Libvirt來(lái)開(kāi)發(fā)的virsh
虛擬機(jī)定義為domain,而不是vm(virtual machine)。Xen中Domain0表示宿主機(jī)系統(tǒng),而在KVM中,domain完全指虛擬機(jī)系統(tǒng)。
type一項(xiàng)指明了使用的是哪種虛擬化技術(shù)。如果使用的是KVM,那么值為kvm。如果使用的是Xen,那么值為xen。
virsh #命令交互
virt-manager #圖形界面虛擬機(jī)管理器
#創(chuàng)建虛擬機(jī)步驟
1.生成硬盤鏡像文件
/var/lib/libvirt/images/ #默認(rèn)鏡像文件位置?
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/ #虛擬機(jī)配置文件默認(rèn)目錄xml
<domain type='kvm'>
虛擬機(jī)整體信息
系統(tǒng)信息
硬件資源特性
突發(fā)事件處理
虛擬磁盤(單個(gè)或多個(gè))
虛擬光盤(可選)
虛擬網(wǎng)絡(luò)(單個(gè)或多個(gè))
vnc/spice配置
</domain>
3.創(chuàng)建并運(yùn)行虛擬機(jī)
qemu-img info kvm01 #查看虛擬機(jī)鏡像格式?
qemu-img convert -f raw -O qcow2 kvm01.img kvm01.qcow2 #轉(zhuǎn)換虛擬機(jī)鏡像格式?
qemu-img create -f qcow2 /var/lib/libvirt/images/kvm01-1.img 20G #新建虛擬機(jī)鏡像磁盤?
virsh attach-disk kvm01 /var/lib/libvirt/images/kvm01-1.img vdb --cache=none --subdriver=qcow2 #在線添加虛擬機(jī)鏡像硬盤
?
--version show programs version number and exit
--connect URI 通過(guò) libvirt URI 連接到虛擬機(jī)管理程序
通用選項(xiàng):
-n NAME, --name NAME 客戶機(jī)實(shí)例名稱
--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 配置客戶機(jī)虛擬 CPU(vcpu) 數(shù)量。例如:
--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 配置客戶機(jī)元數(shù)據(jù)。例如:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description"
安裝方法選項(xiàng):
--cdrom CDROM 光驅(qū)安裝介質(zhì)
-l LOCATION, --location LOCATION
安裝源 (例如:nfs:host:/path, http://host/path,
ftp://host/path)
--pxe 使用 PXE 協(xié)議從網(wǎng)絡(luò)引導(dǎo)
--import 在已有的磁盤鏡像中構(gòu)建客戶機(jī)
--livecd 將光驅(qū)介質(zhì)視為 Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
將附加參數(shù)添加到由 --location
引導(dǎo)的內(nèi)核中
--initrd-inject INITRD_INJECT
添加指定文件到由 --location 指定的 initrd
根中
--os-variant DISTRO_VARIANT
在客戶機(jī)上安裝的操作系統(tǒng),例如:'fedor
a18'、'rhel6'、'winxp' 等。
--boot BOOT 配置客戶機(jī)引導(dǎo)設(shè)置。例如:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (針對(duì)容器)
--idmap IDMAP 為 LXC 容器啟用用戶名稱空間。例如:
--idmap uid_start=0,uid_target=1000,uid_count=10
設(shè)備選項(xiàng):
--disk DISK 指定存儲(chǔ)的各種選項(xiàng)。例如:
--disk size=10 (在默認(rèn)位置創(chuàng)建 10GiB 鏡像)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
配置客戶機(jī)網(wǎng)絡(luò)接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS 配置客戶機(jī)顯示設(shè)置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
配置客戶機(jī)控制器設(shè)備。例如:
--controller type=usb,model=ich9-ehci1
--input INPUT 配置客戶機(jī)輸入設(shè)備。例如:
--input tablet
--input keyboard,bus=usb
--serial SERIAL 配置客戶機(jī)串口設(shè)備
--parallel PARALLEL 配置客戶機(jī)并口設(shè)備
--channel CHANNEL 配置客戶機(jī)通信通道
--console CONSOLE 配置文本控制臺(tái)連接主機(jī)與客戶機(jī)
--hostdev HOSTDEV 配置物理 USB/PCI 等主機(jī)設(shè)備與客戶機(jī)共享
--filesystem FILESYSTEM
傳遞主機(jī)目錄到客戶機(jī)。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] 配置客戶機(jī)聲音設(shè)備仿真
--watchdog WATCHDOG 配置客戶機(jī) watchdog 設(shè)備
--video VIDEO 配置客戶機(jī)視頻硬件。
--smartcard SMARTCARD
配置客戶機(jī)智能卡設(shè)備。例如:
--smartcard mode=passthrough
--redirdev REDIRDEV 配置客戶機(jī)重定向設(shè)備。例如:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
配置客戶機(jī) memballoon 設(shè)備。例如:
--memballoon model=virtio
--tpm TPM 配置客戶機(jī) TPM 設(shè)備。例如:
--tpm /dev/tpm
--rng RNG 配置客戶機(jī)隨機(jī)數(shù)生成器設(shè)備。例如:
--rng /dev/random
--panic PANIC 配置客戶機(jī) panic 設(shè)備。例如:
--panic default
--memdev MEMDEV Configure a guest memory device. Ex:
--memdev dimm,target_size=1024
客戶機(jī)配置選項(xiàng):
--security SECURITY 設(shè)置域安全驅(qū)動(dòng)配置。
--numatune NUMATUNE 為域進(jìn)程調(diào)整 NUMA 策略。
--memtune MEMTUNE 為域進(jìn)程調(diào)整內(nèi)存策略。
--blkiotune BLKIOTUNE
為域進(jìn)程調(diào)整 blkio 策略。
--memorybacking MEMORYBACKING
為域進(jìn)程設(shè)置內(nèi)存后備策略。例如:
--memorybacking hugepages=on
--features FEATURES 設(shè)置域 <features> XML。例如:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK 設(shè)置域 <clock> XML。例如:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM 配置 VM 電源管理功能
--events EVENTS 配置 VM 生命周期管理策略
--resource RESOURCE 配置 VM 資源分區(qū)(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
虛擬化平臺(tái)選項(xiàng):
-v, --hvm 這個(gè)客戶機(jī)應(yīng)該是一個(gè)全虛擬化客戶機(jī)
-p, --paravirt 這個(gè)客戶機(jī)應(yīng)該是一個(gè)半虛擬化客戶機(jī)
--container 這個(gè)客戶機(jī)應(yīng)該是一個(gè)容器客戶機(jī)
--virt-type HV_TYPE 要使用的管理程序名稱 (kvm, qemu, xen, ...)
--arch ARCH 模擬 CPU 架構(gòu)
--machine MACHINE 機(jī)器類型為仿真類型
其它選項(xiàng):
--autostart 主機(jī)啟動(dòng)時(shí)自動(dòng)啟動(dòng)域。
--transient Create a transient domain.
--wait WAIT 請(qǐng)等待數(shù)分鐘以便完成安裝。
--noautoconsole 不要自動(dòng)嘗試連接到客戶端控制臺(tái)
--noreboot 安裝完成后不啟動(dòng)客戶機(jī)。
--print-xml [XMLONLY]
打印生成的 XML 域,而不是創(chuàng)建客戶機(jī)。
--dry-run 運(yùn)行安裝程序,但不創(chuàng)建設(shè)備或定義客戶
機(jī)。
--check CHECK 啟用或禁用驗(yàn)證檢查。例如:
--check path_in_use=off
--check all=off
-q, --quiet 抑制非錯(cuò)誤輸出
-d, --debug 輸入故障排除信息
#virsh交互模式命令
Domain Management (help keyword 'domain'):
attach-device 從一個(gè)XML文件附加裝置
attach-disk 附加磁盤設(shè)備
attach-interface 獲得網(wǎng)絡(luò)界面
autostart 自動(dòng)開(kāi)始一個(gè)域
blkdeviotune 設(shè)定或者查詢塊設(shè)備 I/O 調(diào)節(jié)參數(shù)。
blkiotune 獲取或者數(shù)值 blkio 參數(shù)
blockcommit 啟動(dòng)塊提交操作。
blockcopy 啟動(dòng)塊復(fù)制操作。
blockjob 管理活躍塊操作
blockpull 使用其后端映像填充磁盤。
blockresize 創(chuàng)新定義域塊設(shè)備大小
change-media 更改 CD 介質(zhì)或者軟盤驅(qū)動(dòng)器
console 連接到客戶會(huì)話
cpu-baseline 計(jì)算基線 CPU
cpu-compare 使用 XML 文件中描述的 CPU 與主機(jī) CPU 進(jìn)行對(duì)比
cpu-stats 顯示域 cpu 統(tǒng)計(jì)數(shù)據(jù)
create 從一個(gè) XML 文件創(chuàng)建一個(gè)域
define 從一個(gè) XML 文件定義(但不開(kāi)始)一個(gè)域
desc 顯示或者設(shè)定域描述或者標(biāo)題
destroy 銷毀(停止)域
detach-device 從一個(gè) XML 文件分離設(shè)備
detach-disk 分離磁盤設(shè)備
detach-interface 分離網(wǎng)絡(luò)界面
domdisplay 域顯示連接 URI
domfsfreeze Freeze domain's mounted filesystems.
domfsthaw Thaw domain's mounted filesystems.
domfsinfo Get information of domain's mounted filesystems.
domfstrim 在域掛載的文件系統(tǒng)中調(diào)用 fstrim。
domhostname 輸出域主機(jī)名
domid 把一個(gè)域名或 UUID 轉(zhuǎn)換為域 id
domif-setlink 設(shè)定虛擬接口的鏈接狀態(tài)
domiftune 獲取/設(shè)定虛擬接口參數(shù)
domjobabort 忽略活躍域任務(wù)
domjobinfo 域任務(wù)信息
domname 將域 id 或 UUID 轉(zhuǎn)換為域名
domrename rename a domain
dompmsuspend 使用電源管理功能掛起域
dompmwakeup 從 pmsuspended 狀態(tài)喚醒域
domuuid 把一個(gè)域名或 id 轉(zhuǎn)換為域 UUID
domxml-from-native 將原始配置轉(zhuǎn)換為域 XML
domxml-to-native 將域 XML 轉(zhuǎn)換為原始配置
dump 把一個(gè)域的內(nèi)核 dump 到一個(gè)文件中以方便分析
dumpxml XML 中的域信息
edit 編輯某個(gè)域的 XML 配置
event Domain Events
inject-nmi 在虛擬機(jī)中輸入 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 向虛擬機(jī)發(fā)送序列號(hào)
send-process-signal 向進(jìn)程發(fā)送信號(hào)
lxc-enter-namespace LXC 虛擬機(jī)進(jìn)入名稱空間
managedsave 管理域狀態(tài)的保存
managedsave-remove 刪除域的管理保存
memtune 獲取或者數(shù)值內(nèi)存參數(shù)
perf Get or set perf event
metadata show or set domain's custom XML metadata
migrate 將域遷移到另一個(gè)主機(jī)中
migrate-setmaxdowntime 設(shè)定最大可耐受故障時(shí)間
migrate-compcache 獲取/設(shè)定壓縮緩存大小
migrate-setspeed 設(shè)定遷移帶寬的最大值
migrate-getspeed 獲取最長(zhǎng)遷移帶寬
migrate-postcopy Switch running migration from pre-copy to post-copy
numatune 獲取或者數(shù)值 numa 參數(shù)
qemu-attach QEMU 附加
qemu-monitor-command QEMU 監(jiān)控程序命令
qemu-monitor-event QEMU Monitor Events
qemu-agent-command QEMU 虛擬機(jī)代理命令
reboot 重新啟動(dòng)一個(gè)域
reset 重新設(shè)定域
restore 從一個(gè)存在一個(gè)文件中的狀態(tài)恢復(fù)一個(gè)域
resume 重新恢復(fù)一個(gè)域
save 把一個(gè)域的狀態(tài)保存到一個(gè)文件
save-image-define 為域的保存狀態(tài)文件重新定義 XML
save-image-dumpxml 在 XML 中保存狀態(tài)域信息
save-image-edit 為域保存狀態(tài)文件編輯 XML
schedinfo 顯示/設(shè)置日程安排變量
screenshot 提取當(dāng)前域控制臺(tái)快照并保存到文件中
set-user-password set the user password inside the domain
setmaxmem 改變最大內(nèi)存限制值
setmem 改變內(nèi)存的分配
setvcpus 改變虛擬 CPU 的號(hào)
shutdown 關(guān)閉一個(gè)域
start 開(kāi)始一個(gè)(以前定義的)非活躍的域
suspend 掛起一個(gè)域
ttyconsole tty 控制臺(tái)
undefine 取消定義一個(gè)域
update-device 從 XML 文件中關(guān)系設(shè)備
vcpucount 域 vcpu 計(jì)數(shù)
vcpuinfo 詳細(xì)的域 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 在塊設(shè)備中顯示錯(cuò)誤
domblkinfo 域塊設(shè)備大小信息
domblklist 列出所有域塊
domblkstat 獲得域設(shè)備塊狀態(tài)
domcontrol 域控制接口狀態(tài)
domif-getlink 獲取虛擬接口鏈接狀態(tài)
domifaddr Get network interfaces' addresses for a running domain
domiflist 列出所有域虛擬接口
domifstat 獲得域網(wǎng)絡(luò)接口狀態(tài)
dominfo 域信息
dommemstat 獲取域的內(nèi)存統(tǒng)計(jì)
domstate 域狀態(tài)
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可用內(nèi)存
freepages NUMA free pages
hostname 打印管理程序主機(jī)名
maxvcpus 連接 vcpu 最大值
node-memory-tune 獲取或者設(shè)定節(jié)點(diǎn)內(nèi)存參數(shù)
nodecpumap 節(jié)點(diǎn) cpu 映射
nodecpustats 輸出節(jié)點(diǎn)的 cpu 狀統(tǒng)計(jì)數(shù)據(jù)。
nodeinfo 節(jié)點(diǎn)信息
nodememstats 輸出節(jié)點(diǎn)的內(nèi)存狀統(tǒng)計(jì)數(shù)據(jù)。
nodesuspend 在給定時(shí)間段掛起主機(jī)節(jié)點(diǎn)
sysinfo 輸出 hypervisor sysinfo
uri 打印管理程序典型的URI
version 顯示版本
Interface (help keyword 'interface'):
iface-begin 生成當(dāng)前接口設(shè)置快照,可在今后用于提交 (iface-commit) 或者恢復(fù) (iface-rollback)
iface-bridge 生成橋接設(shè)備并為其附加一個(gè)現(xiàn)有網(wǎng)絡(luò)設(shè)備
iface-commit 提交 iface-begin 后的更改并釋放恢復(fù)點(diǎn)
iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy 刪除物理主機(jī)接口(啟用它請(qǐng)執(zhí)行 "if-down")
iface-dumpxml XML 中的接口信息
iface-edit 為物理主機(jī)界面編輯 XML 配置
iface-list 物理主機(jī)接口列表
iface-mac 將接口名稱轉(zhuǎn)換為接口 MAC 地址
iface-name 將接口 MAC 地址轉(zhuǎn)換為接口名稱
iface-rollback 恢復(fù)到之前保存的使用 iface-begin 生成的更改
iface-start 啟動(dòng)物理主機(jī)接口(啟用它請(qǐng)執(zhí)行 "if-up")
iface-unbridge 分離其輔助設(shè)備后取消定義橋接設(shè)備
iface-undefine 取消定義物理主機(jī)接口(從配置中刪除)
Network Filter (help keyword 'filter'):
nwfilter-define 使用 XML 文件定義或者更新網(wǎng)絡(luò)過(guò)濾器
nwfilter-dumpxml XML 中的網(wǎng)絡(luò)過(guò)濾器信息
nwfilter-edit 為網(wǎng)絡(luò)過(guò)濾器編輯 XML 配置
nwfilter-list 列出網(wǎng)絡(luò)過(guò)濾器
nwfilter-undefine 取消定義網(wǎng)絡(luò)過(guò)濾器
Networking (help keyword 'network'):
net-autostart 自動(dòng)開(kāi)始網(wǎng)絡(luò)
net-create 從一個(gè) XML 文件創(chuàng)建一個(gè)網(wǎng)絡(luò)
net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy 銷毀(停止)網(wǎng)絡(luò)
net-dhcp-leases print lease info for a given network
net-dumpxml XML 中的網(wǎng)絡(luò)信息
net-edit 為網(wǎng)絡(luò)編輯 XML 配置
net-event Network Events
net-info 網(wǎng)絡(luò)信息
net-list 列出網(wǎng)絡(luò)
net-name 把一個(gè)網(wǎng)絡(luò)UUID 轉(zhuǎn)換為網(wǎng)絡(luò)名
net-start 開(kāi)始一個(gè)(以前定義的)不活躍的網(wǎng)絡(luò)
net-undefine undefine a persistent network
net-update 更新現(xiàn)有網(wǎng)絡(luò)配置的部分
net-uuid 把一個(gè)網(wǎng)絡(luò)名轉(zhuǎn)換為網(wǎng)絡(luò)UUID
Node Device (help keyword 'nodedev'):
nodedev-create 根據(jù)節(jié)點(diǎn)中的 XML 文件定義生成設(shè)備
nodedev-destroy 銷毀(停止)節(jié)點(diǎn)中的設(shè)備
nodedev-detach 將節(jié)點(diǎn)設(shè)備與其設(shè)備驅(qū)動(dòng)程序分離
nodedev-dumpxml XML 中的節(jié)點(diǎn)設(shè)備詳情
nodedev-list 這臺(tái)主機(jī)中中的枚舉設(shè)備
nodedev-reattach 重新將節(jié)點(diǎn)設(shè)備附加到他的設(shè)備驅(qū)動(dòng)程序中
nodedev-reset 重置節(jié)點(diǎn)設(shè)備
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 設(shè)定 secret 值
secret-undefine 取消定義 secret
Snapshot (help keyword 'snapshot'):
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一組參數(shù)生成快照
snapshot-current 獲取或者設(shè)定當(dāng)前快照
snapshot-delete 刪除域快照
snapshot-dumpxml 為域快照轉(zhuǎn)儲(chǔ) XML
snapshot-edit 編輯快照 XML
snapshot-info 快照信息
snapshot-list 為域列出快照
snapshot-parent 獲取快照的上級(jí)快照名稱
snapshot-revert 將域轉(zhuǎn)換為快照
Storage Pool (help keyword 'pool'):
find-storage-pool-sources-as 找到潛在存儲(chǔ)池源
find-storage-pool-sources 發(fā)現(xiàn)潛在存儲(chǔ)池源
pool-autostart 自動(dòng)啟動(dòng)某個(gè)池
pool-build 建立池
pool-create-as 從一組變量中創(chuàng)建一個(gè)池
pool-create 從一個(gè) XML 文件中創(chuàng)建一個(gè)池
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 為存儲(chǔ)池編輯 XML 配置
pool-info 存儲(chǔ)池信息
pool-list 列出池
pool-name 將池 UUID 轉(zhuǎn)換為池名稱
pool-refresh 刷新池
pool-start 啟動(dòng)一個(gè)(以前定義的)非活躍的池
pool-undefine 取消定義一個(gè)不活躍的池
pool-uuid 把一個(gè)池名稱轉(zhuǎn)換為池 UUID
pool-event Storage Pool Events
Storage Volume (help keyword 'volume'):
vol-clone 克隆卷。
vol-create-as 從一組變量中創(chuàng)建卷
vol-create 從一個(gè) XML 文件創(chuàng)建一個(gè)卷
vol-create-from 生成卷,使用另一個(gè)卷作為輸入。
vol-delete 刪除卷
vol-download 將卷內(nèi)容下載到文件中
vol-dumpxml XML 中的卷信息
vol-info 存儲(chǔ)卷信息
vol-key 為給定密鑰或者路徑返回卷密鑰
vol-list 列出卷
vol-name 為給定密鑰或者路徑返回卷名
vol-path 為給定密鑰或者路徑返回卷路徑
vol-pool 為給定密鑰或者路徑返回存儲(chǔ)池
vol-resize 創(chuàng)新定義卷大小
vol-upload 將文件內(nèi)容上傳到卷中
vol-wipe 擦除卷
Virsh itself (help keyword 'virsh'):
cd 更改當(dāng)前目錄
echo echo 參數(shù)
exit 退出這個(gè)非交互式終端
help 打印幫助
pwd 輸出當(dāng)前目錄
quit 退出這個(gè)非交互式終端
connect 連接(重新連接)到 hypervisor
虛擬機(jī)的冷遷移
導(dǎo)出虛擬機(jī)xml文件(配置文件)?
# virsh dumpxml vm-name > dump.xml?
vm-name 為你的虛擬機(jī)名稱?
拷貝虛擬機(jī)磁盤和xml文件(從hostA -> hostB)?
# scp /path-to-image/vm-image hostB:/root?
# scp dump.xml hostB:/root?
vm-image的默認(rèn)路徑為 /var/lib/libvirt/images/ (libvirt管理的虛擬機(jī))?
登錄hostB, 修改dump.xml?
根據(jù)B的硬件環(huán)境,修改dump.xml的文件內(nèi)容。?
比如<interface>中bridge名稱,<disk>中<source file>的路徑。?
加載虛擬機(jī)
# virsh define dump.xml?
切記不能用virsh create。否則虛擬機(jī)關(guān)閉后,該虛擬機(jī)從虛擬機(jī)列表刪除。?
如果你要再次使用該虛擬機(jī)的話:則必須重新進(jìn)行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 #顯示本地活動(dòng)虛擬機(jī)
virsh list --all #顯示本地所有的虛擬機(jī)(活動(dòng)的+不活動(dòng)的)
virsh define instance-00000015.xml #通過(guò)配置文件定義一個(gè)虛擬機(jī)(這個(gè)虛擬機(jī)還不是活動(dòng)的)
virsh edit instance-00000015 # 編輯配置文件(一般是在剛定義完虛擬機(jī)之后)
virsh start instance-00000015 #啟動(dòng)名字為ubuntu的非活動(dòng)虛擬機(jī)
virsh reboot instance-00000015 #重啟虛擬機(jī)?
virsh create instance-00000015.xml #創(chuàng)建虛擬機(jī)(創(chuàng)建后,虛擬機(jī)立即執(zhí)行,成為活動(dòng)主機(jī))
virsh suspend instance-00000015 #暫停虛擬機(jī)
virsh resume instance-00000015 #啟動(dòng)暫停的虛擬機(jī)
virsh shutdown instance-00000015 #正常關(guān)閉虛擬機(jī)
virsh destroy instance-00000015 #強(qiáng)制關(guān)閉虛擬機(jī)
virsh dominfo instance-00000015 #顯示虛擬機(jī)的基本信息
virsh domname 2 #顯示id號(hào)為2的虛擬機(jī)名
virsh domid instance-00000015 #顯示虛擬機(jī)id號(hào)
virsh domuuid instance-00000015 #顯示虛擬機(jī)的uuid
virsh domstate instance-00000015 #顯示虛擬機(jī)的當(dāng)前狀態(tài)
virsh dumpxml instance-00000015 #顯示虛擬機(jī)的當(dāng)前配置文件(可能和定義虛擬機(jī)時(shí)的配置不同,因?yàn)楫?dāng)虛擬機(jī)啟動(dòng)時(shí),需要給虛擬機(jī)分配id號(hào)、uuid、vnc端口號(hào)等等)
virsh setmem instance-00000015 512000 #給不活動(dòng)虛擬機(jī)設(shè)置內(nèi)存大小
virsh setvcpus instance-00000015 4 # 給不活動(dòng)虛擬機(jī)設(shè)置cpu個(gè)數(shù)
virsh save instance-00000015 a #將該instance-00000015虛擬機(jī)的運(yùn)行狀態(tài)存儲(chǔ)到文件a中
virsh restore a #恢復(fù)被存儲(chǔ)狀態(tài)的虛擬機(jī)的狀態(tài),即便虛擬機(jī)被刪除也可以恢復(fù)(如果虛擬機(jī)已經(jīng)被undefine移除,那么恢復(fù)的虛擬機(jī)也只是一個(gè)臨時(shí)的狀態(tài),關(guān)閉后自動(dòng)消失)
virsh undefine instance-00000015 #移除虛擬機(jī),虛擬機(jī)處于關(guān)閉狀態(tài)后還可以啟動(dòng),但是被該指令刪除后不能啟動(dòng)。在虛擬機(jī)處于Running狀態(tài)時(shí),調(diào)用該指令,該指令暫時(shí)不生效,但是當(dāng)虛擬機(jī)被關(guān)閉后,該指令生效移除該虛擬機(jī),也可以在該指令生效之前調(diào)用define+TestKVM.xml取消該指令
轉(zhuǎn)載于:https://www.cnblogs.com/devops-docker/p/11495666.html
總結(jié)
以上是生活随笔為你收集整理的Linux系统 虚拟化篇之KVM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Apache中 RewriteRule
- 下一篇: linux 中read命令后面-p是什么