虚构化技巧之KVM,KVM安装配置

by admin on 2019年10月15日

亚洲必赢手机入口 1亚洲必赢手机入口 2一、kvm意况准备

KVM安装配备

 

供销合作社开首布署KVM,KVM的全称是kernel base virtual
machine,对KVM设想化技术研商了一段时间,

KVM是根据硬件的一心虚构化,跟vmware、xen、hyper-v是同三个等级的,况兼已经内置在Linux内核

与此同一时间KVM是开源产品,最新的虚构化技巧都会先行利用在KVM上,KVM的定制和安插项也非常多,比密封的hyper-v风趣多了

直接以为微软的成品太密闭,在此之前一贯用hyper-v,可安插项相比较于KVM实在太少,并且KVM质量比hyper-v要好

 

KVM各类零部件的涉及

libvirt(virt-install,API,服务,virsh)-》qemu(qemu-kvm进度,qemu-img)-》KVM设想机-》kvm.ko
内核模块  

libvirt:红帽提供的一个处理KVM虚构机的API库,提供了virsh命令和部分python
API

qemu:KVM的顾客空间管理工科具,用于处理基本空间kvm.ko

kvm.ko:KVM的中坚,提供了虚构CPU的工具,centos6种类设置的时候私下认可已经自带kvm.ko,只要求加载这么些内核模块

 

 

安装流程

物理机铺排流程

安装KVM组件
1、首先检查系统是不是帮助kvm,有四个先决条件
a、系统是x86的,通过命令

uname -a

b、CPU 扶植设想化手艺

egrep 'vmx|svm' /proc/cpuinfo

其间intel cpu援救会有vmx,amd cpu帮忙会有svm
即使看到有出口结果,即评释cpu 帮忙设想化。同期特别注意要求检查 BIOS
中是或不是张开VT,若无启用,虚构机将会要命慢。

2、使用yum安装kvm
安装kvm内核

yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64 qemu-img

设置virt管理工科具

yum -y install libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 python-virtinst bridge-utils

说明:
kvm:软件包中蕴涵KVM内核模块,它在暗中认可linux内核中提供kvm管理程序
libvirts:安装设想机管理工科具,使用virsh等一声令下来保管和调节虚构机。
bridge-utils:设置网络网卡桥接。
qemu-img:安装qemu组件,使用qemu命令来创制磁盘等。

 

加载kvm 内核

modprobe kvm
modprobe kvm-intel

 

查阅kvm内核模块是还是不是加载成功

modprobe -ls | grep kvm

 

亚洲必赢手机入口,3、配置网络桥接,
进去目录 /etc/sysconfig/network-scripts,复制一份原有的ifcfg-eth0 为
ifcfg-br0
cp ifcfg-eth0 ifcfg-br0
修改ifcfg-br0,内容如下:

DEVICE="br0"
BOOTPROTO=static
ONBOOT="yes"
TYPE="Bridge"
IPADDR=10.11.30.52
NETMASK=255.255.255.0
GATEWAY=10.11.30.1
DEFROUTE=yes

IPADDLacrosse、GATEWAY、NETMASK遵照本身的实在情形修改。
修改 ifcfg-em1 内容如下:

DEVICE="em1"
BOOTPROTO=none
NM_CONTROLLED="no"
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
HWADDR=34:17:EB:F0:01:1F
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="System em1"

 

重启网络服务就能够。

/etc/init.d/network restart

一旦出现问题,关闭 NetworkManager 后重试。

chkconfig NetworkManager off
service NetworkManager stop

 

4、运营或重启libvirtd服务和messagebus 服务

/etc/init.d/libvirtd start
/etc/init.d/messagebus restart

 

那时能够查阅网络接口列表
brctl show 结果如下:
bridge name bridge id STP enabled interfaces
br0 8000.000c2955a70a no eth0
virbr0 8000.52540014efd5 yes virbr0-nic

 

变化虚构机流程(在大要机上实践)
1 安装screen 工具

 yum install -y screen

2 生成qcow2 格式的镜像文件

