KVM
虚拟化软件的差别
虚拟化软件(全): qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
xen(半) :性能特别好,需要使用专门修改之后的内核,兼容性差! RedHat 5.5 xen
kvm KVM(全): 全虚拟机,它有硬件支持 CPU,基于内核,而且不需要使用专门的内核 centos6 kvm 性能较好,兼容较好。
KVM 系统需求
- 1CPU 核心
- 2G 内存
- 6G 硬盘
1# 查看系统版本
2[root@openstack ~]# cat /etc/centos-release
3
4# 首先验证CPU是否支持虚拟化,输入有vmx或svm就支持,支持虚拟化则就支持KVM
5[root@openstack ~]# cat /proc/cpuinfo | egrep 'vmx|svm'
关闭防火墙和 SElinux
1# 关闭selinux
2[root@openstack ~]# systemctl stop firewalld.service #停止firewall
3[root@openstack ~]# systemctl disable firewalld.service #禁止firewall开机启动
4
5# 关闭selinux
6[root@openstack ~]# setenforce 0
7[root@openstack ~]# vim /etc/sysconfig/selinux
8SELINUX=disabled
安装 KVM
1# 查看是否加载KVM :这表明已经加载
2[root@openstack ~]# lsmod | grep kvm
3kvm_intel 170086 0
4kvm 566340 1 kvm_intel
5irqbypass 13503 1 kvm
6
7# 如果没有加载则执行以下命令加载KVM
8[root@openstack ~]# modprobe kvm
9
10# 安装KVM相关软件包
11## 网络参考
12[root@openstack ~]# yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -y
13qemu-kvm: KVM模块
14libvirt: 虚拟管理模块
15virt-manager: 图形界面管理虚拟机
16virt-install: 虚拟机命令行安装工具
17
18## 真实实验
19[root@localhost yum.repos.d]# yum install libvirt virt-install qemu-kvm -y
20
21# 启动libvirt并设置开机自启动
22[root@openstack ~]# systemctl start libvirtd
23[root@openstack ~]# systemctl enable libvirtd
24[root@localhost software]# systemctl status libvirtd.service
25 Active: active (running)
26
27# 远程桌面管理软件
28VNC-Viewer-6.19.325-Windows-64bit
29
30# 文件传输软件
31WinSCP_5.9.0.6786_Setup
安装一台 KVM 虚拟机
1[root@localhost software]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /vmdisk/centos2.raw,format=raw,size=10 --cdrom /software/CentOS-7.6-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
参数 | 作用 |
---|---|
--virt-type kvm | 虚拟化类型,默认是 qemu |
--os-type=linux | 系统类型 |
--os-variant rhel7 | 系统版本 |
--name CentOS7 | 虚拟机的名字 |
--memory 1024 | 虚拟机的内存 |
--vcpus 1 | 虚拟机 CPU 的核数 |
--disk /opt/centos2.raw,format=raw,size=10 | 虚拟机硬盘路径 |
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso | |
--network network=default | 使用默认 NAT 的网络 |
--graphics vnc,listen=0.0.0.0 | 将控制台通过 VNC 输出(服务端),使用 VNC 客户端 |
--noautoconsole |
查看虚拟机监听的端口
1[root@localhost /]# netstat -lntp
2Active Internet connections (only servers)
3Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
4tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 33359/qemu-kvm
5tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 22483/dnsmasq
6tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9396/sshd
7tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 9832/master
8tcp6 0 0 :::22 :::* LISTEN 9396/sshd
9tcp6 0 0 ::1:25 :::* LISTEN 9832/master
virsh 日常操作
1# 查看运行状态的虚拟机
2[root@localhost /]# virsh list
3
4# 查看所有的虚拟机
5[root@localhost /]# virsh list --all
6
7# 启动虚拟机
8[root@localhost /]# virsh start centos7
9
10# 正常关机
11[root@localhost /]# virsh shutdown centos7
12
13# 强制关机(尽可能不用)
14[root@localhost /]# virsh destory centos7
15
16# 重启
17[root@localhost /]# virsh reboot centos7
18
19# 导出虚拟机的配置文件
20[root@localhost vmdisk]# virsh dumpxml centos7 > /vmdisk/centos7.xml
21
22# 导入配置文件
23[root@localhost vmdisk]# virsh define cento7.xml
24
25# 删除虚拟机的配置文件(仅仅是删除虚拟机的配置文件)
26[root@localhost vmdisk]# virsh undefine centos7
27
28# 导入虚拟机配置文件
29[root@localhost vmdisk]# virsh define centos7.xml
30
31# 虚拟机配置文件默认路径在 /etc/libvirt/qemu 目录下
32[root@localhost vmdisk]# ls /etc/libvirt/qemu
33centos7.xml networks
34
35# 修改虚拟机配置文件
36[root@localhost vmdisk]# virsh edit centos7
37
38# 查看运行的虚拟机的磁盘路径
39[root@localhost vmdisk]# virsh dumpxml centos7 | grep raw
40 <driver name='qemu' type='raw'/>
41 <source file='/vmdisk/centos2.raw'/>
42
43# 修改虚拟机的名字(在关机的状态下重命名)
44[root@localhost vmdisk]# virsh domrename centos7 centos7_one
45Domain successfully renamed
46
47# 挂起虚拟机
48[root@localhost vmdisk]# virsh suspend centos7
49
50# 恢复虚拟机
51[root@localhost vmdisk]# virsh resume centos7
52
53# 查看VNC端口号 直接连接192.168.31.240:0 或 192.168.31.240:5900
54[root@localhost vmdisk]# virsh vncdisplay centos7_one
55:0
56
57# kvm虚拟机开机启动(libvirtd服务器启动的时候虚拟机就会跟着启动) systemctl restart libvirtd
58[root@localhost vmdisk]# virsh autostart centos7_one
59
60# 查看哪条虚拟机为开机自启动(设置开机自启动的虚拟机会有对应的xml文件,其实就是创建centos7.xml的软连接文件)
61[root@localhost vmdisk]# ls /etc/libvirt/qemu/autostart/
62
63# 禁止开机自启动
64[root@localhost vmdisk]# virsh autostart --disable centos7_one
65
66# 修改KVM虚拟机的内核参数配置参数
67[root@localhost ~]# ssh root@192.168.122.186 #连接KVM虚拟机
68[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
69[root@localhost ~]# reboot
70
71# 控制台 (可以取代VNC)
72[root@localhost vmdisk]# virsh console centos7_one
73[root@localhost vmdisk]# enter #回车
74[root@kvm1 ~]# lscpu | grep -i kvm
75Hypervisor vendor: KVM
76[root@localhost vmdisk]# logout
77[root@localhost vmdisk]# ctrl + ]
磁盘管理
磁盘格式 | 功能性 |
---|---|
raw | 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 |
qcow2 | cow(copyon write)占用空间小,支持快照,性能比 raw 差一点,方便传输 |
常用命令
1# 查看磁盘文件信息
2[root@localhost ~]# qemu-img info /vmdisk/centos2.raw
3image: /vmdisk/centos2.raw
4file format: raw
5virtual size: 10G (10737418240 bytes)
6disk size: 1.3G
7
8# 创建磁盘
9[root@localhost ~]# qemu-img create -f qcow2 /vmdisk/oldboy.qcow2 1G
10Formatting '/vmdisk/oldboy.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
11
12# 查看磁盘大小
13[root@localhost vmdisk]# ll -h
14total 1.3G
15-rw-------. 1 qemu qemu 10G Apr 30 10:03 centos2.raw
16-rw-r--r--. 1 root root 5.4K Apr 30 07:56 centos7.xml
17-rw-r--r--. 1 root root 193K Apr 30 10:05 oldboy.qcow2
18
19# 调整虚拟磁盘的容量
20[root@localhost vmdisk]# qemu-img resize /vmdisk/oldboy.qcow2 1T
21Image resized.
22[root@localhost vmdisk]# qemu-img info /vmdisk/oldboy.qcow2
23image: /vmdisk/oldboy.qcow2
24file format: qcow2
25virtual size: 1.0T (1099511627776 bytes)
26disk size: 212K
27cluster_size: 65536
28Format specific information:
29 compat: 1.1
30 lazy refcounts: false
31
32# raw格式的虚拟磁盘支持增减(缩容会导致数据丢失,生产环境中千万别用),扩容可以用。
33[root@localhost vmdisk]# qemu-img create /vmdisk/oldboy.raw 5G
34[root@localhost vmdisk]# qemu-img resize /vmdisk/oldboy.raw -2G
35Image resized.
36[root@localhost vmdisk]# qemu-img info /vmdisk/oldboy.raw
37image: /vmdisk/oldboy.raw
38file format: raw
39virtual size: 3.0G (3221225472 bytes)
40disk size: 0
41[root@localhost vmdisk]# qemu-img resize /vmdisk/oldboy.raw +2G
42
43# 磁盘格式转换:将raw格式的磁盘转换为qcow2格式 (虚拟机处于关机状态)
44[root@localhost vmdisk]# qemu-img convert -f raw -O qcow2 /vmdisk/oldboy.raw /vmdisk/oldboy2.qcow2
45修改虚拟机配置文件中的2行
46 <driver name='qemu' type='qcow2'/>
47 <source file='/vmdisk/centos2.qcow2'/>
快照管理
1# 创建快照
2[root@localhost vmdisk]# virsh snapshot-create centos7_one
3Domain snapshot 1619750229 created
4
5# 查看指定虚拟机的快照列表 1619750229是时间戳
6[root@localhost vmdisk]# virsh snapshot-list centos7_one
7 Name Creation Time State
8------------------------------------------------------------
9 1619750229 2021-04-30 10:37:09 +0800 running
10
11# 删除快照
12[root@localhost vmdisk]# virsh snapshot-delete centos7_one --snapshotname 1619750229
13Domain snapshot 1619750229 deleted
14
15# 创建快照指定名字 env_ok
16[root@localhost vmdisk]# virsh snapshot-create-as --name env_ok centos7_one
17Domain snapshot env_ok created
18
19# 还原快照 (系统时间也会随着快照的还原而还原,一定要加定时任务同步时间)
20[root@localhost vmdisk]# virsh snapshot-revert centos7_one --snapshotname env_ok
克隆
- 完整克隆
- 链接克隆
完整克隆
自动克隆
1# 完成克隆,基于centos7_one 克隆 backup
2[root@localhost ~]# virt-clone --auto-clone -o centos7_one -n backup
3
4# 查看克隆之后磁盘的位置
5[root@localhost ~]# virsh dumpxml backup | grep -i 'qcow2'
6 <driver name='qemu' type='qcow2'/>
7 <source file='/vmdisk/centos2-clone.qcow2'/>
8
9# 虚拟机的配置文件在这里
10[root@localhost ~]# ls /etc/libvirt/qemu/backup.xml
手动克隆
1# 克隆磁盘文件
2[root@localhost vmdisk]# cp centos2-clone.qcow2 backup02.qcow2
3
4# 导出之前backup 的虚拟机配置文件,命名为backup02.xml
5[root@localhost vmdisk]# virsh dumpxml backup > /vmdisk/backup02.xml
6
7# 修改虚拟机配置文件
8[root@localhost vmdisk]# vim /vmdisk/backup02.xml
9<name>backup02</name>
10<uuid>e3064380-2878-4451-b0b5-de82886ef214</uuid> # 删除UUID这一行
11<source file='/vmdisk/backup02.qcow2'/>
12<mac address='52:54:00:9b:a5:0f'/> # 删除mac地址这一行
13
14# 导入虚拟机配置文件 backup02.xml
15[root@localhost vmdisk]# virsh define /vmdisk/backup02.xml
16Domain backup02 defined from /vmdisk/backup02.xml
17
18# 查看当前虚拟机
19[root@localhost vmdisk]# virsh list --all
20 Id Name State
21----------------------------------------------------
22 - backup shut off
23 - backup02 shut off
24 - centos7_one shut off
25
26# 启动backup02虚拟机
27[root@localhost vmdisk]# virsh start backup02
28Domain backup02 started
链接克隆
只有手动克隆,这里模板机为 centos7_one,对应的磁盘文件是 centos2.qcow2
创建出来的链接磁盘必须是 qcow2 格式,但是模板磁盘可以是 raw、qcow2 都行
1# 创建链接克隆的磁盘
2[root@localhost vmdisk]# qemu-img create -f qcow2 -b /vmdisk/centos2.qcow2 /vmdisk/backup03.qcow2
3Formatting '/vmdisk/backup03.qcow2', fmt=qcow2 size=10737418240 backing_file='/vmdisk/centos2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
4
5# 查看链接磁盘文件
6[root@localhost vmdisk]# qemu-img info /vmdisk/backup03.qcow2
7image: /vmdisk/backup03.qcow2
8file format: qcow2
9virtual size: 10G (10737418240 bytes)
10disk size: 196K
11cluster_size: 65536
12backing file: /vmdisk/centos2.qcow2 # 基于此文件进行链接克隆,保存差异数据
13Format specific information:
14 compat: 1.1
15 lazy refcounts: false
16
17# 导出centos7_one的虚拟机配置文件
18[root@localhost vmdisk]# virsh dumpxml centos7_one > /vmdisk/backup03.xml
19
20# 修改backup03.xml虚拟机配置文件
21[root@localhost vmdisk]# vim /vmdisk/backup03.xml
22 <name>backup03</name>
23 <uuid>a4d33da7-73b9-4fe7-97f4-f6c50faf6d7c</uuid> # 删除
24 <source file='/vmdisk/backup03.qcow2'/>
25 <mac address='52:54:00:68:2c:6e'/> # 删除
26
27# 导入backup03.xml 虚拟机配置文件
28[root@localhost vmdisk]# virsh define /vmdisk/backup03.xml
29Domain backup03 defined from /vmdisk/backup03.xml
30
31# 启动backup03虚拟机
32[root@localhost vmdisk]# virsh start backup03
33Domain backup03 started
34
35
36# 查看虚拟机列表
37[root@localhost vmdisk]# virsh list --all
38 Id Name State
39----------------------------------------------------
40 5 backup02 running
41 6 backup03 running
42 - backup shut off
43 - centos7_one shut off
44
45# 查看VNC端口号
46[root@localhost vmdisk]# virsh vncdisplay backup03
47:1
全自动链接克隆脚本
link_clone.sh 脚本内容如下
1[root@localhost vmdisk]# cat link_clone.sh
2#!/bin/bash
3old_vm=$1
4new_vm=$2
5#a:生成虚拟机磁盘文件
6old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
7disk_tmp=`dirname $old_disk`
8qemu-img create -f qcow2 -b $old_disk ${disk_tmp}/${new_vm}.qcow2
9
10#b:生成虚拟机的配置文件
11virsh dumpxml $old_vm >/tmp/${new_vm}.xml
12#修改虚拟机的名字
13sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
14#删除虚拟机uuid
15sed -i '/<uuid>/d' /tmp/${new_vm}.xml
16#删除mac地址
17sed -i '/<mac address/d' /tmp/${new_vm}.xml
18#修改磁盘路径
19sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
20
21#c:导入虚拟机并进行启动测试
22virsh define /tmp/${new_vm}.xml
23virsh start ${new_vm}
24
执行脚本
1[root@localhost vmdisk]# sh link_clone.sh centos7_one test
2Formatting '/vmdisk/test.qcow2', fmt=qcow2 size=10737418240 backing_file='/vmdisk/centos2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
3Domain test defined from /tmp/test.xml
4
5Domain test started
6
桥接模式
默认虚拟机网络是 NAT 模式,网络 192.168.122.0/24
11.创建桥接网卡:基于物理网卡ens33创建 br0 网桥
2[root@localhost vmdisk]# virsh iface-bridge ens33 br0
3Created bridge br0 with attached device ens33
4
52.会报错断开连接,登录宿主机执行命令
6systemctl restart network
7
83.可以连上检查网络已有桥接网络 br0
9[root@localhost ~]# grep -i "." /etc/sysconfig/network-scripts/ifcfg-*
10
新虚拟机桥接模式
1# 代表新虚拟机交接到br0这个网卡上:安装新的虚拟机
2[root@localhost software]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /vmdisk/centos2.raw,format=raw,size=10 --cdrom /software/CentOS-7.6-x86_64-DVD-1810.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
3
4# 克隆新的虚拟机
5# 创建连接磁盘文件
6[root@localhost ~]# qemu-img create -f qcow2 -b /vmdisk/centos2.qcow2 /vmdisk/backup04.qcow2
7Formatting '/vmdisk/backup04.qcow2', fmt=qcow2 size=10737418240 backing_file='/vmdisk/centos2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
8
9# 安装并从硬盘启动新的虚拟机
10[root@localhost ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name backup04 --memory 1024 --vcpus 1 --disk /vmdisk/backup04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
11
12# 通过console 或 VNC连接虚拟机(console还没有设置,所以连接不上) 192.168.31.147/24
13[root@MiWiFi-R3P-srv ~]# ip addr
141: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
15 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
16 inet 127.0.0.1/8 scope host lo
17 valid_lft forever preferred_lft forever
18 inet6 ::1/128 scope host
19 valid_lft forever preferred_lft forever
202: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
21 link/ether 52:54:00🏎62:b4 brd ff:ff:ff:ff:ff:ff
22 inet 192.168.31.147/24 brd 192.168.31.255 scope global noprefixroute dynamic eth0
23 valid_lft 42822sec preferred_lft 42822sec
24 inet6 fe80::7d27:42de:ddcf:c118/64 scope link noprefixroute
25 valid_lft forever preferred_lft forever
老虚拟机从 NAT 模式改为桥接模式(修改虚拟机配置文件)
1# 注意需要虚拟机关机状态下修改,重启虚拟机才会生效
2[root@MiWiFi-R3P-srv ~]# virsh edit backup02
3<interface type='network'> ==> <interface type='bridge'>
4<source network='deafult'/> ==> <source bridge='br0'/>
5
6# 启动backup02 虚拟机
7[root@localhost ~]# virsh start backup02
8[root@localhost ~]# virsh vncdisplay backup02
9:0
10
11# 登录vnc查看ip,并且使用ssh连接验证
12
13# 登录之后可以自己设置IP地址,从DHCP模式设置为static模式
14[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
15TYPE="Ethernet"
16PROXY_METHOD="none"
17BROWSER_ONLY="no"
18BOOTPROTO="static"
19IPADDR=192.168.31.180
20NETMASK=255.255.255.0
21GATEWAY=192.168.31.1
22DNS1=192.168.31.1
23DEFROUTE="yes"
24IPV4_FAILURE_FATAL="no"
25IPV6INIT="yes"
26IPV6_AUTOCONF="yes"
27IPV6_DEFROUTE="yes"
28IPV6_FAILURE_FATAL="no"
29IPV6_ADDR_GEN_MODE="stable-privacy"
30NAME="eth0"
31UUID="12468621-5a40-48c9-b17b-17d7645a9ea4"
32DEVICE="eth0"
33ONBOOT="yes"
NAT 模式
机器 | 网段 |
---|---|
KVM 宿主机 | br0 192.168.31.140/24 (外网:桥接模式) virbr0 192.168.122.1/24(NAT 模式,与虚拟机通信) |
虚拟机 | 192.168.122.187/24 192.168.122.1/24 (网关) |
使用 iptables 让虚拟机实现上网
1# 编辑内核配置文件,开启转发
2[root@localhost ~]# vim /etc/sysctl.conf
3net.ipv4.ip_forward = 1
4
5# 使内核生效
6[root@localhost ~]# sysctl -p
7
8# 清空防火墙的filter表
9[root@localhost ~]# iptables -F
10
11# 添加转发规则
12[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE
13
14# 开启iptables
15[root@localhost ~]# systemctl start firewalld
热添加硬盘
添加另外一块磁盘
1# 创建磁盘文件
2[root@localhost ~]# qemu-img create -f qcow2 /vmdisk/backup03-add.qcow2 20G
3Formatting '/vmdisk/backup03-add.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off
4
5# 查看当前虚拟机所有盘符
6[root@localhost ~]# virsh dumpxml backup03 | grep target
7 <target dev='vda' bus='virtio'/>
8
9# 为虚拟机附加硬盘:设备名字叫vdb (这种方式是错误的:添加完之后磁盘容量是0,因为默认是raw类型)
10[root@localhost ~]# virsh attach-disk backup03 /vmdisk/backup03-add.qcow2 vdb
11Disk attached successfully
12
13# 卸载指定磁盘(临时)
14[root@localhost ~]# virsh detach-disk backup03 vdb
15Disk detached successfully
16
17# 卸载指定磁盘(永久)
18[root@localhost ~]# virsh detach-disk backup03 vdb --config
19Disk detached successfully
20
21# 为虚拟机附加硬盘,设备名字叫vdb(并且指定磁盘类型),临时添加,重启系统就会消失
22[root@localhost ~]# virsh attach-disk backup03 /vmdisk/backup03-add.qcow2 vdb --subdriver qcow2
23Disk attached successfully
24
25# 为虚拟机附加硬盘,设备名字叫vdb(并且指定磁盘类型)
26[root@localhost ~]# virsh attach-disk backup03 /vmdisk/backup03-add.qcow2 vdb --subdriver qcow2 --config
27
28# 进入虚拟机查看:发现有
29[root@localhost ~]# fdisk -l
30/dev/vdb :20GB
31
32# 格式化
33[root@localhost ~]# mkfs.xfs /dev/vdb
34
35# 将/dev/vdb 挂载到/mnt 目录上
36[root@localhost ~]# mount /dev/vdb /mnt
37
38# 复制数据到mnt目录
39[root@localhost ~]# cp /etc/services /mnt
40
41# 准备扩容(扩容之前需要umount 掉挂载点)
42[root@localhost ~]# umount /mnt
43
44# 剥离vdb从虚拟机中
45[root@localhost ~]# virsh detach-disk backup03 vdb
46Disk detached successfully
47
48# 扩容 +10G
49[root@localhost ~]# qemu-img resize /vmdisk/backup03-add.qcow2 +10G
50Image resized.
51
52# 查看磁盘信息
53[root@localhost ~]# qemu-img info /vmdisk/backup03-add.qcow2
54image: /vmdisk/backup03-add.qcow2
55file format: qcow2
56virtual size: 30G (32212254720 bytes)
57
58# 再次附加磁盘
59[root@localhost ~]# virsh attach-disk backup03 /vmdisk/backup03-add.qcow2 vdb --subdriver qcow2
60Disk attached successfully
61
62# 重新的mount
63[root@localhost ~]# mount /dev/vdb /mnt
64
65# 查看/mnt目录下的数据是否丢失
66[root@localhost ~]# ls /mnt
67services
68
69# 系统重新识别磁盘容量(更新磁盘分区信息)ex4文件系统使用 resize2fs /dev/vdb 更新分区信息
70[root@localhost ~]# xfs_growfs /dev/vdb
71
72# 再次查看挂载点容量 (发现变为30G)
73[root@localhost ~]# df -h
热添加网卡
1# 添加网卡 (临时添加,推荐使用)
2[root@localhost ~]# virsh attach-interface backup03 --type bridge --source br0 --model virtio
3Interface attached successfully
4
5# 添加网卡 (永久添加,但是需要重启)
6[root@localhost ~]# virsh attach-interface backup03 --type bridge --source br0 --model virtio --config
7Interface attached successfully
8
9# 移除网卡
10[root@localhost ~]# virsh detach-interface backup03 --type bridge --mac 52:54:00:6a:bc:f9
11Interface detached successfully
热添加内存
新虚拟机支持内存扩容
1# 创建连接磁盘
2[root@localhost ~]# qemu-img create -f qcow2 -b /vmdisk/centos2.qcow2 /vmdisk/backup05.qcow2
3Formatting '/vmdisk/backup05.qcow2', fmt=qcow2 size=10737418240 backing_file='/vmdisk/centos2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
4
5# 创建并启动新的虚拟机
6[root@localhost ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name backup05 --memory 512,maxmemory=2048 --vcpus 1 --disk /vmdisk/backup05.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
7
8# 查看当前内存
9[root@MiWiFi-R3P-srv ~]# free -m
10 total used free shared buff/cache available
11Mem: 463 96 246 8 119 217
12Swap: 0 0 0
13
14# 热添加内存(永久操作需要 --config)
15[root@localhost ~]# virsh setmem backup05 1024M
16
17# 查看当前内存
18[root@MiWiFi-R3P-srv ~]# free -m
19 total used free shared buff/cache available
20Mem: 975 96 759 8 119 729
21Swap: 0 0 0
22
老虚拟机支持内存扩容(修改完虚拟机配置文件需要重启)
1# 修改最大内存和当前内存
2[root@localhost ~]# virsh edit backup04
3<memory unit='KiB'>1048576</memory> ==> <memory unit='MiB'>2048</memory>
4<currentMemory unit='KiB'>1048576</currentMemory> ==> <currentMemory unit='MiB'>1024</currentMemory>
5
6# 重启虚拟机
7[root@localhost ~]# virsh shutdown backup04
8[root@localhost ~]# virsh start backup04
热添加 CPU
1# 创建连接磁盘
2[root@localhost ~]# qemu-img create -f qcow2 -b /vmdisk/centos2.qcow2 /vmdisk/backup06.qcow2
3
4# 创建并启动新的虚拟机
5[root@localhost ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name backup06 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /vmdisk/backup06.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
6
7# 查看CPU个数
8[root@MiWiFi-R3P-srv ~]# lscpu | grep "CPU(s):"
9CPU(s): 1
10NUMA node0 CPU(s): 0
11
12# 扩容CPU 为2个
13[root@localhost ~]# virsh setvcpus backup06 2
14
15# 查看CPU个数
16[root@MiWiFi-R3P-srv ~]# lscpu | grep "CPU(s):"
17CPU(s): 2
18NUMA node0 CPU(s): 0,1