我们每天生成大约 340 万个小型 jpeg 文件。我们还删除了大约 340 万张 90 天前的图像。迄今为止,我们已经通过以分层方式存储图像来处理这些内容。层次结构是这样的:
/Year/Month/Day/Source/
这种层次结构使我们能够有效地删除所有来源中长达数天的内容。
这些文件存储在连接到 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
Diskeeper 2009(现为 2010)适用于实时碎片整理,对性能的影响最小。但是,由于它是商业包装,因此需要付费。我们尝试了几个免费应用程序并发现了严重的性能问题。
管理员主页
我从您的帖子中假设您保留了 90 天的图像。快速计算一下,您似乎需要 4.28TB 的存储空间。I/O 模式是什么样的(即,是否更频繁地访问任何数据)?这些数据分布在多少卷上?碎片整理后性能下降到不可接受的水平需要多长时间?
如果您不愿意对系统进行更改(引入数据库),也许您应该关注如何使用与操作系统捆绑的工具以可管理的方式进行碎片整理。在多个较小的 LUN 之间轮换和拆分数据,以便您可以单独对它们进行碎片整理。完成写入 X 天的数据后,移动到下一个 LUN 并使用前 X 天对卷进行碎片整理。如果你不再给它写信,你就不应该引入更多的碎片。
如果您获得了可观的预算,您可能会考虑一种不受碎片影响的存储介质(例如 SSD)。