Linux
寫入磁碟時記憶體在 RAM 中的內容 - Linux
自從我開始使用 Linux 發行版以來,我就一直面臨這個問題。在以圖形方式或使用
cp
一個/多個大內容(大文本文件、tar.gz 存檔、ISO 映像文件和電影之類的任何內容)複製/移動時,部分內容寫入磁碟,部分內容記憶體在記憶體中(記憶體)。在複製期間,共享和記憶體的記憶體量急劇增加(用 選中free -m
)。一段時間後,文件管理器(如Dolphin或PCManFM)或
cp
顯示複製已完成,但數據實際上並未寫入磁碟,直到我執行sync
我認為這不是硬體問題。
- 我檢查了許多內部和外部硬碟驅動器,以及各種品牌的 USB 快閃記憶體驅動器,但結果都相同。
- 不是硬碟 APM問題。我總是禁用硬碟電源管理。
- dd 和 cat 的問題是一樣的,比如
dd if=live.iso of=/dev/sdb
.- 不是特定於發行版的問題。我檢查了 Debian、Fedora、Ubuntu、Slax等。
- 我沒有與其他類 Unix 作業系統進行交叉檢查。如果有人對FreeBSD、OpenBSD等有同樣的問題,請告訴我。
有什麼問題,我該如何解決?
正如我所評論的(出於明顯的性能原因),核心正在使用page cache。所以這是一個特性,而不是一個問題。有關更多資訊,請參見http://linuxatemyram.com/。
您可以(但我不建議這樣做)使用一些
mount
選項(禁用或降低頁面記憶體的使用),並且您需要umount
在拔下或移除任何設備(例如 USB 密鑰)之前使用它。然後核心將在解除安裝之前刷新所有數據。你也可以做一個
sync
.
核心在設計上告訴使用者空間實用程序文件操作成功完成,同時記憶體記憶體。
嘗試編輯 /etc/hdparm.conf 以使用選項禁用寫入記憶體
write_cache = off
。sync
但是,這會降低性能,如果您想確保將寫入緩衝區刷新到磁碟,通常首選使用它。