根据Facebook的Haystack上的这篇论文:
“ 由于NAS设备管理目录元数据的方式,在目录中放置数千个文件效率极低,因为目录的框图太大,无法被设备有效地缓存。因此,通常需要进行10多个磁盘操作来检索目录文件。在将目录大小减少到每个目录数百个图像之后,生成的系统通常仍然需要进行3个磁盘操作来获取图像:一个将目录元数据读取到内存中,第二个将inode加载到内存中,第三个读取文件内容。 ”
我以为文件系统目录元数据和索引节点将始终由操作系统缓存在RAM中,并且读取文件通常仅需要1个磁盘IO。
那是NAS设备独有的“多磁盘IO读取单个文件”问题,还是Linux也有同样的问题?
我打算运行Linux服务器来提供图像。以任何方式可以减少磁盘IO的数量-理想情况下,确保操作系统将所有目录和inode数据缓存在RAM中,并且读取每个文件只需要不超过1个磁盘IO?