分類: 技巧

如何讓 USB 隨身碟資料損毀的風險降到最低?

這裡討論一般的隨身碟該如何使用,才能使隨身碟中資料損毀的風險降到最低,讓隨身碟中的重要資料更有保障。

隨身碟是現在幾乎每個人都會使用的科技產品,雖然他的價格低廉,但是隨身碟一旦損毀,儲存在裡面的資料有就會跟著消失,這是很令人頭痛的問題。

以目前市面上的 USB 隨身碟來說,都是屬於快閃記憶體(flash memory),這種記憶體在讀取與寫入的次數上有一定的限制,依據所使用儲存技術不同,壽命也不一樣,目前的快閃記憶體儲存技術分為兩種:SLC(Single-Level Cell,單層式儲存技術)與MLC(Multi-Level Cell,多層式儲存技術),下面這個表是兩種技術的比較:

SLC MLC
儲存位元與狀態 一個記憶單元只儲存一個位元(bit) 一個記憶單元可儲存兩個位元(bit)以上
資料儲存量(Page/Block) 較小(2KB/128KB) 較大(512B/32KB 或 2KB/256KB)
資料寫入速度 較快(9MB/s) 較慢(1.5MB/s)
使用壽命 10 萬次讀寫 1 萬次讀寫
生產成本 低(約為 SLC 的四分之一)

所以其實隨身碟正常來說,讀寫次數到達一定的量之後就可能會壞掉,這是目前硬體技術上的限制,是無法避免的,但是我們還是可以做一些其他的保護措施,讓資料損毀的風險降低。

基本措施

一般常使用的檔案系統(例如 FAT32 或 NTFS 等)都只能單純的儲存檔案而已,沒有任何資料驗證的功能,如果使用這樣的檔案系統儲存很重要的檔案時,就要自己做好備份的工作,必要時使用 checksum(例如 MD5/SHA1 雜湊)來驗證資料的正確性與完整性,若是資料真的出問題,再使用備份檔案來回覆。

另一方面,不管使用哪一種檔案系統,當你在拔除 USB 隨身碟之前,請先在電腦中選擇退出隨身碟,當電腦顯示可以拔除的訊息之後,再將隨身碟拔除,這樣可以確保在拔除隨身碟時,所有檔案的讀取與寫入都已經完成了,也讓緩衝器(buffer)中的資料可以完全寫入磁碟。如果你沒有正常退出就將隨身碟拔除,就有可能會造成檔案損毀。

聽起來很消極,不過一般來說,你能夠做的事情大概就只有這些了。然而,如果你是 Linux 的重度使用者,而且又對於資料的正確性與完整性非常在意,那你可能可以使用一些特別的檔案系統。

ZFS 檔案系統

上面提到,一般我們所使用的檔案系統都很陽春,沒有資料驗證與回覆的功能,檔案壞了就是壞了,如果你想要一個比較強韌(robust)的檔案系統,那可以考慮 ZFS。

ZFS 是一個比較強韌的檔案系統,它支援自動檢查資料正確性的功能(zfs scrub),透過 checksum 或是 SHA-256 的方式,在配合資料儲存的 redundancy 機制,如果資料經過驗證是正確的,則即可正常讀取,但如果發現資料出問題時,它就會自動使用備份檔案回覆原本的資料,這樣可以確保資料的正確性與完整性。

雖然 ZFS 的功能強大,但是他的相容性就比一般的檔案系統低很多,只能在 Linux 系統中使用,若在 Windows 與 Mac OS X 中使用就有些問題。

除了相容性問題之外,ZFS 也會影響隨身碟的壽命,因為 ZFS 用在一般的快閃記憶體隨身碟上的時候,除了檔案本身之外,它還會額外儲存一些資訊(如 checksum 等),這會造成隨身碟讀寫的資料量增加,所以也會直接影響隨身碟的壽命。另外因為他在檔案存取時都會計算 checksum,在存取效能上也會造成一定的影響。

ZFS 可能只是用於少數特殊需求的人,對於一般人而言,隨身碟的效能通常是第一優先考量,在這樣的情況下就不是很適合使用 ZFS,直接使用一般的檔案系統(如 exFAT 等)就可以了,而且這樣相容性也會比較好。

耗損平均技術(Wear Leveling)

有沒有哪一種隨身碟是比較不會壞掉的呢?

上面我們說到 SLC 的快閃記憶體會比 MLC 耐用,除此之外,還有一個技術也會影響隨身碟的壽命,那就是耗損平均技術(wear leveling)。

基本上 USB 隨身碟中最常看到用於延長使用壽命的技術就是耗損平均技術,它是快閃記憶體(NAND flash)上的一種抹平技術。

快閃記憶體的區塊有抺寫次數的限制,針對同一個單一區塊,進行重複抺除、寫入,將會造成讀取速度變慢,甚至損壞而無法使用,而耗損平均技術目的在於平均使用快閃記憶體中的每個儲存區塊,以避免某些「特定」儲存區塊因過度使用而形成壞區塊,透過這樣的技術可以延長快閃記憶體的使用壽命。

在有些購物網站中會列出支援耗損平均技術的隨身碟,如果想選擇這類的隨身碟,可以透過這些網站來找尋適合自己使用的隨身碟。

總結

以現在的技術而言,其實 USB 隨身碟很難永久使用,目前所有的 USB 隨身碟都有讀寫次數的限制,也就是說當讀寫次數累積達到它的上限時,它就差不多會壞掉了,最根本的方式就是定期備份隨身碟中的資料,並配合檢查碼來驗證資料的正確性。

當然如果要在 USB 隨身碟中使用有資料驗證與回覆功能的檔案系統也是可行的方案,但是這樣的檔案系統通常無法在 Linux 系統以外的作業系統中使用,而且這樣的檔案系統也會增加隨身碟本身的讀寫次數,減低隨身碟的壽命,在存取效能上也會比一般的檔案系統差。

這裡所敘述的各種方式,都各有利弊,你必須在可攜性、資料完整性與存取效能之間做考量,選擇適合自己的方式。

參考資料:superuser

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

3 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago