【问题标题】:When writing to a file, does all the pages in memory map to contiguous disk blocks in the Disk?写入文件时,内存中的所有页面是否都映射到磁盘中的连续磁盘块?
【发布时间】:2011-05-01 16:08:48
【问题描述】:

我想知道文件系统实际上是如何将文件写入磁盘的?它是否将其写入所有连续块并将起始块#和设备#作为元数据存储在文件中? 如果它们不存储为连续块(我认为是这种情况),那么它如何确定磁盘块以优化读取时间?

【问题讨论】:

    标签: database database-design filesystems


    【解决方案1】:

    这完全取决于文件系统,没有通用答案。

    这是一个很好的演示:ext3 on-disk layout 用于 EXT3 文件系统。其他人可能会做类似的事情,或者完全不同。查看 The structure of the Reiser file system 了解 reiserfs 3.6 布局。

    对于一个相当不同的方法,请查看XFS on-disk specification

    ext2 disk organization 可能被描述为一种“经典”的做事方式,可以在其他文件系统(包括它的后继者)中找到。

    【讨论】:

    • 有什么通用的通用策略吗?
    • 并非如此,但 ext2 的处理方式相当“经典”。
    • 谢谢。有没有什么好的资源来描述数据库如何将它的 Btree 持久化到这样的文件系统上?
    • 所有数据库引擎的做法都不同(而且它们并不都使用 B 树)。文件系统实现无关紧要,这对所有用户级代码都是透明的。一些数据库可以选择使用原始设备作为后备存储来完全避开文件系统层。因此,您需要查看特定的数据库引擎/存储引擎文档。
    • 非常感谢!有什么好的文档可以了解mysql是如何做到的吗?
    猜你喜欢
    • 2015-10-23
    • 2011-10-26
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多