0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解读文件系统的作用性(一)index块设计

454398 来源:蜗窝科技 作者:驴肉火烧 2020-09-21 14:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

距我将全套盗墓笔记成功保存在8MB空间里已经过去了19天58分钟32秒,我渐渐发觉更高、更快、更强的绝不限于奥运精神,也充分体现了人类贪婪的本质,无尽的需求催生出这光怪陆离的大千世界。

就在今天下午,我得到一个通知,要么继续使用连续的存储空间,但是只能有4MB,要么去使用不连续的存储空间,总量可以仍然是8MB,那一刻,我的内心反而是平静的,因为我知道,这就是现实,一个不够优秀的系统是无法满足各种刁钻的需求的,并且我并不想丢掉一半的盗墓笔记,所以我必须使用不连续的存储空间,一个不算坏的消息是,就算是不连续,但是每块最小也有2048字节,并且连续的存储空间是2048字节对齐的,还有什么好说的,撸起袖子加油干。

当时我的脑海中,浮现出了星空的图像,天顶中每颗闪烁的星代表的就是一段文字,我要怎么将它们串在一起呢?我想,首先要解决的是识别问题,即眼前的这颗星属于哪本书?是的,我需要星的索引信息,每条索引信息对应着一段可存储的空间,记录空间在硬盘中的偏移,长度,内容是属于哪本书,对应内容在书内的偏移,这样通过索引信息就可以在硬盘中找到存储着的盗墓笔记的片段了,于是有了如下的设计,

book_name用来存储书名,hd_ofs存储这段存储空间在硬盘中的偏移,file_ofs存储这段存储空间存储的内容在书中的偏移,chunk_len存储这段存储空间的长度,看起来是能工作的,那么这样的设计够不够好呢,答案显然是需要拿出工匠精神再来打磨一下了。

book_name,这里看起来很糟糕,如果书名很长则无法存储完整,如果书名很短则浪费了存储空间,这里真的需要存储一个书名吗?按照我的需求,盗墓笔记全套是8本书,那么第一本书,我这里记录1即可,依次则是2,3,4,...,我只需要数字就可以进行区分,于是新的设计出现了

但是,新的问题又出现了,我能够通过一个个的index对象找到数据块,但是我该如何找到这些index对象呢?由于每个index对象占用12字节,那么将index搓堆存在一个只存储index的数据块内,那么一个块能存170个index,就像下面这样

很好,现在有了一个index块,那么170个index最多只能映射(170 * 2048)字节(340KB)的内容,可我要存储的盗墓笔记不止这么点内容,所以还需要更多的index块

很好,现在有了更多的index块,我能通过index找到想要看的内容,但是index块也是不连续的,我要如何找到index块在哪里呢?其实,我对之前每个数据块填充170个index对象已经感觉难受了,因为170个index对象只使用了2040字节,这样一个数据块就有8字节的浪费,如果这8字节用来存储另一个index块在硬盘中的偏移位置,那么index块之间就能串联在一起,而我要做的就是找到那个入口

经过了两顿烧烤的谈判,我终于赢得了硬盘第1024个数据块的永久使用权,于是第1024数据块就成为了串起整部盗墓笔记的那个入口

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬盘
    +关注

    关注

    3

    文章

    1355

    浏览量

    59575
  • 文件系统
    +关注

    关注

    0

    文章

    301

    浏览量

    20811
  • 存储空间
    +关注

    关注

    0

    文章

    55

    浏览量

    10991
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件
    的头像 发表于 11-11 11:53 376次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    【直播预告】下周三晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件
    的头像 发表于 11-06 18:05 1679次阅读
    【直播预告】下周三晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。睿擎平台提供了套完整的文件系统
    的头像 发表于 11-05 18:13 7699次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | 技术解析

    文件系统文件怎么循环覆盖的写入数据?

    请教文件系统数据写入的问题。 比如我新建文件,test.txt,写入数据超过512KB后,就从头开始写,后面的数据不删除,从头开始覆盖。 比如原来写了1000条数据,然后从头开
    发表于 09-22 08:20

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1043次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠。但只读属性同时又是它的大缺陷,使得用户无法对其内容对进扩充。七、RamDisk
    发表于 06-19 17:22

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4
    的头像 发表于 06-10 12:03 563次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    如何正确选择嵌入式文件系统

    Linux嵌入式系统中,文件系统和缓存机制常导致数据存储稳定性问题。本文通过案例分析原因,对比不同文件系统特性,为开发者提供优化建议,助力提升数据稳定性和系统可靠
    的头像 发表于 03-17 11:35 863次阅读
    如何正确选择嵌入式<b class='flag-5'>文件系统</b>?

    NFS网络文件系统深度解析

    NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件样访问远端
    的头像 发表于 03-01 14:15 1171次阅读

    服务器数据恢复—Zfs文件系统服务器数据恢复案例

    服务器数据恢复环境&故障: 台zfs文件系统的服务器,管理员误操作删除了服务器上的数据。
    的头像 发表于 01-16 17:27 633次阅读

    防止根文件系统破坏,OverlayRootfs 让你的设备更安全

    OverlayRootfs介绍OverlayRootfs是指利用OverlayFS技术创建的根文件系统(rootfilesystem)。OverlayFS是种联合文件系统(UnionFS),允许将
    的头像 发表于 01-08 16:33 2457次阅读
    防止根<b class='flag-5'>文件系统</b>破坏,OverlayRootfs 让你的设备更安全

    EE-329:在SHARC处理器上运行FAT16文件系统和DOS命令

    电子发烧友网站提供《EE-329:在SHARC处理器上运行FAT16文件系统和DOS命令.pdf》资料免费下载
    发表于 01-06 14:22 0次下载
    EE-329:在SHARC处理器上运行FAT16<b class='flag-5'>文件系统</b>和DOS命令

    EE-289:在ADSP-BF533 Blackfin处理器上实现FAT32文件系统

    电子发烧友网站提供《EE-289:在ADSP-BF533 Blackfin处理器上实现FAT32文件系统.pdf》资料免费下载
    发表于 01-05 09:13 0次下载
    EE-289:在ADSP-BF533 Blackfin处理器上实现FAT32<b class='flag-5'>文件系统</b>

    关于更新openharmony文件系统时遇到的问题

    用的固件,文件系统,内核是之前的,之前版本用起来没问题。但是 用下面三个的时候 固件可以正常烧录,也按照文档里面加载了环境变量,但是烧录内核和文件系统(都是U盘更新的)的时候出现了这样的问题
    发表于 12-30 11:55

    服务器数据恢复—Lustre分布式文件系统数据恢复案例

    5台节点服务器,每台节点服务器上有组RAID5阵列。每组RAID5阵列上有6硬盘(其中1硬盘设置为热备盘,其他5硬盘为数据盘)。上层系统
    的头像 发表于 12-25 11:39 805次阅读
    服务器数据恢复—Lustre分布式<b class='flag-5'>文件系统</b>数据恢复案例