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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章