虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理

文章目录

      • 虚拟化介绍
      • KVM介绍
      • KVM架构图
      • Centos7安装KVM
      • 创建kvm虚拟机
      • 管理kvm虚拟机
      • 克隆kvm虚拟机
      • kvm快照管理
      • kvm磁盘管理
        • 磁盘格式转换
        • 磁盘扩容
      • 调整cpu、内存、网卡
      • 迁移虚拟机

虚拟化介绍

  1. 虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源,VMware Workstation就是最常见的虚拟化软件

  2. 虚拟化技术分为全虚拟化和半虚拟化:早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM(Hypervisor虚拟机管理器)来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化(VMware Workstation;半虚拟化技术通过修改guestos内核,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋(XEN);后续cpu厂商使cpu处理器直接支持虚拟化,不需要通过VMM翻译指令了,也就无所谓半虚拟化和全虚拟化

  3. 常见的虚拟化软件:
    VMware系列:VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)
    Xen 开源 半虚拟化
    XenServer 商业,厂商Ctirx,基于Xen的
    KVM 开源 基于linux内核模块
    Hyper-V 商业,厂商微软
    Openvz 开源 基于linux 虚拟机和宿主机共用一个内核
    VirtualBox 开源 Sun公司开发 Oracle收购Sun

4.虚拟化架构:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第1张图片
VMware workstation以及之后要安装的KVM属于type2,是基于OS的虚拟OS资源的虚拟化工具,它能将OS闲置的资源加以充分利用,如果你的这台OS机器性能足够好,可以通过VMware Workstation创建DNS,DHCP,Apache等许多服务器,一个机子运行多个服务,节省了许多开支,这个作用是虚拟化所共有的特点。

VMware vSphere属于type1,是一种虚拟化方案包括很多东西,其核心是ESXi,ESXi独立安装在裸机上的操作系统(注意它不基于任何OS,它本身就是OS),通过它物理机的硬件资源被虚拟化为虚拟资源,之后再通过vCenter就能将安装了ESXi操作系统的物理机的资源进行整合,化为一个总的资源池,在这个资源池里面我们为各个部门划分不同大小的资源池方便其使用。

准确来说这两个不属于一个概念

VMware Workstation是一个基于OS的软件,而VMware vSphere则是根据企业的实际情况设计的一个虚拟化方案,它设计的软件,技术和要考虑的问题都要比VMware Workstation要多,要详细,要具体。

简单来说

VMware Workstation是一款基于OS的虚拟化软件

VMware vSphere则是一个具体的虚拟化方案

KVM介绍

  1. KVM是以色列公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
  2. KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor
  3. KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV
  4. KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能
  5. 只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样
  6. QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,性能不强,KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM,磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的
  7. KVM和QEMU-KVM通信是通过/dev/kvm实现的
  8. libvirt是用来管理KVM虚拟机的API,其命令为virsh

KVM架构图

虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第2张图片
kvm属于linux内核的一个模块,qemu-kvm作用于用户空间,通过/dev/kvm设备实现与内核的交互

Centos7安装KVM

安装前需要先查看cpu是否支持虚拟化:grep -Ei 'vmx|svm' /proc/cpuinfo
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第3张图片
如果能匹配到关键字则表示cpu支持虚拟化,vmx为Intel的cpu、svm为svm的cpu

关闭虚拟机后,新增一块50G硬盘,以及勾选虚拟化引擎的相关选项:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第4张图片
启动后关闭selinux:

[root@linux ~]# setenforce 0
[root@linux ~]# getenforce 
Permissive

#永久关闭还需编辑配置文件/etc/selinux/config

关闭firewalld或iptables:

[root@linux ~]# systemctl stop firewalld
[root@linux ~]# systemctl disable firewalld

查看新添加的硬盘:

[root@linux ~]# fdisk -l

磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a90c0

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      526335      262144   83  Linux
/dev/sda2          526336    62914559    31194112   8e  Linux LVM

磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:29.8 GB, 29796335616 字节,58195968 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2143 MB, 2143289344 字节,4186112 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

格式化:

