在一个文件夹中存储 64000 多个文件且不断增长(ext3)

在一个文件夹中存储 64000 多个文件且不断增长(ext3)

在将文件发送到 Amazon S3 存储桶之前,我使用目录作为文件的暂存区。此暂存目录没有子目录结构 /a/b/c 或 /year/month/day ... 它只有文件 /cdn/file1.png /cdn/file2.png 等。

我在该目录中有大约 64,000 个文件,其大小现在为 2.8GB。

我的问题是,这会破坏吗?我知道这不是最佳选择,我正在同时努力解决这个问题,但迁移可能需要一些时间。

我希望再保持这种状态一年,这意味着一个目录内总共大约有 400,000 个文件。

你怎么看?谢谢。

答案1

它会起作用。您可能不想对目录的内容运行任何批处理操作。ls这样会拖延。我倾向于使用XFS 文件系统对于包含大量未存储在树中的文件的目录......

例如...

# mount
/dev/sdb1 on /app type xfs (rw,noatime,logbufs=8,logbsize=256k,nobarrier)

[root@Rizzo /app/prt]# ls -1 | wc -l
191487

[root@Rizzo /app/prt]# time du -skh .
27G     .

real    0m0.834s
user    0m0.236s
sys     0m0.566s

[root@Rizzo /app/prt]# time ls -lrta | tail -8
-rw-rw-rw-  1 PAB      PAB             733 Dec 15 11:48 09228885.TGZ
-rw-rw-rw-  1 PJD      PJD            8250 Dec 15 11:48 09228881.TGZ
-rw-rw-rw-  1 PJD      PJD            9803 Dec 15 11:48 09228881.LAY.TGZ
-rw-rw-rw-  1 PJD      PJD          127973 Dec 15 11:49 09228886.LAY
-rw-rw-rw-  1 PJD      PJD           31720 Dec 15 11:49 09228886.PRT
-rw-rw-rw-  1 PJD      PJD            5368 Dec 15 11:49 09228886.POF
drwxrwxrwx  3 PEB      SJS         5066752 Dec 15 11:49 .
-rw-rw-rw-  1 PJD      PJD           31726 Dec 15 11:49 09228886.TMP

real    0m2.673s
user    0m1.055s
sys     0m1.622s

答案2

我了解到 ZFS 在处理文件系统上的大量文件时的优势。为了模仿 ewwhite 的基准:

# ls -1 | wc -l
[...]
500982


# time du -skh .
303G    .

real    0m42.422s
user    0m3.889s
sys     0m25.546s

# time ls -lrta | tail -0
real    0m21.053s
user    0m5.503s
sys     0m15.496s

这是在一台具有 6 磁盘 RAID10 SATA 阵列和 4 GB RAM 的 Solaris 机器上进行的,所以没什么特别的。该目录通过 NFS 导出到使用它的 Linux 机器。我不知道 FUSE ZFS 实现是否会显示类似的性能

我们不使用 XFS 的主要原因是我们没有使用它的经验,但正如 ewwhite 的数据所显示,它可能是一个相当不错的选择。

相关内容