qemu-img create -f qcow2 /data/kvmimg/gzwtest01.qcow2 60G

 

3 在screen里面新开二个session

screen -S instSys

 

4 安装一台Windows虚构机

virt-install --name=gzwtest01 --ram 4096 --vcpus=16 --autostart --hvm \
--disk path=/data/kvmimg/gzwtest01.qcow2,size=60,format=qcow2 \
--cdrom /data/download/cn_windows_server_2012_r2_with_update_x64_dvd_6052725.iso \
--graphics vnc,listen=0.0.0.0,port=5902 \
--network bridge=br0,model=e1000 --force --connect qemu:///system

说明

name:设想机名称
ram:内存,单位MB
vcpus:逻辑CPU数
autostart:随母鸡开机运行而运转,母鸡开机,设想机也同步开机
hvm:完全虚构化
model:钦定网卡为千兆
disk path:镜像文件地点
size:设想机磁盘大小,单位GB
format:镜像文件格式
accelerate:
force:跳过具备交互提醒,也正是yum install -y里的-y选项
cdrom:操作系统安装文件路线
graphics:
钦点安装通过哪个种类等级次序,能够是vnc,也得以没有图形,这里是VNC,如果是文本graphics
none
listen:0.0.0.0表示侦听全体来源地址,能够修改/etc/libvirt/qemu.conf
port:vnc端口号
vncport:VNC端口
network:钦点互连网项目
bridge:宿主机的桥接网卡是br0
connect:连接到二个非暗中同意的hypervisor

5 使用VNC软件连连虚构机进行系统装置
VNC软件名称 vnc-4_1_2-x86_win32_viewer
10.11.30.53:5902
10.11.30.53:物理机的IP
5902:虚构机对应端口

至此,一台Windows的KVM虚构机安排完结

 

正文版权归笔者全数,未经作者同意不得转发。

kvm介绍:

KVM是Kernel  Virtual  Machine的简写,前段时间Red 
Hat只援救在63人的中华VHEL5.4及以上的系列运作KVM,同不经常间硬件须求援助VT本领。KVM的前身是QEMU,二零零六年被Red 
Hat公司收购并得到一项hypervisor本事,但是Red 
Hat的KVM被感觉是将成为未来Linux 
hypervisor的主流,准确的话,KVM仅仅是Linux内核的二个模块。管理和创造完整的KVM设想机,须求越来越多的协助工具。

 

qemu介绍:

QEMU是一套由法布Rees·Bella(法布里ce
Bellard)所编写的以GPL证件本分发源码的模仿管理器,在GNU/Linux阳台上运用大范围。BochsPearPC等与其类似,但不具备其众多风味,比方高速度及跨平台的特点,通过KQEMU其一闭源的加快器,QEMU能模拟至左近真实计算机的速度。

当前,0.9.1及前边版本的qemu能够利用kqemu加快器。在qemu1.0后头的本子,都力不从心利用kqemu,首要接纳qemu-kvm加快模块,並且加速效果以至牢固显著好于kqemu

 

安装kvm相关包

# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y

证实设想机是或不是协理kvm

 # grep -E ‘vmx|svm’ /proc/cpuinfo

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs 
bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 
pcid sse4_1 sse4_2 x2apic 
movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt

 

创造硬盘

-f钦赐镜像创造的格式

# qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 10G

Formatting '/opt/CentOS-7.2-x86_64.raw', fmt=raw size=10737418240

 

验证

# lsmod |grep kvm

kvm_intel             162153  0

kvm                   525259  1 kvm_intel

 

开启libvirtd

[root@localhost ~]# systemctl enable libvirtd

Created symlink from /etc/systemd/system/sockets.target.wants/virtlockd.socket to /usr/lib/systemd/system/virtlockd.socket.

[root@localhost ~]# systemctl start libvirtd

[root@localhost ~]# systemctl status libvirtd

上传镜像

# dd if=/dev/cdrom of=/opt/CentOS-7.2.iso

8456192+0 records in

8456192+0 records out

