kvm虚拟机磁盘管理

一.kvm虚拟机磁盘格式概述

1.raw格式

raw俗称裸格式,raw格式的优缺点:
	- 优点;
		可以顺序写磁盘,读写性能性能好。
	- 缺点:
		raw格式存在不支持快照,不方便传输等缺点。

举个例子:
	假设我们为KVM虚拟机分配了50GB的磁盘,若使用raw格式,则会立刻分配这50GB的空间,这样做的好处就是磁盘底层存储数据的磁盘扇区是连续的。
	如果我们仅使用了其中的2GB空间,但在传输时依旧要传输50GB空间。

2.qcow2格式

QCOW2(Qemu Copy On Write):
	- 优点:
		占用空间小,支持快照。
	- 缺点:
		性能相比raw差一些。
	
举个例子:
	假设我们为KVM虚拟机分配了50GB的磁盘,若使用qcow2格式,不会立刻分配50GB空间,而是根据需求写时复制,当空间不足时再去系统申请格式化磁盘,因此底层存储的数据扇区可能不是连续的,因此性能相比于raw格式会差一些。
	如果我们仅使用了其中的2GB空间,在传输时仅需要传输2GB的空间。
	

温馨提示:
	QCOW2是比QCOW性能会更好些,但是QCOW2相比QCOW会额外占用一定的空间。

3.生产环境磁盘类型选择

如果对磁盘追求快照功能那就只能选择qcow2格式了。

如果追求磁盘的性能,对快照没有太大需求,则可以考虑使用raw格式,但是在迁移的时候可以临时将raw格式转换为qcow2格式。

二.创建虚拟机时指定磁盘格式

1.指定raw格式

virt-install --virt-type kvm \
    --os-type=linux \
    --os-variant rhel7 \
    --name yinzhengjie-kvm02 \
    --memory 2048 \
    --vcpus 2 \
    --disk /opt/yinzhengjie-kvm02.raw,format=raw,size=20 \
    --cdrom /opt/CentOS-7-x86_64-DVD-2009.iso \
    --network  network=default \
    --graphics vnc,listen=0.0.0.0 \
    --noautoconsole


相关参数说明:
	--virt-type:
		指定虚拟机的类型,支持kvm,qemu,xen等虚拟机。
	--os-type:
    	指定系统的类型。
    --os-variant: 
    	指定系统的版本号。
    --name:
    	指定虚拟机的名称,每个虚拟机的名称必须唯一。
    --memory:
    	指定虚拟机的内存大小。
    --vcpus
    	指定CPU的核心数。
    --disk:
    	指定磁盘的路径,使用format指定磁盘的格式,使用size自定磁盘大小,默认单位为GB。
    --cdrom 
    	自定ISO镜像文件连接。
    --network  
    	指定网络,可以自定多块网卡设备。
    --graphics 
    	指定图形化使用的协议及监听地址,如果不指定监听地址,默认监听地址为"127.0.0.1"。
    --noautoconsole
    	不自动连接虚拟机的console,该参数可有可无。

2.指定qcow2格式

virt-install --virt-type kvm \
    --os-type=linux \
    --os-variant rhel7 \
    --name yinzhengjie-kvm03 \
    --memory 2048 \
    --vcpus 2 \
    --disk /opt/yinzhengjie-kvm03.qcow2,format=qcow2,size=30 \
    --cdrom /opt/CentOS-7-x86_64-DVD-2009.iso \
    --network  network=default \
    --graphics vnc,listen=0.0.0.0 \
    --noautoconsole


相关参数说明:
	--virt-type:
		指定虚拟机的类型,支持kvm,qemu,xen等虚拟机。
	--os-type:
    	指定系统的类型。
    --os-variant: 
    	指定系统的版本号。
    --name:
    	指定虚拟机的名称,每个虚拟机的名称必须唯一。
    --memory:
    	指定虚拟机的内存大小。
    --vcpus
    	指定CPU的核心数。
    --disk:
    	指定磁盘的路径,使用format指定磁盘的格式,使用size自定磁盘大小,默认单位为GB。
    --cdrom 
    	自定ISO镜像文件连接。
    --network  
    	指定网络,可以自定多块网卡设备。
    --graphics 
    	指定图形化使用的协议及监听地址,如果不指定监听地址,默认监听地址为"127.0.0.1"。
    --noautoconsole
    	不自动连接虚拟机的console,该参数可有可无。

三.磁盘工具常用命令

1.查看虚拟磁盘信息

[root@yinzhengjie-kvm189 ~]# qemu-img info /opt/yinzhengjie-kvm01.raw
image: /opt/yinzhengjie-kvm01.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.5G
[root@yinzhengjie-kvm189 ~]# 

2.创建一块qcow2格式的虚拟硬盘

