在将文件发送到 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 的数据所显示,它可能是一个相当不错的选择。