稀疏文件-sparse file
定义:
https://zh.wikipedia.org/wiki/%E7%A8%80%E7%96%8F%E6%96%87%E4%BB%B6
稀疏文件(英语:sparse file)是一种计算机文件,它能尝试在文件内容大多为空时更有效率地使用文件系统的空间。它的原理是以简短的信息(元数据)表示空数据块,而不是在在磁盘上占用实际空间来存储空数据块。只有真实(非空)的数据块会按原样写入磁盘。
在读取稀疏文件时,文件系统会按元数据在运行时将这些透明转换为“真实”的数据块,即填充为零。应用程序不会察觉这个转换。
大多数现代的文件系统支持稀疏文件,包括大多数Unix变种和NTFS。[1]苹果的HFS+不提供稀疏文件支持,但在OS X中,虚拟文件系统层支持在任何受支持文件系统中存储稀疏文件,包括HFS+。2016年6月在WWDC宣布的苹果文件系统(APFS[2])支持稀疏文件。稀疏文件常被用在磁盘映像、数据库快照、日志文件和科学应用中。
支持的系统:
https://blog.csdn.net/cymm_liu/article/details/8760033
根据这里应该是windows的ntfs 和 linux都可以的
注意问题:
PS:
这样,会产生一个问题,文件已被创建了,但相应的磁盘空间并未被分配,只有在有真正的数据插入进来时,才会被分配磁盘块,如果这时文件系统被占满了,那么对该文件的写操作就会失败。为防止这种情况,有两种办法:不产生稀疏文件或为稀疏文件留够空间。
在计算机科学方面,稀疏文件是文件系统中的一种文件存储方式,在创建一个文件的时候,就预先分配了文件需要的连续存储空间,其空间内部大多都还未被数据填充现在有很多文件系统都支持稀疏文件,包括大部分的Unix和NTFS 。
稀疏文件被普遍用来磁盘图像,数据库快照,日志文件,还有其他科学运用上。
在UNIX文件操作中,文件位移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将延长该文件,并在文件中构成一个空洞。位于文件中但没有写过的字节都被设为0。
如果offset 比文件的当前长度更大,下一个写操作就会把文件“撑大(extend)” 在文件里创造“空洞(hole)”。没有被实际写入文件的所有字节由重复的0 表示。空洞是否占用硬盘空间是由文件系统(file system)决定的。
实验:
https://blog.csdn.net/cymm_liu/article/details/8760033
下面是稀疏文件的创建与查看
[root@localhost ~]# dd if=/dev/zero of=sparse-file bs=1 count=1 seek=1024k
[root@localhost ~]# ls -l sparse-file
-rw-r--r-- 1 root root 1048577 Oct 15 17:50 sparse-file
[root@localhost ~]# du -sh sparse-file
8.0K sparse-file
[popexizhi:
ls /du 的-sh都是查看磁盘占用的大小
ls -lh 是查看文件本身的大小
]
[root@lijie-120 hole_file]# ls -s sparse-file
4 sparse-file
[root@lijie-120 hole_file]# ls -sh sparse-file
4.0K sparse-file
[root@lijie-120 hole_file]# du -sh *
4.0K sparse-file
[root@lijie-120 hole_file]# ls -lh sparse-file
-rw-r--r--. 1 root root 1.1M 9月 19 09:46 sparse-file
查看文件的inode
http://blog.51cto.com/dmwing/1831882
--- 查看文件的inode,使用ls -i
[root@lijie-120 hole_file]# ls -i *
150830 sparse-file
--- 查看文件的inode,也可以使用命令stat
[root@lijie-120 hole_file]# stat sparse-file
文件:"sparse-file"
大小:1048577 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:150830 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-09-19 09:46:35.489872134 +0800
最近更改:2018-09-19 09:46:35.489872134 +0800
最近改动:2018-09-19 09:46:35.489872134 +0800
创建时间:-
[root@lijie-120 hole_file]# du -sh sparse-file
4.0K sparse-file
没有评论:
发表评论