[root@linux ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
无论如何也要继续? (y,n) y
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@linux ~]# blkid /dev/sdb
/dev/sdb: UUID="548a46cf-5d13-47d0-b7dc-37669e0375d7" TYPE="ext4" 

挂载到指定目录:

[root@linux ~]# mkdir /kvm_data
[root@linux ~]# mount /dev/sdb /kvm_data/

编辑配置文件,开机自动挂载:[root@localhost ~]# vi /etc/fstab

虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第5张图片
安装kvm:

[root@linux ~]# yum install -y  virt-*  libvirt  bridge-utils qemu-img

#安装kvm所需的包centos默认的yum源仓库已包含

启动服务:

[root@linux ~]# systemctl start  libvirtd

查看生成的虚拟网卡:

[root@linux ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.5254009fbf2d	yes		virbr0-nic

创建kvm虚拟机

使用kvm创建虚拟机之前需要先准备好iso镜像文件:

[root@linux ~]# ll /tmp/CentOS-7-x86_64-Everything-1908.iso 
-rw-r--r--. 1 root root 11026825216 2月  21 15:42 /tmp/CentOS-7-x86_64-Everything-1908.iso

安装虚拟机:

[root@linux ~]# virt-install --name=kvm01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-Everything-1908.iso --disk path=/kvm_data/kvm01.img,size=10 --bridge=virbr0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"

name 表示虚拟机名称
memory 表示设定的内存大小,maxmemory 表示最大内存大小,单位M,可以通过修改该虚拟机配置文件不关机的情况下调整
vcpus 表示cpu核数,maxvcpus 表示cpu最大核数,同上
os-type 表示系统类型,os-variant 表示系统版本
location 表示镜像文件位置
disk path 表示虚拟磁盘文件路径,size 表示虚拟磁盘大小,单位G
bridge 表示指定的虚拟网卡

执行后出现下图:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第6张图片
每个选项后的括号显示×,表示配置通过,显示!表示需要配置

1.语言设置,选择68)chinese后选择1) Simplified Chinese即可
2.时间设置,选择1)set timezone后选择亚洲然后选择上海即可
3.安装源和4.选择安装的软件保存默认最小安装即可
5.硬盘分区,选择对应的硬盘序号,显示×后,按c(continue)跳过,选择use all 使用所有空间后按c跳过,选择1)standard partition 标准分区
8.设置root密码

都配置好后输入b即可开始安装:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第7张图片
centos7.7版本安装完后会直接重启并提示登录,但centos7.7以下,centos6以上个别版本可能会出现kvm虚拟机重启导致宿主机也一起重启的问题(在kvm虚拟机操作init0,shutdown等命令也会使宿主机关闭),可以按 ctrl+] 退出kvm虚拟机的安装终端,再宿主机通过管理命令启动或关闭kvm虚拟机

完成后即可登录获取ip:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第8张图片
说明:需要注意的是该ip与宿主机不在同一网段,可以使用宿主机的网络访问外网,但不能在Windows上使用xshell等工具连接,只能在Windows连接宿主机,通过宿主机登录kvm虚拟机,原因是使用的虚拟网卡为virbr0,这是kvm服务自动生成的支持nat模式的虚拟网卡,如果需要kvm创建的虚拟机与宿主机在同一网段,需要使用桥接模式

使用桥接模式需要在宿主机拷贝一份ifcfg-ens33网卡文件,设定网卡名称(比如ifcfg-br0),type改为Bridge,ip位ens33网卡的地址,ens33配置文件中再讲ip相关的信息去掉,添加BRIDGE=br0,重启网络服务后再重启kvm,通过brctl show即可显示使用桥接模式的虚拟网卡br0,在安装kvm虚拟机时,命令中的bridge=br0即可

br0网卡配置:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第9张图片
ens33网卡配置:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第10张图片

管理kvm虚拟机

进入虚拟机:

[root@linux ~]# virsh console kvm01 

#类似ssh+ip登录

按ctrl+] 关闭kvm虚拟机的终端即可回到宿主机的终端:

连接到域 kvm01
换码符为 ^]

[root@localhost ~]# 
[root@linux ~]# 

查看kvm虚拟机列表:

