Linux 第83天 kvm
Linux 第83天 kvm
時間: 20181104
個人小站: www.winthcloud.top
目錄
虛擬化技術
主機虛擬化
Linux目前流行的開源虛擬化技術解決方案
KVM的元件
快速使用kvm技術
安裝kvm環境
主要配置檔案
虛擬機器網路配置
建立kvm虛擬機器順序
建立物理橋接
建立虛擬機器硬碟
搭建時所遇到的問題和解決方式
總結的一些常用的virsh命令
一個手動建立虛擬機器的命令
qemu作用
kvm相關的套件網站
總結
虛擬化技術:
虛擬化技術型別:
主機虛擬化:xen, kvm, virtualbox, ...
容器(使用者空間隔離): lxc(LinuX Container), openvz, ...
系統庫虛擬化:wine, ...
應用程式級虛擬化:jvm, pvm,...
主機虛擬化:
CPU:
模擬:emulation, 虛擬機器的arch與物理平臺的arch可以不相同;qemu;
虛擬:virtualization
完全虛擬化(full-virt)
BT: 二進位制轉換 (軟體)
HVM:硬體輔助的虛擬化(硬體)
半(準)虛擬化 (para-virt)
GuestOS得明確知道自己運行於虛擬化技術
記憶體:
MMU virtualization:
Intel: EPT, Extended Page Table
AMD: NPT, Nested Page Table
TLB virtualization:
tagged TLB
IO:
Emulation 模擬
Para-virtualization 半虛擬化
IO-through:IO透傳
主機虛擬化的型別:
TYPE-I:
於硬體級別直接執行hypervisor;
xen, vmware ESX/ESXI
TYPE-II:
於硬體級別執行一個OS(Host OS),而此OS上執行一個VMM;
vmware workstation, virtualbox, kvm,VMWare Server
Linux目前流行的開源虛擬化技術解決方案:
主機虛擬化:xen, kvm, virtualbox
容器級:lxc, libcontainer, runC, openvz
模擬器:qemu
KVM的元件:
kvm.ko:模組
API
qemu-kvm:使用者空間的工具程式;
qemu-kvm is an open source virtualizer that provides hardware
emulation for the KVM hypervisor.
libvirt:Libvirt is a C toolkit to interact with the virtualization
capabilities of recent versions of Linux (and other OSes). The main
package includes the libvirtd server exporting the virtualization support.
C/S:
Client:
libvirt-client
virt-manager
Daemon:
libvirt-daemon
快速使用kvm技術:
安裝使用KVM:
判斷CPU是否支援硬體虛擬化:
# grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
vmx:Intel VT-x
svm:AMD AMD-v
安裝kvm環境
yum install virt-manager libvirt libguestfs-tools libvirt-daemon-kvm
systemctl start libvirtd
systemctl enable libvirtd
主要配置檔案
/etc/libvirt/qemu/network 網路介面配置檔案儲存
/etc/libvirt/qemu/ 虛擬機器配置檔案儲存路徑
虛擬機器網路配置
建立網路
建立交換機時,會自動建立其網路介面
cd /etc/libvirt/qemu/network
cp default.xml php-net.xml
vim php-net
<network>
<name>php-net</name>
<forward mode='nat'/>
<bridge name='php-bridge' stp='on' delay='0'/>
<mac address='52:54:00:10:00:01'/>
<ip address='10.0.0.1' netmask='255.255.255.0'>
</ip>
</network>
virsh dumpxml net-name
virsh net-define php-net.xml
新增網路
virsh domiflist dom_name
virsh attach-interface DOMAIN network NET_NAME
儲存主機的網路
virsh dumpxml DOMAIN_NAME > /etc/libvirt/qemu/DOMAIN_NAME.xml
建立kvm虛擬機器順序
1.建立物理橋接,使其可安裝系統,或者直接使用光碟就可以不用使用橋接
但是建議使用橋接,即使有問題可以方便ssh連線進去操作,後續可以刪除掉
2.使用virt-sysprep命令將硬碟資料清空,並使用此臺機器做模板
3.所有的virsh所管理的機器和網路都儲存在/etc/libvirt/qemu資料夾裡
將其複製後,並將硬碟檔案也複製命名改其配置檔案裡幾條即可生成另外一臺
也可以使用建立快照,目前還沒有研究出來
4. 至此虛擬機器便可實現多機
建立物理橋接
1. 首先建立橋接網絡卡裝置併為其配置地址
vim /etc/sysconfig/network-scripts/ifcfg-mybr0
# Generated by dracut initrd
NAME="mybr0"
DEVICE="mybr0"
ONBOOT=yes
NETBOOT=yes
BOOTPROTO=static
TYPE=Bridge #最主要就是這個裝置型別這裡
IPADDR=192.168.48.151
NETMASK=255.255.255.0
GATEWAY=192.168.48.2
DNS1=114.114.114.114
2. 然後將某個網絡卡關聯至該橋接網絡卡上
# Generated by dracut initrd
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes
NETBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
BRIDGE=mybr0 #最主要就是改這裡
3. 重啟網路服務
systemctl restart network
如果你的橋接網絡卡顯示為UP表示橋接配置成功
後續虛擬機器就可以將其介面掛至此橋下即可和物理網絡卡處於同一個網路中
建立虛擬機器硬碟
qemu-img create -f qcow2 disk1.qcow2 100G
搭建時所遇到的問題和解決方式
virsh console DOMAIN卡住,無法正常顯示登入介面
虛擬機器的核心新增console=ttyS0
grubby --update-kernel=ALL --args="console=ttyS0"
virsh-manager無法輸入字元至虛擬機器
虛擬機器配置使用vnc顯示器
總結的一些常用的virsh命令
virsh help domain --config可以將配置儲存至xml檔案裡
suspend
resume
start
reboot
shutdown 正常關機
destroy 斷電
autostart
console
attach-interface --config
detach-interface --config
attach-disk --config
detach-disk --config
attach-device --config
detach-device --config
domrename --config
edit
create
define
undefine
set-user-password
virsh help monitor
dominfo
dommemstat
domiflist
list --all
virsh help network
net-autostart
net-create
net-define
net-destroy
net-dumpxml
net-edit
net-start
net-undefine
virsh help snapshot
virsh help pool
virsh help volume
qemu-kvm
-machine
-cpu
-smp maxcpus= cores= threads= sockets=
-boot order c 硬碟 -d 光碟
-m mem
-name
-drive
-display type
-nographic
-vga
-vnc display
-monitor
-net nic
-net tap
--daemonize
一個手動建立虛擬機器的命令
qemu-kvm -name v1 -m 512 -cpu host \
-smp 1,maxcpus=2,sockets=1,cores=1,threads=1 \
-drive \
file=/vm/v1/disk.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2 \
-vnc :0 -net nic,macaddr=52:54:00:00:00:01,model=virtio \
-net tap,name=vm1,script=no,downscript=no --daemonize
qemu作用
qemu是一個模擬器套件,可以模擬各種硬體,由此套件就可以建立虛擬機器並管理
由於此配置檔案過於複雜由此生成了許多甚於此套件的二次開發如virsh-manager
kvm相關的套件網站,另外兩個是比較好用的web配置kvm工具有興趣可以試試
www.linux-kvm.org
proxmox
kimchi
總結
1. virsh dumpxml 使用是因為實時配置或新增的網路在重啟後就會失效
使用此命令用來將實時的配置重定向輸出至原來的配置主機檔案裡
包括網路也是一樣或者在配置時加上--config選項用來同步配置至xml檔案中
2. virsh snapshot 所建立的快照無法引用,只能作為原主機的快照還原使用
3. virsh clone 只能完全克隆,無法做成連線式克隆,也不知道是自己瞭解的不夠深入