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 只能完全克隆,无法做成连接式克隆,也不知道是自己了解的不够深入


猜你喜欢

转载自blog.51cto.com/winthcloud/2312707
KvM