[root@linux ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     kvm01                          running

#不加–all只显示运行中的kvm虚拟机,不会显示关闭中的虚拟机

启动虚拟机:

[root@linux ~]# virsh start kvm01

关闭虚拟机:

root@linux ~]# virsh shutdown kvm01 

强制停止虚拟机:

[root@linux ~]# virsh destroy kvm01 

删除虚拟机:

[root@linux ~]# virsh undefine kvm01 

#会彻底删除该虚拟机配置文件(配置文件路径:/etc/libvirt/qemu/
),virsh list --all 无法查看了,但不会删除虚拟硬盘文件

宿主机开机也自动开启虚拟机:

[root@linux ~]# virsh autostart kvm01 
域 kvm01标记为自动开始

取消虚拟机跟随宿主机开机:

[root@linux ~]# virsh autostart --disable kvm01 
域 kvm01取消标记为自动开始

挂起虚拟机:

[root@linux ~]# virsh suspend kvm01 
域 kvm01 被挂起

恢复虚拟机:

[root@linux ~]# virsh resume kvm01 
域 kvm01 被重新恢复

克隆kvm虚拟机

在克隆虚拟机之前需要先关闭源虚拟机:

[root@linux ~]# virsh shutdown kvm01 

克隆虚拟机:

[root@linux ~]# virt-clone --original kvm01 --name kvm02 --file /kvm_data/kvm02.img
正在分配 'kvm02.img'                                                                        |  10 GB  00:00:06     

