KVM 安装笔记

grep -E "(vmx|svm)" /proc/cpuinfo
yum install -y qemu-kvm libvirt
yum install -y virt-install
systemctl enable libvirtd
systemctl start libvirtd
[root@linux-node1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.88.119  netmask 255.255.255.0  broadcast 192.168.88.255
        inet6 fe80::c853:a386:4cd0:16ef  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b8:e6:c9  txqueuelen 1000  (Ethernet)
        RX packets 28302  bytes 38536778 (36.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6154  bytes 826463 (807.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 68  bytes 5916 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5916 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:c2:bf:e3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

注意: 硬盘格式为 raw 时,如下:

root@linux-node1 ~]# qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G
root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024  --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1804.iso --disk path=/opt/CentOS-7-x86_64.raw  --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

注意: 硬盘格式为 qcow2 时,如下:

[root@linux-node1 ~]# qemu-img create -f qcow2 /tmp/test.qcow2 10G
Formatting '/tmp/test.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@linux-node1 ~]# ls -lh /tmp/test.qcow2 
-rw-r--r--. 1 root root 193K Dec 22 23:08 /tmp/test.qcow2
[root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-test-7-x86_64 --ram 1024  --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1804.iso --disk path=/tmp/CentOS-7-x86_64.qcow2,size=10,bus=virtio,cache=none,format=qcow2  --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

Starting install...
Allocating 'CentOS-7-x86_64.qcow2'                                          |  10 GB  00:00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

安装 TightVNC Viewer

TightVNC Viewer:连接方式: 本机IP:5900

jinru安装界面,把网卡设置为eth1的格式
按 Tab 健

标准化的管理

net.ifnames=0 biosdevname=0
  • CPU 热添加(宿主机和虚拟机系统必须是CentOS 7)
    /etc/libvirt/qemu 查看所有的虚拟机 XML 文件

通过命令 virsh edit CentOS-7-x86_64

<vcpu placement='static'>1</vcpu>
# 修改为:
<vcpu placement='auto' current='1'>4</vcpu>

执行 virsh setvcpus CentOS-7-x86_64 2 --live,再在虚拟机中查看CPU信息。

  • 查看当前虚拟机的内存大小
# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon
balloon: actual=1024
  • 热修改虚拟机内存为: 512M
# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 512 

配置虚拟机桥接网络

查看桥接的网卡

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400c57897       yes             virbr0-nic
                                                        vnet0
  1. 新增桥接网卡
[root@linux-node1 ~]# brctl addbr br0
[root@linux-node1 ~]# brctl show     
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
virbr0          8000.525400c57897       yes             virbr0-nic
                                                        vnet0
  1. br0 桥接到宿主机的网卡 ens33 上,生产环境下用脚本执行
[root@linux-node1 ~]# brctl addif br0 ens33
  1. 此时远程连接断开,只能在控制台操作
ip addr del dev ens33 192.168.88.119/24
# 此时可 ifconfig 查看IP情况
ifconfig br0 192.168.88.119/24 up
# 此时可 ifconfig 查看IP情况
  1. 配置网关
[root@linux-node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@linux-node1 ~]# route add default gw 192.168.88.254
[root@linux-node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.88.254  0.0.0.0         UG    0      0        0 br0
192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

虚拟机网卡桥接到宿主机的 br0,在 /etc/libvirt/qemu 目录中找到对应主机的XML配置文件,在配置文件中找到如下内容修改

注意:用命令virsh edit CentOS-7-x86_64

<interface type='network'>
  <mac address='52:54:00:d5:79:94'/>
  <source network='default'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

修改为如下:

<interface type='bridge'>
  <mac address='52:54:00:d5:79:94'/>
  <source bridge='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

重启虚拟机

# virsh shutdown CentOS-7-x86_64
# virsh start CentOS-7-x86_64

在虚拟机中查看网卡信息,看网卡IP是否是与宿主机同网段的IP。

可将虚拟机IP设置为静态IP地址

TYPE="Ethernet"
BOOTPROTO="static"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.88.120
NETMAST=255.255.255.0
GATEWAY=192.168.88.254

重启网卡

systemctl restart network
KVM 优化
  • CPU 优化

将虚拟机绑定在一个宿主机的某个内核上

taskset -cp 1 25718
taskset -cp 3 25720
taskset -cp 5 25722

也可以绑定多个CPU

taskset -cp 1,2 25718

绑定后,可以使用 top命令查看

  • 内存优化

  • I/O 优化

I/O调度算法

[root@linux-node1 ~]# uname -a
Linux linux-node1 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-node1 ~]# dmesg | grep -i scheduler
[    2.347673] io scheduler noop registered
[    2.347688] io scheduler deadline registered (default)
[    2.347748] io scheduler cfq registered
[    2.347751] io scheduler mq-deadline registered
[    2.347754] io scheduler kyber registered
[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler 
noop [deadline] cfq 

制作虚拟机镜像

  1. 下载一个ISO
  2. 创建虚拟机磁盘
  3. virt-install 安装虚拟机
    3.1 不使用 swap 分区
    3.2 只分一个 /
    3.3 不使用 LVM 等
# virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024  --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1804.iso --disk path=/opt/CentOS-7-x86_64.raw  --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
  1. 安装完毕后,初始化
    4.1 关闭 SELinux, iptables
    4.2 修改网卡配置,去掉 UUID MAC 等
    4.3 安装必备的软件
yum -y install epel-release
yum update -y
yum -y install wget lrzsz wget lsof sysstat nmap tcpdump curl vim 
posted @ 2018-12-23 12:11  McSiberiaWolf  阅读(273)  评论(0)    收藏  举报