相关疑难解决方法(0)

Linux:读取文件需要多少磁盘 I/O?如何最小化?

根据Facebook 的 Haystack 上的这篇论文

"由于 NAS 设备管理目录元数据的方式,将数千个文件放置在一个目录中的效率极低,因为目录的块图太大而无法被设备有效缓存。因此,通常会发生 10 次以上的磁盘操作检索单个图像。将目录大小减少到每个目录数百个图像后,生成的系统通常仍会产生 3 个磁盘操作来获取图像:一个将目录元数据读入内存,第二个将 inode 加载到内存中,第三次阅读文件内容。

我曾假设文件系统目录元数据和 inode 将始终由操作系统缓存在 RAM 中,并且文件读取通常只需要 1 个磁盘 IO。

这篇论文中概述的“多个磁盘 IO 读取单个文件”问题是 NAS 设备独有的,还是 Linux 也有同样的问题?

我计划运行一个 Linux 服务器来提供图像。有什么办法可以最大限度地减少磁盘 IO 的数量 - 理想情况下确保操作系统将所有目录和 inode 数据缓存在 RAM 中,并且每个文件读取只需要不超过 1 个磁盘 IO?

linux performance filesystems hard-drive

5
推荐指数
2
解决办法
1311
查看次数

标签 统计

filesystems ×1

hard-drive ×1

linux ×1

performance ×1