空洞文件

news/2024/10/6 4:28:06/文章来源:https://www.cnblogs.com/hhail08/p/18285715
实际上这些数据并没有被存储在磁盘上。当创建一个空洞文件时,文件系统会记录这些“空洞”,但并不会在物理介质上实际分配和保存未使用的空间,从而节省了实际的存储空间。 举例来说,如果你创建一个大小为1GB的空洞文件,其中写入了大量的零字节据,实际上只有少量的数据(例如文件指针处的数据)会占用磁盘空间,而其余的部分会被标记为空洞,不会占用实际的存储空间。
1. 节省存储空间 空洞文件允许程序在文件中创建大段未实际分配的空间。这意味着即使文件看起来很大,但其实际占用的磁盘空间可能要小得多。例如,一个包含大量零字节的文件可以通过空洞文件的方式有效地节省存储空间。 
2. 提高文件处理效率由于空洞文件在逻辑上包含了大量数据,但是这些数据实际上没有被存储在磁盘上,因此读写操作可以更快。文件系统不需要在物理介质上实际分配和管理这些未使用的空间,从而减少了I/O操作。
3. 简化文件管理 在某些应用场景中,比如数据库文件、虚拟机磁盘映像文件和日志文件,预先分配大块的空间是常见操作。使用空洞文件,可以简化这些文件的管理和维护,因为不需要实际分配和初始化整个文件空间。 
4. 延迟分配 空洞文件允许延迟分配存储空间。只有当数据实际写入文件时,才会分配存储空间。这对于那些需要动态增长的文件来说非常有用,例如日志文件或者数据库文件。
5. 备份和恢复 空洞文件在备份和恢复过程中也有优势。一些现代的备份工具和文件系统(例如rsync和ZFS)能够识别和处理空洞文件,从而避免备份未使用的空间,提高备份速度并节省存储资源。 
6. 虚拟化环境中的应用在虚拟化环境中,空洞文件经常用于虚拟磁盘映像。虚拟机使用的磁盘映像文件通常会预留很大的空间,但其中只有一部分实际被使用。空洞文件可以显著减少虚拟磁盘映像文件的物理存储需求。

/******************************************************************************************************* @file name:		  : 创建一个空洞文件.c* @brief  		      :创建空洞文件* @author 		      :wvjnuhhail@126.com* @date 			  :2024/07/05* @version 1.0 	  :V1.0* @property 		  :暂无* @note   		      :None* CopyRight (c)  2023-2024   wvjnuhhail@126.com   All Right Reseverd*******************************************************************************************************/#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>int main(int argc,char *argv[])
{umask(0000);int fd = open("sparse_file.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);if (fd == -1){perror("open");return 1;}// 将文件偏移量设置到 1GB 位置if (lseek(fd, 1024 * 1024 * 1024, SEEK_SET) == -1){perror("lseek");close(fd);return 1;}// 写入一个字节if (write(fd, "a", 1) != 1){perror("write");close(fd);return 1;}close(fd);return 0;
}

image


image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738757.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Box,一个字典操作python库

Box介绍 Box 是一个让字典操作变得异常简单与直观,支持通过属性访问字典内容的库。特点概述属性访问Box 允许用户像访问对象属性一样访问字典的值,提升了代码的可读性和易用性。无缝嵌套自动将嵌套的字典转换为 Box 对象,使得处理复杂字典结构变得轻而易举。灵活性强支持多种…

(四)JS逆向——中国观鸟网

爬取观鸟网的信息 有sign值,timestamp和requestid,要看这些值是怎么生成的 载荷有加密的数据 返回值也经过加密 搜索requestid,找到了eval加密的代码,通过解密,就能找到生成这些值的代码段 代码格式化后,找到了这几个值的生成位置 requestid的生成是随机值,timestamp是时…

vscode插件安装好用

本文来自博客园,作者:prince11,转载请注明原文链接:https://www.cnblogs.com/prince11/p/18285764

java List子父级集合转List树工具类

java List集合转Tree集合 1.创建泛型工具类package com.demo;import org.springframework.util.CollectionUtils;import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util…

博客屋网址导航自适应主题php源码

博客屋网址导航自适应主题php源码v1.0是一个以PHP+MySQL进行开发的网址导航源码。模板源码后台开源无加密,可二次开发,前端响应式自适应多端屏幕。主题源码适合个人建站技术,个人博客论坛,个人日记分享等个人网站内容。站长也可以修改成其他行业的内容目录导航。演示地址ht…

【vue】为什么v-for中需要一个key呢?

通过key值来区分循环中的子内容

在wsl中部署puppeteer的相关笔记

二. 缺少依赖问题反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的 apt install -y gconf-service libc6 libcairo2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libstdc++6 libx11-6 apt inst…

《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(七)

此系列答案配套《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。声明:此系列答案配套《计…

【设计模式(二)】创建型模式--抽象工厂模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。抽象工厂模式也是⼀种创建型设计模式,提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 抽象工厂…

[Java] Java 关键字 : transient

0 序 Java中的transient关键字,transient是短暂的意思。对于transient修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略。 因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。 1 序列化Java中对象的序列…

告别 .NET 7,支持将于 5 月结束——我们几乎不认识你

微软 .NET 7 软件框架的支持将于 5 月结束,这距离其 2022 年发布仅过去 18 个月——这提醒我们,长期更新时代正在成为过去。 .NET 7 于 2022 年 11 月 8 日首次亮相,与其前身不同的是,它是一个标准期限支持 (STS) 版本,这意味着它的支持期为 18 个月。.NET 6 和 .NET 8 都…

在Ubantu22.04中运行ORB_SLAM3

在Ubantu22.04中运行ORB_SLAM3 一、概述 ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。从第一版的单目相机系统,到第二版加入了对stereo以及RGBD camera的支持,再到目前最新版本的orb-slam整合了visua…