[root@yinzhengjie-kvm189 ~]# qemu-img create -f qcow2 yinzhengjie-kvm10.qcow2 2G  # 创建一个qcow2格式的磁盘。
Formatting 'yinzhengjie-kvm10.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img info yinzhengjie-kvm10.qcow2 
image: yinzhengjie-kvm10.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
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img create  yinzhengjie-kvm11 3G   # 如果不使用-f选项指定磁盘格式,默认创建raw格式。
Formatting 'yinzhengjie-kvm11', fmt=raw size=3221225472 
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img info yinzhengjie-kvm11 
image: yinzhengjie-kvm11
file format: raw
virtual size: 3.0G (3221225472 bytes)
disk size: 0
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll -h yinzhengjie-kvm10.qcow2  # 注意,qcow2磁盘格式并不会立刻使用2GB的空间哟~
-rw-r--r--. 1 root root 193K Apr  8 04:13 yinzhengjie-kvm10.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll -h yinzhengjie-kvm11  # 注意,raw格式会立刻分配3GB的磁盘空间哟~
-rw-r--r--. 1 root root 3.0G Apr  8 04:14 yinzhengjie-kvm11
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# 

3.调整磁盘容量

[root@yinzhengjie-kvm189 ~]# qemu-img info yinzhengjie-kvm10.qcow2 
image: yinzhengjie-kvm10.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
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img resize yinzhengjie-kvm10.qcow2 +3G  # 扩容方式一: 在原有的基础上扩容3GB数据。
Image resized.
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img info yinzhengjie-kvm10.qcow2 
image: yinzhengjie-kvm10.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img resize yinzhengjie-kvm10.qcow2 10G  # 扩容方式二: 直接扩容磁盘到指定大小。
Image resized.
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img info yinzhengjie-kvm10.qcow2 
image: yinzhengjie-kvm10.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@yinzhengjie-kvm189 ~]# 


温馨提示:
	- qcow2磁盘格式只能扩容不能缩容,raw磁盘格式可以扩容也可以缩容,
	- 但生产环境中无论是哪种磁盘格式都不要使用缩容,避免造成数据丢失;

4.转换磁盘格式

	1.转换虚拟机磁盘时需要先关机
[root@yinzhengjie-kvm189 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 3     yinzhengjie-kvm01              running

[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# virsh shutdown yinzhengjie-kvm01 
Domain yinzhengjie-kvm01 is being shutdown

[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     yinzhengjie-kvm01              shut off

[root@yinzhengjie-kvm189 ~]# 



	2.将raw格式转换为qcow2格式
[root@yinzhengjie-kvm189 ~]# qemu-img convert -f raw -O qcow2 -c /opt/yinzhengjie-kvm01.raw /opt/yinzhengjie-kvm01.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# qemu-img convert -f raw -O qcow2  /opt/yinzhengjie-kvm01.raw /opt/yinzhengjie-kvm01-bak.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll -h /opt/yinzhengjie-kvm01.qcow2 /opt/yinzhengjie-kvm01.raw /opt/yinzhengjie-kvm01-bak.qcow2 
-rw-r--r--. 1 root root 1.6G Apr  8 04:42 /opt/yinzhengjie-kvm01-bak.qcow2
-rw-r--r--. 1 root root 767M Apr  8 04:38 /opt/yinzhengjie-kvm01.qcow2
-rw-------. 1 root root  10G Apr  8 04:34 /opt/yinzhengjie-kvm01.raw
[root@yinzhengjie-kvm189 ~]# 


相关参数说明:
	-f:
		指定镜像的原格式。
	-O:
		指定镜像要转换的格式。
	-c:
		是否启用压缩功能,如果启用压缩功能,转换的时间会久一点。
		
		
	
	3.修改虚拟机的磁盘格式为qcow2格式及磁盘文件路径(如上图所示)
[root@yinzhengjie-kvm189 ~]# virsh edit yinzhengjie-kvm01 
<domain type='kvm'>
  ...
  <devices>
    ...
    <disk type='file' device='disk'>
      ...
      <driver name='qemu' type='qcow2'/>
      <source file='/opt/yinzhengjie-kvm01.qcow2'/>
	  ...
	  
	  
	 4.启动虚拟机
[root@yinzhengjie-kvm189 ~]# ll -h  /opt/yinzhengjie-kvm01.qcow2   # 启动前查看磁盘大小
-rw-r--r--. 1 root root 767M Apr  8 04:38 /opt/yinzhengjie-kvm01.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll  /opt/yinzhengjie-kvm01.qcow2 
-rw-r--r--. 1 root root 803512320 Apr  8 04:38 /opt/yinzhengjie-kvm01.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     yinzhengjie-kvm01              shut off

[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# virsh start yinzhengjie-kvm01 
Domain yinzhengjie-kvm01 started

[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 4     yinzhengjie-kvm01              running

[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll  /opt/yinzhengjie-kvm01.qcow2  # 启动虚拟机会产生日志,因此该文件会变大哟~
-rw-r--r--. 1 qemu qemu 806682624 Apr  8 04:50 /opt/yinzhengjie-kvm01.qcow2
[root@yinzhengjie-kvm189 ~]# 
[root@yinzhengjie-kvm189 ~]# ll -h  /opt/yinzhengjie-kvm01.qcow2   # 启动后再次查看磁盘大小
-rw-r--r--. 1 qemu qemu 770M Apr  8 04:50 /opt/yinzhengjie-kvm01.qcow2
[root@yinzhengjie-kvm189 ~]# 

5.检查磁盘是否出差

[root@yinzhengjie-kvm189 ~]# qemu-img check yinzhengjie-kvm10.qcow2 
No errors were found on the image.
Image end offset: 262144
[root@yinzhengjie-kvm189 ~]# 
posted @ 2023-11-03 02:05  尹正杰  阅读(82)  评论(0编辑  收藏  举报