作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
稀疏文件
介绍镜像格式之前,我们先介绍一种特殊的文件。
稀疏文件(Sparse file)是指在文件系统中分配了实际内容相对较少的存储空间,但是它们能占据的磁盘空间却可能大于它们的实际内容大小。这种文件通常包含大量的空洞(即未写入实际数据的部分),但文件系统仍会为其分配存储空间。
主要特点和用途:
-
节省磁盘空间:稀疏文件允许应用程序预分配大文件的存储空间,而无需实际写入大量数据。这在需要处理大文件但实际数据内容较少的情况下非常有用,如虚拟机磁盘映像文件、数据库快照等。
-
写入性能优化:当应用程序需要写入大文件时,预分配稀疏文件可以提高写入性能,因为文件系统不必在写入数据之前清空整个文件的空间。这种方式减少了写入操作的耗时。
-
文件系统支持:大多数现代文件系统(如NTFS、ext4等)都支持稀疏文件。应用程序可以通过文件系统提供的接口来创建和管理这些文件。
-
实现方法:稀疏文件通常通过文件系统提供的系统调用来实现,应用程序可以告知文件系统预分配某文件的存储空间而不实际写入所有数据。这样做不会在物理磁盘上占用整个文件的空间,而是仅在写入数据时才会逐渐占用。
简单来说,我有100G的空间,我可以给你们20个人,每个人分配80G空间,但是你们实际占有的1g,有的10g,平均只有3g,这样我们不仅可以限制所有人的最大使用空间,也可以实现超售。
在目前的公有云你买的磁盘都是这样的。下面我们就来介绍我们创建虚拟机的重要的设备之一存储。
镜像
镜像文件(Image File)是一种用于存储操作系统、应用程序和数据的文件。在虚拟化环境中,镜像文件通常用于创建虚拟机的磁盘。在KVM虚拟化中,两种常见的镜像格式是img和qcow2。
- IMG(raw)格式:
-
IMG是一种原始磁盘镜像格式,它是一种简单的二进制数据文件。它不提供任何压缩或快照功能,只是将虚拟机的磁盘数据直接写入到文件中。
-
IMG格式的镜像文件相对较简单,通常具有较好的性能。但是,它没有提供动态分配磁盘空间的功能,因此镜像文件的大小是固定的,即使虚拟机中只使用了部分磁盘空间,镜像文件的大小也不会改变。
- QCOW2(QEMU Copy-On-Write 2)格式:
-
QCOW2是一种高级的磁盘镜像格式,它提供了更多的功能和灵活性。与IMG格式相比,QCOW2格式提供了动态分配磁盘空间、压缩、快照和增量备份等功能。
-
QCOW2格式的镜像文件可以根据实际使用情况动态分配磁盘空间,只使用实际需要的空间。这样可以减少空间占用,并方便进行快照和备份操作。
-
另外,QCOW2格式还支持对磁盘镜像文件进行压缩,以减小文件大小,并提供更好的性能。
#创建镜像文件 qemu-img create -f raw ./image_file.img 20G qemu-img create -f qcow2 ./image_file.qcow2 20G
这里的2个文件都是空文件,可以用于安装虚拟机使用。但是这个img文件在进行网络传输的时候会会被当成20g的文件的,即便它是空的。我们当然有办法对他进行压缩,然后传输的时候以实际占用大小为准,这个在我们讲kvm-迁移的时候再具体说说。
这几个文件都是已经安装好了系统的文件,如果把这个文件复制出来用kvm启动它,它就是一个可用的虚拟机。根据上面的提示,我们创建虚拟机需要先准备一个qcow2文件,有没有一种方式可以更方便来管理我们的虚拟机的镜像文件呢?
pool
KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,而 KVM pool(存储池)是用于管理虚拟机存储资源的一种机制。
一、KVM pool 的作用
- 存储管理
-
集中管理虚拟机的磁盘镜像、快照等存储资源,使得存储的分配和管理更加高效。
-
可以方便地为不同的虚拟机分配不同大小的存储空间,并且可以根据需要进行动态调整。
- 资源共享
-
多个虚拟机可以共享同一个存储池,提高存储资源的利用率。
-
可以方便地在不同的虚拟机之间复制、移动存储资源。
二、KVM pool 的操作
查看当前pool
[root@MiWiFi-RD03-srv yum.repos.d]# virsh pool-list
Name State Autostart
-------------------------------------------
创建pool
这样我们在创建虚拟机的时候,就可以直接使用这个pool,而不需要为每个虚拟机先创建一个镜像文件。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。