![目录的块图是什么?会发生多少次磁盘 I/O?](https://linux22.com/image/745485/%E7%9B%AE%E5%BD%95%E7%9A%84%E5%9D%97%E5%9B%BE%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E4%BC%9A%E5%8F%91%E7%94%9F%E5%A4%9A%E5%B0%91%E6%AC%A1%E7%A3%81%E7%9B%98%20I%2FO%EF%BC%9F.png)
我正在读这个纸来自 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 用于读取文件内容。我哪里错了?