我有一个相当大的应用程序,需要同时访问相当多(300 多个)大文件,并通过同时读取它们来访问它们。
如果将所有文件放在 1 个磁盘上(如果我的磁盘足够大),应用程序的执行速度就会变得非常缓慢。为了解决这个问题,我将文件分布在几个物理磁盘和机器上,NFS 挂载分区并使用 bash 脚本创建大量符号链接,以便所有文件都出现在 1 个大目录中。这对于提高执行速度非常有效,分布在 3 个磁盘上可以将执行速度提高 10 倍或更多。
有人能建议一种不太麻烦的设置方法吗?我担心的是,像 RAID 或 Gluster 中的条带化可能效果不太好,因为从来不需要对任何一个文件有很高的读取速度,但总是需要大量的同时访问。
答案1
- 使用 NFS 而不是多个本地磁盘将显著降低您的速度,因为任何现代磁盘都可以饱和 1GB 以太网连接,更不用说多个了。
- 使用 RAID0 也会显著提高您的速度,而无需管理开销,但从理论上平均而言,它只能提高具有符号链接布局的多个磁盘的速度提升的 50% 左右(50% 是因为您的性能取决于可以同时使用多少个条带 - 在最坏的情况下,您的应用程序只需从一个磁盘读取所有内容,在最好的情况下,它可以从每个磁盘读取)。
- 使用 SSD 将显著提高您的性能。虽然价格昂贵,但在这种情况下,没有什么能比 SSD 更好。
所以,简而言之,我会将磁盘放在本地系统中,并尝试不同的 RAID 块大小来优化性能,并认真考虑购买 SSD。