我正在读这个纸来自 Facebook (Beaver)。该论文称
我们最初在 NFS 卷的每个目录中存储了数千个文件,这导致读取单个映像需要执行大量磁盘操作。由于 NAS 设备管理目录元数据的方式,将数千个文件放在一个目录中效率极低,因为目录的块图太大,设备无法有效缓存。因此,检索单个图像通常需要超过 10 次磁盘操作。将目录大小减少到每个目录数百个图像后,生成的系统通常仍需要3 个磁盘操作来获取图像:一个是将目录元数据读入内存,第二个是将 inode 加载到内存中,第三个是读取文件内容。
我有以下问题:
- “目录的块映射”是什么意思?它是指包含文件名和 inode 号之间的映射的文件吗?
- 最后,论文说读取一个文件需要 3 个 I/O。在我看来,应该有 4 个 I/O。第一个 I/O 用于加载目录 inode(inode 包含元数据)。第二个 I/O 用于读取目录条目(这将为我们提供文件 inode 编号)。第三个 I/O 用于将文件 inode 加载到内存中。第四个 I/O 用于读取文件内容。我哪里错了?