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 只能完全克隆,無法做成連接式克隆,也不知道是自己瞭解的不夠深入