每日最新頭條.有趣資訊

關於 U 盤 / 硬碟熱插拔,你所需要知道的二三事

對於很多尾巴來說,可能多多少少都有過強拔 U 盤或者硬碟的經歷吧?輕則丟檔案、重則廢 U 盤,在耳濡目染無數血的教訓之後,我們差不多已經被教會了「拔盤之前先彈出」的固定流程。但是,真的只有安全彈出之後才能拔盤嗎?

其實,正常來說是沒必要,因為我們常用的 USB 接口是有專門的熱插拔設計。

支持熱插拔是主流接口的普遍設計,在 1994 年 USB 這一外部總線標準推出時,就已經考慮到了 USB 接口對熱插拔功能的支持。USB-A 接口硬體層面的熱插拔設計方案是,將 USB 公口的 4 根觸片中外側的兩根作為供電觸片,內側兩根作為數據傳輸觸片,而外側供電觸片的長度設計得比內側傳輸觸片更長。

這種設計的巧妙之處在於,當 USB 外接設備插入時,外側的供電觸片先接入主機板為設備供電,隨後內側的數據傳輸觸片才接入並接受系統命令傳輸數據;當 USB 裝置拔出時,內側傳輸觸片先行脫離、中斷數據傳輸,隨後供電觸片脫離並停止為外接裝置供電。雖然我們插拔硬碟和 U 盤只是一瞬間的動作,但是 USB 的這種「先斷網後斷電」的設計正常情況下能夠確保強行斷開時 USB 連接時外接設備不會發生數據損毀或者硬體故障。

不過意外是永遠存在的,而這些「數毀盤亡」的意外,絕大部分發生在 U 盤 / 硬碟的句柄被鎖定的情況下(也就是數據傳輸狀態下)被強行斷開時。在數據傳輸狀態下貿然拔出 U 盤 / 硬碟,有可能會導致邏輯分配表損壞(格式化)或者 Flash 芯片物理損傷(報廢)。

所以熱插拔的先行條件是「確保 U 盤 / 硬碟未被佔用」,而 Windows 引入的「安全彈出」功能也是為了讓用戶能夠手動確認外置存儲設備在彈出前處於空閑狀態。當用戶點擊安全彈出時,系統將開始檢查 U 盤 / 硬碟的檔案傳輸活動是否已經停止,如果有進程正在佔用外接 U 盤 / 硬碟傳輸或者索引數據,系統則會拒絕彈出請求。

但是為什麽經常會出現「明明沒有傳輸檔案系統還是拒絕彈出」?這裡可能涉及到兩種情況:

程式佔用

很多時候即使 U 盤 / 硬碟看起來已經處於未傳輸檔案的空閑狀態,但是實際上在後台仍然有進程在佔用 隨身碟 / 硬碟並阻止用戶彈出,尤其是在安裝了大量應用的情況下,更多後台進程可能都會私自檢索外接存儲設備的檔案。

在不能確定佔用進程的情況時,無奈之下強行熱插拔也有可能會造成數據丟失或者硬體損壞。所以如果遇到這種情況,可以使用 LockHunter 等第三方軟體查看阻止彈出的進程,然後選擇手動關閉進程就可以安全拔出。

寫入緩存

由於電腦內部存儲與外接存儲存在著數據處理和讀寫的速度鴻溝,所以 macOS 和 Windows 均會使用「寫入緩存」的模式通過 USB 接口與外接存儲裝置傳輸數據(尤其是寫入數據時)。這種模式下,電腦會先將需要寫入的數據暫存在本地緩存中在後台陸續傳輸至 U 盤 / 硬碟,所以即使電腦已經報告檔案傳輸完成,其實 U 盤 / 硬碟仍然處於數據傳輸狀態。

如果 U 盤 / 硬碟在「寫入緩存」模式下傳輸檔案,最合理的選擇是不管是否已經完成檔案傳輸,優先選擇安全彈出之後再移除存儲裝置。Windows 用戶還可以在設定中解除「寫入緩存」的檔案傳輸模式。

所以,如果不確定後台仍然在佔用 U 盤或者硬碟,謹慎地執行安全彈出檢查並不為過,但是如果系統乾淨、寫緩存模式被關閉,其實外接存儲是可以在確定檔案傳輸完畢之後直接拔出的。

尾巴們之前有過「毀盤」經歷嗎?

獲得更多的PTT最新消息
按讚加入粉絲團