成功克隆 'kvm02'。
[root@linux ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     kvm01                          关闭
 -     kvm02                          关闭

- -original指定克隆源虚拟机
- -name指定克隆后的虚拟机名字
- -file指定目标虚拟机的虚拟磁盘文件

补充:克隆完成的虚拟机避免ip冲突,需要修改网卡配置文件的ip以及删除uuid

kvm快照管理

创建快照:

[root@linux ~]# virsh snapshot-create kvm01

根据虚拟机名称查看生成的快照:

[root@linux ~]# virsh snapshot-list kvm01 
 名称               生成时间              状态
------------------------------------------------------------
 1582361249        2020-02-22 16:47:29 +0800 shutoff

查看当前快照的版本信息:

[root@linux ~]# virsh snapshot-current kvm01 

快照配置文件路径:

[root@linux ~]# ls /var/lib/libvirt/qemu/snapshot/kvm01/
1582361249.xml

恢复指定的快照:

[root@linux ~]# virsh snapshot-revert kvm01 1582361249 

#先指定目标虚拟机名称,再指定快照名称

删除快照:

[root@linux ~]# virsh snapshot-delete kvm01 1582361249 

#指定虚拟机名称后输入该虚拟机生成的快照中的某个快照名即可

查看指定虚拟机的虚拟磁盘信息,也会显示快照信息:

[root@linux ~]# qemu-img info /kvm_data/kvm01.img 
image: /kvm_data/kvm01.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.5G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1582361249                0 2020-02-22 16:47:29   00:00:00.000
Format specific information:
    compat: 1.1
    lazy refcounts: true

说明:file format的qcow2为虚拟磁盘的文件格式(只有qcow2格式的虚拟磁盘支持快照,raw格式的不支持),虚拟大小10G,实际使用硬盘大小1.5G,Snapshot list显示的内容即是快照信息,TAG标签名称就是使用virsh snapshot-list kvm01命令显示的快照列表的快照名称

kvm磁盘管理

磁盘格式转换

kvm虚拟机常用磁盘格式为qcow2和raw,上面的file format就是指磁盘格式,通过qemu-img info 磁盘路径查看磁盘信息

创建指定格式的虚拟磁盘:

[root@linux ~]# qemu-img create -f raw /kvm_data/test.img 2G
Formatting '/kvm_data/test.img', fmt=raw size=2147483648 

[root@linux ~]# ll -h /kvm_data/test.img 
-rw-r--r--. 1 root root 2.0G 2月  23 16:42 /kvm_data/test.img

[root@linux ~]# qemu-img info /kvm_data/test.img 
image: /kvm_data/test.img
file format: raw
virtual size: 2.0G (2147483648 bytes)
disk size: 0

#创建一块2G的raw格式的虚拟磁盘,大小2G

转换磁盘格式:

[root@linux ~]# qemu-img convert -O qcow2 /kvm_data/test.img /kvm_data/test_2.qcow2

[root@linux ~]# qemu-img info /kvm_data/test_2.qcow2 
image: /kvm_data/test_2.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

#相当于将源磁盘复制了一份,生成的新磁盘为-O参数指定的格式,raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照

将虚拟机kvm01的磁盘格式转换为raw:

关闭虚拟机:

[root@linux ~]# virsh shutdown kvm01 
域 kvm01 被关闭

变更虚拟磁盘的格式:

[root@linux ~]# qemu-img convert -O raw /kvm_data/kvm01.img /kvm_data/kvm01_2.raw

编辑配置文件:

[root@linux ~]# virsh edit kvm01

在disk处更改类型以及虚拟磁盘路径:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第11张图片
启动虚拟机即可完成:

[root@linux ~]# virsh start kvm01

[root@linux ~]# ll /kvm_data/kvm01*
-rw-r--r--. 1 qemu qemu 10737418240 2月  23 17:28 /kvm_data/kvm01_2.raw
-rw-------. 1 root root 10739384832 2月  23 17:19 /kvm_data/kvm01.img

#新建的raw格式的虚拟磁盘属主属组已经变更为qemu,表示kvm01虚拟机正在使用该磁盘

补充:老的qcow2格式的虚拟磁盘文件kvm01.img需要手动删除,变换格式不影响数据

磁盘扩容

磁盘扩容有两种方式,一种是增加当前使用的虚拟磁盘的大小,还有一种是新添加一块虚拟磁盘

第一种方式:

增加当前磁盘大小:

[root@linux ~]# qemu-img resize /kvm_data/kvm01_2.raw +2G
Image resized.

[root@linux ~]# qemu-img info /kvm_data/kvm01_2.raw 
image: /kvm_data/kvm01_2.raw
file format: raw
virtual size: 12G (12884901888 bytes)
disk size: 1.4G

#扩容2G大小,查看已变为12G,若提示qemu-img: Can’t resize an image which has snapshots,需要删除快照

增加后需要重启虚拟机,不能在虚拟机终端init6或reboot等方式重启,必须宿主机用virsh命令操作:

[root@linux ~]# virsh destroy kvm01 
[root@linux ~]# virsh start kvm01 

进入终端:

[root@linux ~]# virsh console kvm01 

查看磁盘已显示添加的2G大小:

[root@localhost ~]# fdisk -l

磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a5c20

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/vda3         4196352    20971519     8387584   83  Linux

将新添加的容量新建分区:

[root@localhost ~]# fdisk /dev/vda
命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已选择分区 4
起始 扇区 (20971520-25165823,默认为 20971520):
将使用默认值 20971520
Last 扇区, +扇区 or +size{K,M,G} (20971520-25165823,默认为 25165823):
将使用默认值 25165823
分区 4 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

再次查看即可显示新分区/dev/vda4:

[root@localhost ~]# fdisk -l

磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a5c20

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/vda3         4196352    20971519     8387584   83  Linux
/dev/vda4        20971520    25165823     2097152   83  Linux

#将新的分区挂载后即可使用

第二种方式:(这种方式是直接给虚拟机增加一块磁盘,准确说不是给虚拟机的磁盘扩容,而是给虚拟机扩容)

创建新的磁盘文件,大小2G:

[root@linux ~]# qemu-img create -f raw /kvm_data/kvm01_3.raw 2G
Formatting '/kvm_data/kvm01_3.raw', fmt=raw size=2147483648 

#如果是qcow2格式,-f参数指定的格式为qcow2

编辑虚拟机配置文件:

[root@linux ~]# virsh edit kvm01 

新增disk标签:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第12张图片
#source file 指定新增虚拟磁盘文件路径,target dev需要与之前disk标签的不同,slot也不能相同

重启虚拟机:

[root@linux ~]# virsh destroy kvm01 
[root@linux ~]# virsh start !$

进入虚拟机:

[root@linux ~]# virsh console kvm01

查看磁盘信息:

[root@localhost ~]# fdisk -l

磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a5c20

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/vda3         4196352    20971519     8387584   83  Linux
/dev/vda4        20971520    25165823     2097152   83  Linux

磁盘 /dev/vdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

#新增磁盘/dev/vdb已显示,接下来分区后挂载后即可使用

调整cpu、内存、网卡

查看配置:

[root@linux ~]# virsh dominfo kvm01
Id:             7
名称:       kvm01
UUID:           73e8dfa2-bf15-4f38-a3df-26bcabd782f0
OS 类型:    hvm
状态:       running
CPU:          1
CPU 时间:   24.3s
最大内存: 1048576 KiB
使用的内存: 524288 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
安全性标签: system_u:system_r:svirt_t:s0:c154,c838 (permissive)

调整配置需要编辑配置文件:

[root@linux ~]# virsh edit kvm01 

修改下图内容:
虚拟化介绍以及KVM安装、创建、管理虚拟机、磁盘管理_第13张图片
如需增加内存,修改currentMemory标签的数值即可,但不能超过memory标签中的最大数值,修改cpu核数变更current即可,2表示最大为2核,修改后需重启才能生效

动态调整内存为800m:

[root@linux ~]# virsh setmem kvm01 800m

修改cpu核数为2核:

[root@linux ~]# virsh setvcpus kvm01 2

注意:动态调整的情况下,内存可以增加或减少,但cpu核数只能增加,不能减少

修改后需要将配置写入配置文件:

[root@linux ~]# virsh dumpxml kvm01 > /etc/libvirt/qemu/kvm01.xml

写入配置文件后,virsh edit 进入虚拟机配置文件内容还没更新的话(在内存中打开),重启虚拟机配置文件即可更新

查看网卡:

[root@linux ~]# virsh domiflist kvm01 
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     virbr0     virtio      52:54:00:da:04:f5

增加网卡:

[root@linux ~]# virsh attach-interface kvm01 --type bridge --source virbr0

[root@linux ~]# virsh domiflist kvm01 
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     virbr0     virtio      52:54:00:da:04:f5
vnet1      bridge     virbr0     rtl8139     52:54:00:22:10:0c

如果源指定的是桥接网卡,新网卡即为桥接模式,如果源指定的是nat模式网卡,新网卡即为nat模式

还需写入配置文件:

[root@linux ~]# virsh dumpxml kvm01 > /etc/libvirt/qemu/kvm01.xml 

迁移虚拟机

迁移kvm虚拟机一般用于迁移到远程机器,在本地操作一般情况下使用克隆虚拟机即可,在迁移虚拟机之前一定要先关闭虚拟机:

[root@linux ~]# virsh shutdown kvm01

复制一份虚拟机配置文件:

[root@linux ~]# virsh dumpxml kvm01 > /etc/libvirt/qemu/kvm03.xml

如果是迁移到远程机器,直接拷贝到远程机器即可

查看虚拟机磁盘所在路径:

[root@linux ~]# virsh domblklist kvm01 
目标     源
------------------------------------------------
vda        /kvm_data/kvm01.img

复制一份磁盘文件:

[root@linux ~]# rsync -av /kvm_data/kvm01.img /kvm_data/kvm03.img 

如果是迁移到远程机器,直接拷贝到远程机器即可

编辑配置文件:

[root@linux ~]# vi /etc/libvirt/qemu/kvm03.xml 

如果是迁移到远程机器,就不用修改,在本地操作的话会和kvm01的配置文件冲突

需要修改的地方:标签中的虚拟机名称、uuid(随便修改一个数字即可,保持位数不变)、修改磁盘路径,对应新拷贝的磁盘文件

完成后,需要根据配置文件生成虚拟机:

[root@linux ~]# virsh define /etc/libvirt/qemu/kvm03.xml 

然后virsh lish - -all 即可查看到新的虚拟机

补充:如果是远程迁移,关机后直接将要迁移的虚拟机的配置文件和磁盘文件拷贝到远程机器,配置文件路径没问题的情况下,直接根据配置文件virsh define 生成虚拟机即可。

你可能感兴趣的:(Ops)