虚拟化技术之KVMlinux下安排与设置KVM虚拟机的步骤。

by admin on 2018年10月5日

亚洲必赢手机入口 1亚洲必赢手机入口 2一、kvm环境准备

近期只要以外网搞一模拟监督系统,正好有同等尊服务器配置于大,也远非跑啊要之业务,就将来扛了一个KVM虚拟机,可能是平常各种虚拟机用的较多,配置起感到比想象中概括的几近,简单记录下过程

kvm介绍:

KVM是Kernel  Virtual  Machine的简写,目前Red 
Hat只支持于64各类之RHEL5.4及以上的体系运作KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,2008年吃Red 
Hat公司收购并收获同样项hypervisor技术,不过Red 
Hat的KVM被认为是拿变为未来Linux 
hypervisor的主流,准确来说,KVM仅仅是Linux内核的一个模块。管理及创造完整的KVM虚拟机,需要再多的辅助工具。

 

备干活

qemu介绍:

QEMU是同法由法布里斯·贝拉(Fabrice
Bellard)所编纂的因GPL照分发源码的学处理器,在GNU/Linux平台达成采用大规模。Bochs,PearPC齐和该类似,但非负有该众多特征,比如高快跟跨平台的特性,通过KQEMU此闭源的加速器,QEMU能效仿至接近实际电脑的速。

手上,0.9.1以及前面版本的qemu可以使用kqemu加速器。在qemu1.0自此的本子,都爱莫能助运用kqemu,主要采取qemu-kvm增速模块,并且加速效果跟稳定明显好于kqemu

 

宿主机为centos 6.8 64各项,检查宿主机CPU是否支持虚拟化:

安装kvm相关包

# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install -y
cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l;

证明虚拟机是否支持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

 

结果大于0表示支持

缔造硬盘

-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

安装kvm

高达传镜像

# 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

 

KVM核心软件包:

虚拟机安装帮助查询

# 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

 

 

yum install kvm libvirt python-virtinst qemu-kvm virt-viewer
bridge-utils

手动开启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

 

要是服务器上起桌面环境,想使图形界面管理器virt-manager,可以装完整的KVM环境:

给虚拟机创建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

 

 

 

yum groupinstall Virtualization ‘Virtualization Client’ ‘Virtualization
Platform’ ‘Virtualization Tools’

为虚拟机热添加 内存

