您现在的位置是:主页 > 数据库技术 > 数据库技术

Linux中sparse文件处理与传输的方法是什么

IDCBT2022-01-13服务器技术人已围观

简介本篇内容主要讲解“Linux中sparse文件处理与传输的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中sparse文件处理

本篇内容主要讲解“Linux中sparse文件处理与传输的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中sparse文件处理与传输的方法是什么”吧!

0.  什么是sparse文件

当用户申请一块很大的存储空间时,由于最开始并没有写入数据(全是空),此时文件系统为了节省存储资源,提高资源利用率,不会分配实际存储空间,只有当真正写入数据时,操作系统才真正一点一点地分配空间,比如一次64KB。于是这个文件看起来很大,而占用空间很小,实际占用空间只与用户填的数据量有关。该文件看起来像一个大盒子,但可能装的东西不多,空洞很大,因此称为稀疏文件(Sparse  file)。Sparse文件是Linux文件系统的一个高级特性,能够实现磁盘的超负载使用(overload)。它最经典的应用就是为虚拟机创建虚拟硬盘以及数据库快照,比如我们使用qemu-img创建一个大小为20GB的raw文件(注意qcow2格式不是sparse文件):

fgp@node1:~$ qemu-img create -f raw test.raw 20G Formatting 'test.raw', fmt=raw size=21474836480 fgp@node1:~$ qemu-img info test.raw image: test.raw file format: raw virtual size: 20G (21474836480 bytes) disk size: 0

以上我们使用qemu-img创建了一个20G的镜像文件,由qemu-img info显示,virtual size为我们分配的空间大小,而disk  size为实际占用的空间,最开始并不占任何磁盘空间。

注:qemu-img create -f raw相当于`truncate -s 20G test.raw’。

当然也会有问题,比如系统生成了一堆sparse文件,如果文件系统满了,则这些文件都会写入失败,为了避免这种情况,需要控制sparse文件的数量。

1.如何判断是否sparse文件

除了以上的镜像文件可能是sparse文件,其他文件类型也有可能是sparse文件,如何判断是否sparse文件呢?最简单的办法是使用ls命令和du命令分别查看大小,如果二者大小不一致,则说明是sparse文件。我们可以使用dd命令快速生成一个sparse文件:

dd if=/dev/zero of=sparse_file bs=1M seek=1024 count=0

以上命令从第1024 *  1M处开始写文件(相当于中间空了1GB空间),写入/dev/zero,实际写入了0个块(count=0),因此实际上并没有写入任何数据。我们使用ls  -lh查看其大小:

~$ ls -lh sparse_file -rw-rw-r-- 1 fgp fgp 1.0G May 26 15:47 sparse_file

可见该文件显示为1G。

我们再使用du -h命令查看其占用磁盘空间大小:

~$ du -h sparse_file 0   sparse_file

我们发现实际占用磁盘空间为0。

标签:

很赞哦! ()

本栏推荐