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

    文章

    1292

    浏览量

    57242
  • 文件系统
    +关注

    关注

    0

    文章

    284

    浏览量

    19884
  • 存储空间
    +关注

    关注

    0

    文章

    54

    浏览量

    10671
收藏 人收藏

    评论

    相关推荐

    华纳云:VFS在提升文件系统性能方面的具体实践

    调用接口: VFS为所有文件系统提供了统系统调用接口,如open(), read(), write(), close()等。这种统一性减少了系统
    的头像 发表于 11-27 15:59 62次阅读

    服务器数据恢复——Ext4文件系统umount失败的数据恢复案例

    组:Ext4文件系统的全部空间被划分为若干个组,每个组结构基本上相同。 组描述符表:每个
    的头像 发表于 11-13 13:25 161次阅读
    服务器数据恢复——Ext4<b class='flag-5'>文件系统</b>umount失败的数据恢复案例

    虚拟化数据恢复—UFS2文件系统数据恢复案例

    虚拟化数据恢复环境: SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构在台服务器上,另外两台服务器上安装ESXi虚拟化系统。整个存储建立
    的头像 发表于 11-11 11:02 118次阅读

    服务器数据恢复—EXT3文件系统下误删除数据的恢复案例

    服务器数据恢复环境: 邮件服务器中有组由8盘组成的RAID5阵列, 上层是Linux操作系统+EXT3文件系统。 服务器故障: 由于误删除导致
    的头像 发表于 10-23 15:11 133次阅读
    服务器数据恢复—EXT3<b class='flag-5'>文件系统</b>下误删除数据的恢复案例

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第文件系统
    的头像 发表于 10-05 16:50 288次阅读

    小型文件系统如何选择?FatFs和LittleFs优缺点比较

    01  概述 文件系统在嵌入式系统中的作用不可或缺,它提供了对非易失存储设备(如闪存、SD卡等)上的数据进行有效组织和管理的能力。通过文件系统
    的头像 发表于 09-29 16:14 1076次阅读
    小型<b class='flag-5'>文件系统</b>如何选择?FatFs和LittleFs优缺点比较

    想提高开发效率,不要忘记文件系统

    ​同学们都知道,开发过程中文件系统的重要,同样的,4G-Cat.1模组的文件系统也非常重要,它通常与数据传输速度、存储效率,以及数据安全等有非常重要的关系,在应用开发中也非常重要。
    的头像 发表于 09-21 08:18 205次阅读
    想提高开发效率,不要忘记<b class='flag-5'>文件系统</b>

    如何修改buildroot和debian文件系统

    本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian
    的头像 发表于 07-22 17:46 423次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    linux--sysfs文件系统

    sysfs文件系统 sysfs,全称为System Filesystem,是个由Linux内核实现的虚拟文件系统。它扮演着个桥梁的角色,将内核中的设备和驱动程序信息以
    的头像 发表于 07-08 11:37 733次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>

    请问FATFS文件系统可靠如何?

    ST官方固件库中使用了FATFS文件系统,想问下,这个文件系统可靠么? 我想了解下,有哪位朋友真正产品上使用FATFS文件系统,可靠有什
    发表于 05-16 06:35

    鸿蒙轻内核源码分析:虚拟文件系统 VFS

    VFS(Virtual File System)是文件系统的虚拟层,它不是个实际的文件系统,而是个异构文件系统之上的软件粘合层,为用户提
    的头像 发表于 02-18 14:50 771次阅读

    【服务器数据恢复】UFS2文件系统数据恢复案例

    服务器数据恢复环境: 台服务器,虚拟化系统为esxi,上层使用iSCSI的方式实现FC SAN功能,iSCSI通过FreeNAS构建。 FreeNAS采用了UFS2文件系统,esxi虚拟化
    的头像 发表于 01-09 14:53 839次阅读

    文件存储和存储的区别和联系

    文件存储和存储是两种常见的数据存储方式,它们在设计思想、数据组织方式、应用场景等方面存在着些区别和联系。 首先,文件存储是指将数据以文件
    的头像 发表于 12-20 17:16 1140次阅读

    服务器数据恢复-EqualLogic PS存储VMFS文件系统数据恢复案例

    台DELL EqualLogic PS系列存储,存储中有组由16SAS硬盘组成的RAID5。上层是VMFS文件系统,存放虚拟机文件。存
    的头像 发表于 12-15 13:10 514次阅读
    服务器数据恢复-EqualLogic PS存储VMFS<b class='flag-5'>文件系统</b>数据恢复案例

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

    由于工作人员的误操作,将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4
    的头像 发表于 12-04 10:49 422次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被误格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例