
我正在 Debian 8 上運行全新安裝,並且我經常需要等待一段荒謬的時間才能彈出我的閃存驅動器(從 1 到 10.. 15 分鐘)。在此期間,我無法存取有關驅動器的任何內容,因為出現錯誤An operation is already pending.
看起來它與閃存驅動器格式沒有任何關係(我已經嘗試過 FAT、ext4、NTFS),但當我開始將文件放入其中時,它似乎也會啟動。 (不過沒什麼重的,~500Mb)。
什麼可能導致這個問題?我可以做些什麼來加快彈出速度嗎?
答案1
雖然我不知道這是否是您問題的實際解釋/解決方案,但我相信這通常是 USB 的問題。
如果您複製大文件或多個文件,USB 裝置將向主機發送一條訊息:「我即將向您發送這些文件」。然後,設備將非同步發送所有文件,並花費所需的時間。這表示當您執行操作時,cp /my/flash/drive/foo.txt /home/bar/foo.txt
裝置將告訴作業系統檔案正在複製,然後傳送檔案。
據我所知,檢查所有資料是否已實際傳輸的唯一方法是sync
在執行複製/移動或刪除閃存驅動器上的檔案的命令後輸入。然後,同步命令將阻塞,直到磁碟機完成資料傳輸。之後就可以安全地卸載/彈出 USB 隨身碟了。
[編輯]:檢查這個帖子查看操作進度sync
:運行時列印的數字
watch grep -e Dirty: -e Writeback: /proc/meminfo
當後台資料傳輸發生時,應該會減少到零。完成後,您的sync
意志就完成了,您的閃存驅動器將彈出。
彈出 USB 儲存裝置的另一個常見問題是,如果目前有程式、終端機或類似程式正在處理該隨身碟上的檔案/資料夾,則至少 Debian 不會允許這樣做。因此,如果您已將目錄變更為終端機中該快閃磁碟機上的資料夾,然後嘗試使用另一個終端機彈出快閃磁碟機,則除非您將目錄變更為第一個終端機中快閃磁碟機上以外的其他位置,否則它將不允許這樣做。
答案2
這可能是由於尚未寫入裝置的快取寫入的累積所致,如中所述“有害的 USB 記憶棒失速問題”。
作為解決方法,您可以限制髒內存量由於未完成的 IO:
echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes