实战CentOS7安装且使用KVM虚拟机

镜像格式

介绍

  • RAW格式是直接给云服务器进行读写的文件。RAW不支持动态增长空间,是镜像中I/O性能最好的一种格式。
  • QCOW2格式镜像是QEMU模拟器支持的一种磁盘镜像,是用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的RAW格式镜像相比,QCOW2格式有如下几个特性:

    • 支持更小的磁盘占用。
    • 支持写时拷贝(CoW,Copy-On-Write),镜像文件只反映底层磁盘变化。
    • 支持快照,可以包含多个历史快照。
    • 支持压缩和加密,可以选择ZLIB压缩和AES加密。
  • VMDK是VMware创建的虚拟硬盘格式。一个VMDK文件代表VMFS(云服务器文件系统)在云服务器上的一个物理硬盘驱动。

  • VHD是微软提供的一种虚拟硬盘文件格式。VHD文件格式可以被压缩成单个文件存放到宿主机的文件系统上,主要包括云服务器启动所需的文件系统。微软在Windows Server 2012中的Hyper-V引入的一个新版本的VHD格式,称为VHDX。与VHD格式相比,VHDX具有更大的存储容量。它在电源故障期间提供数据损坏保护,并且优化了磁盘结构对齐方式,以防止新的大扇区物理磁盘性能降级。
  • vdi(Virtual Disk Image)是Oracle的VirtualBox虚拟机中的存储格式

格式转化

在日常使用镜像的过程中,您可能需要将某格式的镜像转换为其他格式,qemu-img工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed格式的镜像之间相互转换。在centos上,直接使用yum install qemu-img即可。

基本语法

1
qemu-img command [command options]

主要参数

  • info : 查看镜像的信息;
  • create: 创建镜像;
  • check: 检查镜像;
  • convert: 转化镜像的格式;
  • snapshot :管理镜像的快照;
  • rebase: 在已有的镜像的基础上创建新的镜像;
  • resize: 增加或减小镜像大小

创建镜像, create

1
2
[root@ubuntu ~]# qemu-img create -f raw -o size=5G /data/raw/raw-disk01.raw  
Formatting '/data/raw/raw-disk01.raw', fmt=raw size=5368709120
  • -f fmt: 执行格式
  • -o options: list of format specific options in a name1=value1,name2=value2… format. size=5G, 5G大小
1
2
3
4
5
6
7
[root@ubuntu cache2]# qemu-img create -f raw -o size=1G t1.raw
Formatting 't1.raw', fmt=raw size=1073741824
[root@ubuntu cache2]# qemu-img create -f qcow2 -o size=1G t2.raw
Formatting 't2.raw', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
[root@ubuntu cache2]# ll -h t1.raw t2.raw
-rw-r--r-- 1 root root 1.0G Aug 22 23:30 t1.raw
-rw-r--r-- 1 root root 193K Aug 22 23:31 t2.raw

从显示的文件大小上面是可以看出区别的。

查看镜像的信息, info

1
2
3
4
5
[root@ubuntu ~]# qemu-img info /data/raw/raw-disk01.raw  
image: /data/raw/raw-disk01.raw
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 0

镜像格式转换, convert

1
2
3
4
5
6
7
8
9
10
[root@ubuntu ~]# qemu-img convert -f raw -O qcow2 /data/raw/raw-disk01.raw /data/raw/qcow2-disk01.qcow2
[root@ubuntu ~]# qemu-img info /data/raw/qcow2-disk01.qcow2
image: /data/raw/qcow2-disk01.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
  • -f: 指定原镜像的格式,会自动检查可以省略
  • -O: 指定目标镜像格式

镜像快照, snapshot

1
2
3
4
5
[root@ubuntu ~]# qemu-img snapshot /data/raw/qcow2-disk01.qcow2 -c /data/raw/qcow2-disk01.qcow2.snapshot 
[root@ubuntu ~]# qemu-img snapshot /data/raw/qcow2-disk01.qcow2 -l
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 /data/raw/qcow2-disk01.qcow2.snapshot 0 2019-06-24 20:42:51 00:00:00.000
  • -c: 创建快照
  • -l: 列出快照
  • -d: 删除快照
    *ps: raw不支持快照,只有qcow2支持快照

调整镜像大小, resize

1
2
3
4
5
6
7
[root@ubuntu ~]# qemu-img resize /data/raw/disk02.raw +2G
Image resized.
[root@ubuntu ~]# qemu-img info /data/raw/disk02.raw
image: /data/raw/disk02.raw
file format: raw
virtual size: 7.0G (7516192768 bytes)
disk size: 0

ps: raw格式镜像大小都可以调整,qcow2格式镜像只能增大,不能缩小

检查镜像,check

对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。qcow2是QEMU 0.8.3版本引入的镜像文件格式,也是目前使用最广泛的格式。qed(QEMU enhanced disk)是从QEMU 0.14版开始加入的增强磁盘文件格式,为了避免qcow2格式的一些缺点,也为了提高性能,不过目前还不够成熟

1
2
3
[root@ubuntu ~]# qemu-img check -f qcow2 /data/raw/qcow2-disk01.qcow2   
No errors were found on the image.
Image end offset: 393216
  • -f fmt: 指定文件的格式,如果不指定格式qemu-img会自动检测

安装KVM环境

检测是否支持KVM

KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。

1
2
3
cat /proc/cpuinfo | egrep 'vmx|svm'

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc

