文件空洞的作用:文件系统帮你做到磁盘预留

2023-10-29 16:10

本文主要是介绍文件空洞的作用:文件系统帮你做到磁盘预留,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天看《TLPI》,看到了文件空洞这个名词,工作了三四年第一次听到这个词。

那文件空洞到底是什么?在哪些场景会用到呢?

 

文件空洞的是什么?:

          linux下读文件的时候,如果lseek指定的读偏移量超过了文件结尾,此时read调用返回的是0,标识文件结尾。但是对于write调用,却可以继续写入数据。

          从文件结尾后到新写入的数据间这段空间称为文件空洞。

 

文件空洞有什么特点?

         1.文件空洞并不占据磁盘空间,直到后续真正写入了数据才会落到磁盘。在此之前,空洞区对应链表指向的是空指针,文件系统将其解释为0的子串。(所以在建立文件空洞的时候,速度会非常快。没磁盘IO)

         2.文件系统会扣减程序可用磁盘空间数值大小,做到预留

 

文件空洞在哪个场景可能用到?(下面是我的理解,不一定正确,欢迎指正)

         想象一个下载数据的场景,你需要下载10G的电影,那你的磁盘现在有11G剩余,你的网速没那么快,可能需要下载1个小时,在这1个小时内磁盘可能会被其他程序占用。

         所以呢,你可以利用文件空洞做好预留。建立一个10G的文件空洞,虽然文件系统没有真正落盘,但是可用磁盘空间会被真正扣减,也就是可以做到预留。

         所以即使你后续下载再慢,文件空洞机制也帮你保证了,你这个电影不会因为磁盘不够而中断。

         如果没有文件空洞,想象,你的电影下到5G,磁盘被另一个进程占用了剩余的6G,下载被迫中断。

 

 

上面的内容出自上篇提到的《UNIX系统编程》,英文简称《TLPI》

我把《UNIX系统编程》电子版书籍放到了我的公众号,如果需要可以扫码关注我的公众号&回复   "TLPI",即可下载 《UNIX系统编程》《The Linux Programming Interface》的pdf版本

 

转载于:https://www.cnblogs.com/zhaoyixing/p/10872820.html

这篇关于文件空洞的作用:文件系统帮你做到磁盘预留的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301783

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Linux中的缓冲区和文件系统详解

《Linux中的缓冲区和文件系统详解》:本文主要介绍Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、FILE结构1、fd2、缓冲区二、文件系统1、固态硬盘2、逻辑地址LBA(一)数据块 Data blocks(二)inode表

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存