我有一個IO密集型仿真程序,它在每次迭代時將仿真軌跡/數據記錄到文件中。由於仿真運行數百萬次以上,並將數據記錄到磁盤中的文件(每次覆蓋文件),我很想知道這是否會破壞硬盤,因爲大多數存儲磁盤都有一個上限寫入/擦除週期(例如,閃存盤允許高達100,000次寫入/擦除週期)。將文件分割爲多個文件是更好的選擇嗎?將文件寫入百萬次,破壞我的硬盤嗎?
回答
您需要認識到,對單個文件的一百萬次寫入調用可能只寫入磁盤的每個塊一次,這不會對磁盤或SSD設備造成任何損害。如果您將文件的第一部分覆蓋了一百萬次,那麼出現磨損的風險會更大,但有很多緩解因素。首先,如果它是一個程序的一次運行,那麼o/s很可能會將磁盤映像保留在內存中,而不會在此期間寫入磁盤 - 除非可能使用的是日記文件系統。如果它是一個日記文件系統,那麼實際寫作將分散在很多不同的塊中。
如果您設法將磁旋轉硬盤上的同一個塊寫入一百萬次,您仍然沒有將磁盤磨損的嚴重風險。
谷歌搜索'硬盤寫入週期'顯示了大量翔實的文章(更具體地說,也許是關於SSD),相關的搜索也可能會幫助你。
在SSD上,對任何特定塊的寫入(或擦除週期更準確)數量有限。對於任何給定的塊,它可能超過100K到100萬,並且SSD使用「磨損加載」來避免每次對同一塊進行不必要的「寫入」。 SSD只能寫0,所以當你「復位」一點時,你必須擦除整個塊。 [人們可以在電池上放置一個逆變器,使其變成另一種方式,但是你得到一個或另一個,所以它沒有多大幫助]。
真正的硬盤更像是一個機械設備,所以與寫入同一個地方的次數沒有多大關係,它更像是頭部動作。
我不會太擔心。寫一個文件應該沒問題,不管你有一個文件還是多個文件,結果都沒有什麼影響。
SLC - 100k寫入週期,MLC-3k,TLC 1k,但SLC很少見且昂貴,大多數消費驅動器是MLC和TLC。 – dtech
- 1. 將一百萬行寫入文本文件
- 2. 我的.fla文件被破壞了嗎?
- 3. 將百萬條記錄寫入Excel中
- 4. 閱讀成千上萬的文件並寫入數百萬的Java文件
- 5. 硬盤壞掉的文件系統
- 6. 將文本讀取並寫入硬盤上的單獨文件
- 7. 如何將文件讀/寫入java中的硬盤驅動器?
- 8. C#使用ThreadPool將文件寫入硬盤的線程
- 9. mysql硬盤的效率與數百萬行
- 10. 將文件寫入隨機非連續硬盤位置
- 11. C++掃描MP3文件的硬盤並將它們寫入文本文件
- 12. Dompdf庫:我可以將文件存儲到硬盤嗎?
- 13. 每秒百萬次迭代
- 14. 爲什麼WCF Stream響應在寫入磁盤時被破壞?
- 15. 寫入小文件或一次寫入文件會更好嗎?
- 16. 將System.Xml.XmlElement寫入磁盤上的文件
- 17. 如何使用Firefox插件從硬盤讀取/寫入文件?
- 18. 免除硬盤壞道
- 19. 如何在Firefox中讀取/寫入硬盤中的文件?
- 20. 在硬盤上的填充文件中寫入硬編碼的數據
- 21. emacs不會破壞受hg控制的文件的硬鏈接
- 22. 檢出Visual Studio 2010 TFS解決方案並破壞硬盤
- 23. Xcode突然破壞我的xib文件
- 24. Chrome擴展可以修改我們硬盤中的文件嗎?
- 25. 寫入硬盤驅動器的時間
- 26. 在hadoop streaming中,我可以將文件寫入reducer中的本地光盤嗎?
- 27. 寫入硬盤錯誤 - 打開文件過多
- 28. WordPress無法將文件寫入磁盤
- 29. 強制將文件寫入磁盤
- 30. Python何時將文件寫入磁盤?
不要忘記,磁盤本身可能有一個緩存將合併寫入。 – MJZ