趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85458 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

28 | 硬盘文件系统:如何最合理地组织档案库的文档?

超级块
块组描述符表
文件系统操作
位图作用
Extents
块的索引方式
文件的时间属性
inode结构
块的分配
硬链接与软链接
索引项
目录文件的块组织形式
文件系统的格式
inode位图和块位图
inode与块的存储
磁道和扇区
磁盘盘片
查看文件夹的内容
查看inode的内容
软链接和硬链接的存储格式
目录的存储格式
文件系统格式
硬盘结构
课堂练习
硬盘文件系统

该思维导图由 AI 生成,仅供参考

上一节,我们按照图书馆的模式,规划了档案库,也即文件系统应该有的样子。这一节,我们将这个模式搬到硬盘上来看一看。
我们常见的硬盘是上面这幅图左边的样子,中间圆的部分是磁盘的盘片,右边的图是抽象出来的图。每一层里分多个磁道,每个磁道分多个扇区,每个扇区是 512 个字节。
文件系统就是安装在这样的硬盘之上。这一节我们重点目前 Linux 下最主流的文件系统格式——ext 系列的文件系统的格式。

inode 与块的存储

就像图书馆的书架都要分成大小相同的格子,硬盘也是一样的。硬盘分成相同大小的单元,我们称为(Block)。一块的大小是扇区大小的整数倍,默认是 4K。在格式化的时候,这个值是可以设定的。
一大块硬盘被分成了一个个小的块,用来存放文件的数据部分。这样一来,如果我们像存放一个文件,就不用给他分配一块连续的空间了。我们可以分散成一个个小块进行存放。这样就灵活得多,也比较容易添加、删除和插入数据。
但是这也带来一个新的问题,那就是文件的数据存放得太散,找起来就比较困难。有什么办法解决呢?我们是不是可以像图书馆那样,也设立一个索引区域,用来维护“某个文件分成几块、每一块在哪里”等等这些基本信息?
另外,文件还有元数据部分,例如名字、权限等,这就需要一个结构 inode 来存放。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Linux下最主流的文件系统格式——ext系列的文件系统的格式。文章深入介绍了硬盘的基本结构,文件系统中的块和inode的存储方式,以及inode的结构和作用。还介绍了ext4文件系统引入的新概念——Extents,以及如何通过Extents来提高大文件的读写性能和减少文件碎片。文章还介绍了文件系统的格式,包括超级块、块组描述符表和元块组的概念,以及如何通过Meta Block Groups特性来优化块组描述符表的备份策略。此外,文章还介绍了目录的存储格式和软链接、硬链接的存储格式。整体来说,本文深入浅出地介绍了硬盘文件系统的组织方式和管理原理,对于想要深入了解文件系统的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(65)

  • 最新
  • 精选
  • 二三子也
    >>每个 extent 最大能表示 128MB 的数据。 疑问:ee_len大小为16bit,最大能表示2^16 - 1,如果块大小为4K,则一个extent能表示256MB 解惑:ee_len为一个16bit的无符号整数,但是其最高位在预分配特性中用来标识这个extent是否被初始化过了,所有ee_len中可用的位为15bit,最大可表示2^15个连续的块,如果块大小为4K,则一个extent最大能表示128MB

    作者回复: 赞

    2019-06-10
    3
    33
  • 江山未
    看完已经不认识"块"这个字了

    作者回复: 块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块块,哈哈哈

    2019-08-05
    2
    17
  • 嘉木
    每次ls的时候,文件夹大小都显示4096,原来是一个块的大小,4k vim 文件夹 能看到文件夹下的文件列表

    作者回复: 对的

    2019-07-13
    9
  • W.jyao
    每篇文章有点收获就可以

    作者回复: 是的是的

    2019-06-01
    2
    6
  • geraltlaush
    老师,Exents的存储结构的树是红黑树吧

    作者回复: 这个不是的,这个是硬盘上的。

    2019-06-01
    4
  • 欢乐小熊
    前几天刚在虹桥关注到这个厕位导航系统, 结果今天就在课上看到了, 有趣有趣!!

    作者回复: 我当时看了,也是灵机一动

    2019-05-31
    3
  • Mr.差不多
    老师,您好。相同的文件夹在不同Linux机器上用ls -U得到的顺序也不一样。这是什么原因呢?文件系统如何确定文件夹中不同文件iNode的存储顺序的?

    作者回复: 创建的顺序也不一样呀。ls没有访问文件的Inode,仅仅访问了文件夹的内容

    2019-05-31
    2
    2
  • 八台上
    目录文件和后边讲的目录项(dentry)的关系是什么呢? 我理解目录文件里边的内容就是 目录项列表(即目录文件下边的每一个普通文件和目录文件的目录项集合)

    作者回复: dentry不止表示目录项,后面讲内存中结构的时候会讲

    2020-06-10
    1
  • 超超
    df -i 文件

    作者回复: 赞

    2019-07-23
    1
  • 靠人品去赢
    偷偷地问一句,4K对齐是不是就跟一个block默认大小是4K有关?

    作者回复: 有的,缓存的时候好弄

    2019-06-17
    1
收起评论
显示
设置
留言
65
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部