4329570304 bytes (4.3 GB) copied, 200.903 s, 21.6 MB/s

 

设想机安装协理查询

# virt-install --help

# virt-install --name CentOS-7.1-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.2.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole



Starting install...

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

 

假诺一点都不小心写错 须要重新安装

# virsh undefine CentOS-7.1-x86_64

 

接下来再进行 安装

登录vnc

 亚洲必赢手机入口 3

 亚洲必赢手机入口 4

利用tab键编写内核参数 修改网卡名称为eth0

net.ifnames=0 biosdevname=0

 

修改完回车

 

设置收尾reboot virt就能够被关闭

[root@localhost ~]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 -     CentOS-7.1-x86_64              shut off

 

 

手动开启virt

[root@localhost ~]# virsh start CentOS-7.1-x86_64

Domain CentOS-7.1-x86_64 started

 

再用vnc连接

 亚洲必赢手机入口 5

 

在vnc里修改eth0网卡配置文件

ONBOOT=yes

重启网卡

# systemctl restart network

 

翻看网卡

# ip ad li

 

 亚洲必赢手机入口 6

测验是或不是能三番四次外网

 亚洲必赢手机入口 7

给虚构机装上 ifconfig命令

# yum install -y net-tools

 

给设想机成立cpu

法一:通过修改xml文件来扭转

假设已经设置好了想要调整也是修改xml文件

virsh edit CentOS-7.1-x86_64

<domain type='kvm'>

  <name>CentOS-7.1-x86_64</name>

  <uuid>9d0660d2-d5c0-4c1e-b671-6b2c4ce84514</uuid>

  <memory unit='KiB'>1048576</memory>

  <currentMemory unit='KiB'>1048576</currentMemory>

  <vcpu placement='auto' current="1">4</vcpu>

 

 

重启生效

[root@localhost ~]# virsh shutdown CentOS-7.1-x86_64

Domain CentOS-7.1-x86_64 is being shutdown

 

 

[root@localhost ~]# virsh start CentOS-7.1-x86_64   

Domain CentOS-7.1-x86_64 started

 

法二:也可以 手动install

# virt-install --help|grep cpu

 --vcpus VCPUS         Number of vcpus to configure for your guest. Ex:

                        --vcpus 5

                        --vcpus 5,maxcpus=10,cpuset=1-4,6,8

                        --vcpus sockets=2,cores=4,threads=2,

  --cpu CPU             CPU model and features. Ex:

                        --cpu coreduo,+x2apic

                        --cpu host

 

翻开一下设想机的cpu个数

 亚洲必赢手机入口 8

 

cpu的热增多

[root@localhost ~]# virsh setvcpus CentOS-7.1-x86_64 2 --live

 

加上完后 cat /proc/cpuinfo查看

 亚洲必赢手机入口 9

 

 

翻看cpu的办事意况

 亚洲必赢手机入口 10

 

潜心:热增添只好增添不可能压缩,增多的最大个数由xml文件里安装的个数调控

<vcpu placement='auto' current="1">4</vcpu>

 

[root@localhost ~]#  virsh setvcpus CentOS-7.1-x86_64 3 --live

[root@localhost ~]#  virsh setvcpus CentOS-7.1-x86_64 2 --live

error: unsupported configuration: failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count

 

 

 

给虚构机热加多 内部存款和储蓄器

[root@localhost ~]# virsh edit CentOS-7.1-x86_64

<memory unit='KiB'>4048576</memory>         

 

重启虚拟机进度

[root@localhost ~]# virsh shutdown CentOS-7.1-x86_64

Domain CentOS-7.1-x86_64 is being shutdown



[root@localhost ~]# virsh start CentOS-7.1-x86_64   

Domain CentOS-7.1-x86_64 started

 

 

管住虚拟机内存的下令

[root@localhost ~]# virsh qemu-monitor-comman

 

前面接–help查看 命令使用

翻开设想机的内部存款和储蓄器

 亚洲必赢手机入口 11

 

在巅峰查看设想机内部存款和储蓄器

