當我將文件複製到隨身碟時,為什麼我的電腦會當機?
我在這裡遇到了一個非常奇怪的情況。我的電腦工作正常,至少在大多數情況下是這樣,但有一件事我無法處理。當我嘗試從我的隨身碟中複製一個文件時,一切都很好——我得到了 16-19M/s ,它工作得很好。但是,當我嘗試將某些內容複製到同一個 pendrive 時,我的 PC 當機了。滑鼠指針停止移動一兩秒,然後移動一點,然後再次停止。例如,在 Amarok 中播放某些東西時,聲音就像機關槍一樣。速度從500K/s躍升至15M/s,平均8M/s。僅當我將某些內容複製到 pendrive 時才會發生這種情況。複製過程完成後,一切恢復正常。
我嘗試了一切——其他筆式驅動器、前面板上的不同 USB 埠或後面的那些埠,我什至更改了主機板(前面板)上的 USB 引腳,但無論我將 U 盤放在哪裡,它總是一樣的。我嘗試了不同的文件系統 -
fat32
,ext4
. 我的筆記型電腦上的 Windows 設備沒有問題。它必須是我的 PC 或系統中的某個東西。我不知道要尋找什麼。我正在使用帶有獨立 Openbox 的 Debian 測試。我的電腦有點舊——Pentium D 3GHz、1GiB RAM、1.5TB WD Green 磁碟。如果你有什麼可以幫助我解決這個問題的,我會很高興聽到這個消息。我不知道我應該提供什麼其他資訊,但是如果您需要什麼,儘管問,我會盡快更新這篇文章。
我試圖在 ubuntu 13.04 live cd 上重現這個問題。我安裝了我的加密分區 + 加密交換並將我的 pendrive 連接到一個 USB 埠。接下來我嘗試啟動一些應用程序,現在我有大約 820MiB 的 RAM 和大約 400MiB 的 SWAP。複製沒有問題,完全沒有凍結,一切都應該是。所以,看起來這是系統的故障,但具體在哪裡呢?什麼會導致這種奇怪的行為?
您使用的是具有大量記憶體的 64 位版本的 Linux 嗎?在這種情況下,問題可能是 Linux 可能會在慢速設備(例如 SD 卡或 USB 記憶棒)上的大量寫入鎖定幾分鐘。這是一個已知的錯誤,應該在較新的核心中修復。
見http://lwn.net/Articles/572911/
解決方法:作為根本問題:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes
我已將它添加到我
/etc/rc.local
的 64 位機器上的文件中。坦斯塔夫; 此更改可能(並且可能會)降低您對這些設備的吞吐量 — 這是延遲和速度之間的折衷。要回到以前的行為,您可以
echo 0 > /proc/sys/vm/dirty_background_bytes echo 0 > /proc/sys/vm/dirty_bytes
…這是預設值,這意味著寫回行為將由參數
dirty_ratio
和dirty_background_ratio
.對於不熟悉 linux 的人的注意事項:其中的文件
/proc
是偽文件 — 只是核心和使用者空間之間的通信通道。切勿使用編輯器更改或查看它們;取而代之的是一個 shell 提示 — 例如,使用sudo -i
(Ubuntu 風格) 或su root
併使用echo
andcat
)。