关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled

安装方法

通过yum就可以安装kvm基础包和管理工具了。kvm相关安装包及其作用:

  • qemu-kvm 主要的KVM程序包
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库
  • virt-manager GUI虚拟机管理工具
  • virt-top 虚拟机统计命令
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机
  • libvirt C语言工具包,提供libvirt服务
  • libvirt-client 为虚拟客户机提供的C语言工具包
  • virt-install 基于libvirt服务的虚拟机创建命令
  • bridge-utils 创建和管理桥接设备的工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装 kvm 
# ------------------------
# yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install

yum -y install qemu-kvm libvirt virt-install bridge-utils

# 重启宿主机,以便加载 kvm 模块
# ------------------------
reboot

# 查看KVM模块是否被正确加载
# ------------------------
lsmod | grep kvm

kvm_intel 162153 0
kvm 525259 1 kvm_intel

开启kvm服务,并且设置其开机自动启动

1
2
systemctl start libvirtd
systemctl enable libvirtd

查看状态操作结果,如Active: active (running),说明运行情况良好

1
2
3
4
5
6
7
8
systemctl status libvirtd
systemctl is-enabled libvirtd

● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2001-01-02 11:29:53 CST; 1h 41min ago
Docs: man:libvirtd(8)
http://libvirt.org

安装虚拟机

有2种方式,经过个人测试,建议使用VNC来创建,兼容性更好。

通过VNC来远程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 先创建一个磁盘
[root@localhost cache2]# qemu-img create -f qcow2 test.qcow2 10G
Formatting 'test.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
# 查看磁盘信息
[root@11006948 cache2]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
# 创建虚拟机
[root@localhost cache2]$ virt-install --name centOS78 --virt-type kvm --ram 8192 --vcpus=4 --cdrom=/tmp/CentOS-7-x86_64-Minimal-2003.iso --disk path=/cache2/centos78.qcow2,size=40,format=qcow2 --network=bridge:br0 --graphics vnc,listen=0.0.0.0,port=5962,password=zyq1860 --noautoconsole

Starting install...
Allocating 'centos78.qcow2' | 40 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

通过 https://www.realvnc.com/en/connect/download/viewer/ 下载这个工具就可以通过VNC来远程了。

通过重定向来远程

1
virt-install --virt-type=kvm --name=centos88 --vcpus=2 --memory=4096 --location=/tmp/CentOS-7-x86_64-Minimal-2003.iso --disk path=/cache2/centos88.qcow2,size=40,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force

创建成功之后,可以通过virsh console centos88来远程上机器操作了。

虚拟机其他操作

克隆已有镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@12008994 cache2]# virt-clone -o centos88 -n centos88-2 --auto-clone
Allocating 'centos88-2.qcow2' | 40 GB 00:00:04

Clone 'centos88-2' created successfully.
[root@12008994 cache2]# virsh list --all
Id Name State
----------------------------------------------------
12 SoftMcuMain running
13 centOS78 running
- centos88 shut off
- centos88-2 shut off
# 可以看到有自动生成了一个配置
[root@12008994 cache2]# egrep "centos|uuid" /etc/libvirt/qemu/centos88-2.xml
virsh edit centos88-2
<name>centos88-2</name>
<uuid>4442e9d1-c118-43c6-a31c-1c2b0b3a58b1</uuid>
<source file='/cache2/centos88-2.qcow2'/>

KVM中直接用qemu-img resize 调整虚拟机硬盘大小 http://www.so-cools.com/?p=48

1
2
3
4
5
6
7
8
9
10
11
(1)首先获取镜像目前大小
root@kvm:# qemu-img info debian.img
image: debian.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 848M

(2)添加额外的10G空间到镜像中
root@kvm:~# qemu-img resize -f raw debian.img +10GB
Image resized.
注意:并不是所有的镜像格式都支持resize的,在resize前应该转换成raw格式的镜像。

快照

常用使用方法:

  • 创建默认快照(一般为一串数字):virsh snapshot-create 虚拟机名称

  • 创建自定义名称快照:virsh snapshot-create-as 虚拟机名称 快照名称

  • 查看虚拟机相关的快照:virsh snapshot-list 虚拟机名
  • 删除快照:virsh snapshot-delete 虚拟机名 快照名称
  • 恢复快照:virsh snapshot-revert 虚拟机名称 快照名称
1
2
3
4
5
6
7
8
9
10
11
[root@11006948 Plcm-SoftMcuMain]# virsh snapshot-list --domain centos88
Name Creation Time State
------------------------------------------------------------

[root@11006948 Plcm-SoftMcuMain]#
[root@11006948 Plcm-SoftMcuMain]# virsh snapshot-create-as --domain centos88 centos78init
Domain snapshot centos78init created
[root@11006948 Plcm-SoftMcuMain]# virsh snapshot-list --domain centos88
Name Creation Time State
------------------------------------------------------------
centos78init 2020-07-28 11:31:58 +0800 running

参考资料

CentOS7安装KVM虚拟机详解

https://loveyu.org/5538.html

https://www.leolan.top/index.php/posts/134.html

Centos7.4安装kvm虚拟机(使用virt-manager管理)

https://blog.csdn.net/linzhaolover/article/details/52209477

KVM之磁盘管理工具qemu-img小结

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/linux/centos-kvm.html
  • 本文主题: 实战CentOS7安装且使用KVM虚拟机
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%