[root@localhost ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon

balloon: actual=1024

 

安装设想机内存600M

[root@localhost ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd  balloon 600

 

在vnc上查看虚构机内存,能够窥见彰显不是很准

 亚洲必赢手机入口 12

 

 

给虚构机设置2g内部存款和储蓄器

 

[root@localhost ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd  balloon 2000

[root@localhost ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info  balloon

balloon: actual=2000

 

 

自动生成的xml文件存放地方

[root@localhost ~]# cd /etc/libvirt/qemu/

[root@localhost qemu]#

CentOS-7.1-x86_64.xml  networks

 

 

图形界面管理创造设想机

# virt-manager

 

libvirt介绍

近日主流Linux平台上默许的设想化管理工具virt-manager(图形化),virt-install(命令行形式)等均基于libvirt开采而成。

Libvirt 库是一种实现 Linux 虚构化效能的 Linux® API,它援助种种虚构机监察和控制程序,包涵 Xen 和 KVM,以至 QEMU 和用于别的操作系统的片段虚构产品。

libvirt 提供一种设想机监察和控制程序不可见的
API 来安全管理运作于主机上的顾客操作系统。libvirt 本身 不是一种工具,
它是一种能够创立工具来治本顾客操作系统的 API。libvirt 自己营造于一种浮泛的定义之上。它为受协助的设想机监察和控制程序完结的常用效能提供通用的
API。libvirt 初步是特意为 Xen 设计的一种处理 API,后来被扩充为可支撑两个设想机监控程序。

virsh 管理工科具

查看:

[root@localhost qemu]# virsh list

 Id    Name                           State

----------------------------------------------------

 1     CentOS-7.1-x86_64              running



[root@localhost qemu]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 1     CentOS-7.1-x86_64              running



[root@localhost ~]# iptables -t nat -vnL

Chain PREROUTING (policy ACCEPT 1 packets, 52 bytes)

 pkts bytes target     prot opt in     out     source               destination         



Chain INPUT (policy ACCEPT 1 packets, 52 bytes)

 pkts bytes target     prot opt in     out     source               destination         



Chain OUTPUT (policy ACCEPT 15 packets, 1225 bytes)

 pkts bytes target     prot opt in     out     source               destination         



Chain POSTROUTING (policy ACCEPT 15 packets, 1225 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    2   267 RETURN     all  --  *      *       192.168.122.0/24     224.0.0.0/24        

    0     0 RETURN     all  --  *      *       192.168.122.0/24     255.255.255.255     

    0     0 MASQUERADE  tcp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535

    0     0 MASQUERADE  udp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535

0     0 MASQUERADE  all  --  *      *       192.168.122.0/24    !192.168.122.0/24

 

 

[root@localhost ~]# cat /var/lib/libvirt/dnsmasq/default.conf

##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE

##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:

##    virsh net-edit default

## or other application using the libvirt API.

##

## dnsmasq conf file created by libvirt

strict-order

pid-file=/var/run/libvirt/network/default.pid

except-interface=lo

bind-dynamic

interface=virbr0

dhcp-range=192.168.122.2,192.168.122.254

dhcp-no-override

dhcp-authoritative

dhcp-lease-max=253

dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile

addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts

 

 

支撑的硬盘的花色

# qemu-img --help

Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

 

全镜像格式

稀疏格式

raw

qcow2(支持压缩,快照,镜像)

 

增加网桥

[root@localhost ~]# brctl show

bridge name     bridge id               STP enabled     interfaces

virbr0          8000.fe54006fd14f       yes             vnet0

[root@localhost ~]# brctl addbr br0

[root@localhost ~]# brctl show     

bridge name     bridge id               STP enabled     interfaces

br0             8000.000000000000       no

virbr0          8000.fe54006fd14f       yes             vnet0

[root@localhost ~]# brctl addif br0 eth0 && ip addr del dev eth0 10.0.0.111/24 && ifconfig br0 10.0.0.111/24 up &&

route add default gw 10.0.0.2 && iptables -F

 

 亚洲必赢手机入口 13

 

 

设想机的去除命令

virsh undefine 主机名

 

导出xml命令

[root@localhost ~]# virsh --help|grep dump

    dump                           dump the core of a domain to a file for analysis

    dumpxml                        domain information in XML

    save-image-dumpxml             saved state domain information in XML

    iface-dumpxml                  interface information in XML

    nwfilter-dumpxml               network filter information in XML

    net-dumpxml                    network information in XML

    nodedev-dumpxml                node device details in XML

    secret-dumpxml                 secret attributes in XML

    snapshot-dumpxml               Dump XML for a domain snapshot

    pool-dumpxml                   pool information in XML

vol-dumpxml                    vol information in XML

 

 

操作设想机的常用管理命令

virsh start

virsh shutdown

virsh edit

virsh destroy  相当于物理机直接拔电源  kill -9 进程也是一样

virsh suspended 终止

virsh resumed   恢复

qemu-img      磁盘管理命令

 

 

CPU 优化 vt-x

 亚洲必赢手机入口 14

 

 

taskset 绑定KVM进度到一定的CPU,收缩Cache Miss

 

内部存款和储蓄器优化

 亚洲必赢手机入口 15

 

  1. 宿主机设想内存 -> 宿主机物理内部存款和储蓄器

      

虚构机的设想内部存款和储蓄器 -》 虚构机的概况内部存款和储蓄器

   影子列表

  宿主机虚构内部存款和储蓄器 -》    宿主机物理内部存储器

    ept 内部存款和储蓄器寻址

ksmd暗许开启  来压缩内部存款和储蓄器空间
合併内部存储器一样内容

 

 

writeback质量最佳可是最不安全
 断电数占有极大可能率不一齐

WriteThrough 最慢但是最安全
 (私下认可是该格局)

[root@localhost ~]# ps -ef |grep ksmd

root        282      2  0 21:39 ?        00:00:00 [ksmd]

 

大页内部存款和储蓄器私下认可开启

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

 

  

khugepaged将三回九转可用4k的内部存款和储蓄器页合併成2M的大页文件

[root@localhost ~]# ps -ef|grep kh

root        283      2  0 21:39 ?        00:00:01 [khugepaged]

I/O

私下认可使用 Virtio 半虚拟化队列接口

virio-net virio-blk

 

IO Schedulers

电梯算法

  1. Noop Sheduler FIFO SSD    什么都不干的调整措施
  2. Anticipatory IO Sheduler(“as sheduler”)
  3. Deadline Sheduler     甘休时间的调整格局 暗中同意读短于写
    平常用来数据库
  4. Complete Fair Queueing Scheduler(“cfq sheduler”) 完全公平的调解的艺术

linux援救的调解算法

[root@localhost ~]# dmesg |grep -i scheduler

[    0.933120] io scheduler noop registered

[    0.933122] io scheduler deadline registered (default)

[    0.933137] io scheduler cfq registered

 

翻看当前采取的调节算法

[root@localhost ~]# cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

 

目前更换当前的算法

[root@localhost ~]# echo cfq > /sys/block/sda/queue/scheduler

[root@localhost ~]# cat /sys/block/sda/queue/scheduler                     

noop deadline [cfq]

 

恒久修改

加入内核参数  elevator=noop

 

 

镜像制作:

 

  1. 分区的时候,只分三个/分区。
  2. 删去网卡和udev准绳里的uuid 和MAC
  3. 闭馆防火墙和selinux
  4. 安装常用包net-tools lrzsz
    screen tree vim wget

 

KVM管理平台介绍:

OpenStack

CloudStack  cloud.com集团–》Ctrix—》Apache基金会—》Java(商业化产品)

OpenNebula

ZStack

oVirt  科雷傲HEV的开源达成 Fedora Centos 瑞鹰HEL  https://www.ovirt.org/download/

   管理端+顾客端组成  oVirt Engine   oVirt主机/节点

sudo yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm



sudo yum install -y ovirt-engine



sudo engine-setup

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图