[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(支持压缩,快照,镜像)

 

lsmod | grep kvm

累加网桥

[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      磁盘管理命令

 

 

/etc/init.d/libvirtd start

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

 

chkconfig libvirtd on

KVM管理平台介绍:

OpenStack

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

OpenNebula

ZStack

oVirt  RHEV的开源实现 Fedora Centos RHEL  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

 

起先libvirtd后,会活动创建了一个网卡,并启动dnsmasq服务,用来吗虚拟机分配IP地址

创立虚拟机

下载虚拟机要装的ISO系统镜像文件,之后需要创建存储池,指定在宿主机上虚拟机磁盘的囤积位置,创建存储目录:

mkdir -p /opt/kvm

概念一个储存池和绑定目录:

virsh pool-define-as vmspool --type dir --target /opt/kvm

树并激活存储池:

virsh pool-build vmspool
virsh pool-start vmspool

使用存储池创建虚拟机,并由此vnc连接:

virt-install \
--hvm \ #全虚拟化
--name=zabbix \#虚拟机名字
--ram=4096 \ #分配内存
--vcpus=4 \ #分配CPU数
--cdrom=/opt/kvm/iso/CentOS-7-x86_64-DVD-1511.iso \ #使用的ISO
--virt-type=kvm \ #虚拟机类型
--disk path=/opt/kvm/zabbix.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 \ #磁盘大小,格式
--network netwrok=default \ #网络设置,defalut为NAT模式
--accelerate \ #KVM内核加速
--graphics vnc,listen=0.0.0.0,port=5922,password=123123\ #vnc配置
--force \
--autostart

尔后采用vnc客户端连接
宿主机IP:5922,即可使用图形安装系统;也得挑选nographics模式,无需vnc在命令行下安装,建议采用vnc

设置到位后会见变动:

  • 虚拟机的配备文件:/etc/libvirt/qemu/zabbix.xml
  • 虚拟硬盘文件:/opt/kvm/zabbix.qcow2
  • NAT网络配置文件:/etc/libvirt/qemu/networks/default.xml

安排网络

KVM可以配备有限栽:

  • NAT网络:
    虚拟机使用宿主机的网访问公网,宿主机和虚构机能互相访问,但非支持外部看虚拟机
  • 桥接网络:
    虚拟机复用宿主机物理网卡,虚拟机与宿主机在网络中角色完全相同,支持外部看

配置NAT网络

默认会产生一个受default的NAT虚拟网络,查看NAT网络:

virsh net-list --all

苟要创建或者修改NAT网络,要优先修default.xml:

virsh net-edit default

再也加载与激活配置:

virsh net-define /etc/libvirt/qemu/networks/default.xml

启动NAT网络:

virsh net-start default
virsh net-autostart default

起步NAT后会自动生成一个虚构桥接设备virbr0,并分配IP地址,查看状态:

brctl show

好端端情况下libirtd启动后即便会启动virbr0,并活动添加IPtables规则来落实NAT,要保管打开ip_forward,在/etc/sysctl.conf中:

net.ipv4.ip_forward = 1
sysctl -p

开行虚机并设置自动获得IP即可,如果想手动指定虚拟机IP,要专注安排的IP需以NAT网段内

布桥接网络

网如设置了桌面环境,网络会由于NetworkManager进行田间管理,NetworkManager不支持桥接,需要关闭NetworkManger:

chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network start

匪思关闭NetworkManager,也可以当ifcfg-br0中手动添加参数”NM_CONTROLLED=no”

始建网桥:

virsh iface-bridge eth0 br0

开创了后ifconfig会看到br0网桥,如果eth0上发多单IP,更改下相应的文书称, 
如:ifcfg-eth0:1改观吧ifcfg-br0:1

编排虚拟机的安排文件,使用新的网桥:

virsh edit zabbix

找到网卡配置,改呢:

<interface type='bridge'>
 <mac address='52:54:00:7a:f4:9b'/>
 <source bridge='br0'/>
 <model type='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

本身是因此底br0,为虚拟机添加多片网卡只需要复制多个interface,并保管mac
address和PCI地址不同即可

重加载配置:

virsh define /etc/libvirt/qemu/zabbix.xml

更开虚拟机:

virsh shutdown zabbix
virsh start zabbix

之后用VNC连接虚拟机并安装下网即可

常用操作

KVM相关操作都经过vish命令完成,参数虽然多,但是效果一目了然,很直观

创办虚拟机快照:

virsh snapshot-create-as --domain zabbix --name init_snap_1

也可以简写成:

virsh snapshot-create-as zabbix init_snap_1

快照创建后安排文件于/var/lib/libvirt/qemu/snapshot/zabbix/init_snap_1.xml

翻开快照:

snapshot-list zabbix

抹快照:

 snapshot-delete zabbix init_snap_1

排错

1、ERROR Format cannot be specified for unmanaged storage.

virt-manager 没有找到存储池,创建储存池即可

2、KVM VNC客户端连接闪退

应用real
vnc或者其他vnc客户端连接kvm闪退,把客户端设置中之ColourLevel值设置为rgb222或full即可

3、virsh shutdown 无法关闭虚拟机

动用该令关闭虚拟机时,KVM是往虚拟机发送一个ACPI的授命,需要虚拟机安装acpid服务:

yum -y install acpid && /etc/init.d/acpid start

再不只能以virsh destroy 强制关闭虚拟机

如上就是本文的全部内容,希望对大家之上抱有助,也希望大家多支持脚本的小。

汝或许感兴趣之章:

  • 详解Linux
    虚拟机根分区磁盘扩充空间记录
  • 【Linux】VMware虚拟机中哪些安排静态IP详解
  • Linux系列教程之虚拟机中装置Centos7.0
  • 详解在Linux虚拟机下安排tomcat
  • 在VMware虚拟机下安装Linux的图文教程(高级设置)
  • linux
    普通用户切换成root免密码的兑现
  • 以Linux环境下mysql的root密码忘记解决方式(三栽)
  • linux系统中重置mysql的root密码
  • 虚构机Linux系统忘记密码修改root或其他用户密码的办法

相关文章

发表评论

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

网站地图xml地图