我有一个由2个hex数字定义的3级目录结构,如下所示:
0A/FF/2B/someimagefile.gif
我在1.5TB的压缩文件中有300M的小文件,这些文件将会填充这些目录(我们将来会有更多的文件出现,所以我select了目录结构来防止大量的文件崩溃到一个典型的extX文件系统)。
解压缩这些文件的速度为每秒1MB(或约18天解包)。 Ouchie!
我想这是慢的,因为我正在创build目录结构,然后是文件(从Java API完成)。 所以我开始只在bash循环中创build目录结构。
单独的目录是以目前的速度大约5天的任务。
任何关于提高这个速度的想法?
UPDATE
这个难题的一部分是用perl而不是bash来解决的,创build目录的速度提高了200多倍,现在这个操作可以让你rest一下,而不是延长周末rest时间。
但文件创build仍然非常缓慢,即使不需要创build目录。
我最后的回答是:“不要这样做”。
创build许多小文件时,我无法find超过2Mbytes / sec的速度。 对于terrabyte的数据量来说,这太过惯性了。
我们正在关注facebook的脚步,并将这些文件转储到二进制数据存储中(或者使用大量的带有BLOB的mysql / myisam表,现在正在进行试验……)。
这有点复杂,但是消除了与小文件相关的随机查找问题,而且我可以在几个小时或一天内处理大量的数据,而不是几周。
MongoDB已经成为调查的另一个好select。
用noatime,nodiratime选项重新挂载文件系统