【发布时间】:2015-01-29 15:40:32
【问题描述】:
我们有一个执行大量日志记录的应用程序。我们登录的介质是 SLC SSD 驱动器,但是我们开始在现场看到一些故障。我们可以关闭日志记录(我们这样做),有日志级别(我们有),但是有时工程师打开日志记录以诊断故障并忘记将其关闭,这会导致一段时间后 SSD 出现故障。
查看日志代码,我们将日志条目保存到队列中,每 5 秒迭代一次集合并使用 File.AppendAllText 将行写入文件。
根据MSDN,这会写入文件然后关闭它。
什么是更好的机制来实现相同的功能,但防止(或减少)对 SSD 的损坏?
在软件启动时打开FileStream,在使用期间写入流并在软件退出前关闭会更好吗?这将如何缓解磁盘级别的情况?涉及哪些过程以及这比打开文件并立即关闭它更好。使用FileStream '感觉' 更好,但在进行更改之前我需要一个更具体的理由。
也许我们还没有考虑过更好的方法。
【问题讨论】:
-
SSD 的写入寿命有限。寻找不同类型的磁盘技术或其他品牌的 SSD。 pcworld.com/article/2043634/…
-
我们出于其他原因使用 SSD,我们无法更改 100 多个系统。我们已经使用了我们认为最强大的 SSD 品牌(成本与质量)。我正在寻找一个答案,看看 .NET 如何写入驱动器以及该过程的机制。
-
每 5 秒写入一次是每 5 秒写入一次。我不认为打开文件会是灵丹妙药。文件流写入磁盘。 MLC 的标称寿命为 10,000 次写入周期。每 5 秒只有 14 小时。
-
糟糕。我的意思不是 SLC 不是 MLC
-
即使在每 5 秒不到 60 天的 100 万个周期中。我希望你能用 .NET 修复一下,我会用普通驱动器上的数据库来解决这个问题。也许保留在内存中,每小时只记录一次。
标签: .net solid-state-drive disk-io