【问题标题】:Is it guaranteed that the beginning of a file is aligned with Pagesize of file system?是否保证文件的开头与文件系统的页面大小对齐?
【发布时间】:2011-12-22 12:54:58
【问题描述】:

如果这不成立,我们似乎无法帮助文件系统对齐。

是真的吗?

【问题讨论】:

  • 磁盘是按块读取的(通常是 512 或最近的 4096 字节),而不是按页。
  • @jiliagre 绝大多数文件系统都使用页面或集群运行。页面可以等于(但不能小于)硬件块,但通常更大。
  • Pages 是 Pagesize 通常是指操作系统的虚拟内存分配单元。这与文件系统如何布局其文件并没有太大关系。 @new_perl:你能澄清一下你在这里问什么以及你想解决什么问题吗?
  • @jlliagre 谁告诉你文件系统不能使用“页面”这个词?以防万一,我们的 SolFS 使用页面而不是集群进行操作,DBMS 也是如此。
  • 我从来没有写过一个“绝不能”使用页面隐喻的文件系统,只是“pages”和“pagesize”通常与虚拟内存相关联。我根本不熟悉与文件系统相关的页面大小,而且似乎我不是唯一一个:stackoverflow.com/questions/2045466/…

标签: filesystems page-size


【解决方案1】:

假设页面大小是指文件系统逻辑分配单元(通常为 4K 或 8K 集群),您不能假设文件将从每个文件系统的边界开始。

许多基于 FFS 的 FS(SunOS/SVR4 和 HP-UX UFS、BSD UFS1 和 UFS2、LFS)在创建大量小文件时会实现碎片以节省空间。请注意,虽然 ext2/3 基于 FFS,但它不支持片段。

实现块子分配的其他常见(或不太常见)FS 是 Netware FS、ReiserFS、Reiser4、IBM JFS2、Sun SAM/QFS 和 VMWare VMFS。

现代文件系统如 btrfs 和 zfs 也支持块子分配。

对于所有这些文件系统,一个小文件可能从分配单元边界的非空偏移量开始。

在任何情况下,大文件(即大于分配单元的文件)可能会从几乎所有文件系统(如果不是所有文件系统)的边界开始。

【讨论】:

  • 你如何为那些你不能假设文件将从边界开始的FS优化磁盘IO呢?有没有办法验证大于分配单元的文件可能会从几乎所有文件系统的边界开始而不是参考规范,比如说,有没有办法打印出来偏移量?
  • 对于小于分配单元的文件,没有什么可优化的。在单个操作中读取整个文件
  • 有没有办法验证大文件是否属实?
  • 我不是想解决任何特定的问题,只是好奇。
  • 那么我的答案是文件是否从集群边界开始在性能方面并不重要。在文件系统实现中,有很多事情会比这个特定的细节产生更大的性能影响。
猜你喜欢
  • 2015-10-27
  • 1970-01-01
  • 2013-10-31
  • 2023-03-29
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2013-12-05
  • 2012-08-16
相关资源
最近更新 更多