处理许多小文件时出现磁盘碎片

Zor*_*ack 5 files windows-server-2003 performance filesystems

我们每天生成大约 340 万个小型 jpeg 文件。我们还删除了大约 340 万张 90 天前的图像。迄今为止,我们已经通过以分层方式存储图像来处理这些内容。继承关系是这样的:

/Year/Month/Day/Source/
Run Code Online (Sandbox Code Playgroud)

这种层次结构使我们能够有效地删除所有来源中数天的内容。

这些文件存储在连接到 14 个磁盘 SATA RAID6 的 Windows 2003 服务器上。

在写入和读取磁盘时,我们已经开始遇到严重的性能问题。

这可能是由于硬件的性能,但我怀疑磁盘碎片可能是罪魁祸首。

有些人建议将数据存储在数据库中,但我一直在犹豫要不要这样做。另一个想法是使用某种容器文件,例如 VHD 或其他东西。

有没有人对减轻这种碎片有什么建议?

附加信息:

平均文件大小为 8-14KB

来自 fsutil 的格式信息:

NTFS Volume Serial Number :       0x2ae2ea00e2e9d05d
Version :                         3.1
Number Sectors :                  0x00000001e847ffff
Total Clusters :                  0x000000003d08ffff
Free Clusters  :                  0x000000001c1a4df0
Total Reserved :                  0x0000000000000000
Bytes Per Sector  :               512
Bytes Per Cluster :               4096
Bytes Per FileRecord Segment    : 1024
Clusters Per FileRecord Segment : 0
Mft Valid Data Length :           0x000000208f020000
Mft Start Lcn  :                  0x00000000000c0000
Mft2 Start Lcn :                  0x000000001e847fff
Mft Zone Start :                  0x0000000002163b20
Mft Zone End   :                  0x0000000007ad2000
Run Code Online (Sandbox Code Playgroud)

Dav*_*e M 1

Diskeeper 2009(现为 2010)非常适合实时碎片整理,对性能的影响最小。然而,由于它是商业包,因此存在成本。我们尝试了几个免费应用程序,发现了严重的性能问题。

Diskeeper 主页