在Linux中使用SSD(固態驅動器):啟用TRIM
當我在運行 Linux 的計算機上安裝我的***塊固態驅動器(SSD)后,我開始探索如何用好它們。SSD 在操作方式上與傳統磁性驅動器不同,并且它們需要在軟件上另行處理以達到功能優化。
在傳統磁盤驅動器上,刪除時所刪除的文件不會從磁盤中完全刪除。這就是為什么你可以恢復已刪除的文件的原因。基本上,文件系統僅引用磁盤上文件的位置,并且當文件被刪除時,該引用被擦除,以允許你在這些空間中寫入新數據覆蓋原來的數據。然而,對于 SSD,新數據只能寫在驅動器上完全新的或已擦除的單元上。因為必須在寫入之前清除空間,如果在寫入文件時尚未有足夠的可用空間,則必須首先擦除該空間。這可能會對性能產生負面影響。
如果操作系統在寫入新數據之前就擦除了未使用的空間,而不是在寫入時同時進行擦除,則可以提高文件保存性能。這種做法就是 TRIM。 TRIM 命令本質上允許你的操作系統告訴驅動器哪些區域的數據不再使用,以便擦除它們,加快驅動器將來的寫入,可以 SSD 的用戶提供更佳的體驗。
在 Linux 中,fstrim 提供此功能,它可以為寫入新數據而準備驅動器,并延長驅動器的使用壽命。由于在我使用的 Linux 發行版上 SSD 的 trim 不是自動的,所以必須去調度該操作,否則 SSD 的性能會隨著時間的推移而降低。
為了在驅動器上運行 fstrim,驅動器本身以及其上的文件系統必須支持 TRIM。在文件系統掛載過程中可以啟用 TRIM。例如,為了將設備 /dev/sda2 啟用 TRIM 掛載到 /mnt,你要運行:
- mount -t ext4 -o discard /dev/sda2 /mnt
一旦啟用,TRIM 過程本身就相當簡單。TRIM SSD 也可以在命令行或 cron 任務中手動完成。作為超級用戶(使用 su 或 sudo),運行 fstrim / -v 以完成手動 trim,或者設置 cron 任務以在計算機未使用時定期為你運行此命令。對于 fstrim 的完整選項列表請參考它的 man 手冊。
硬件支持根據使用的驅動器接口類型如 PCI、ATA、SCSI 還是 SD/MMC 而有所不同。你需要咨詢你的 Linux 供應商以了解你的特定發行版是如何支持 TRIM 的。
例如,紅帽提供以下 SSD 磁盤指南。“性能隨著所使用的塊數接近磁盤容量而降低,性能影響程度因供應商而異,但是所有設備都會遇到一些性能降低。為了解決性能降低問題,主機系統(例如 Linux 內核)使用丟棄請求以通知存儲器給定范圍的塊不再使用。”
Debian wiki 提供了 SSD 使用的一些基本注意事項:使用 Linux 3.2 或更高版本內核,使用 SSD 的***固件,使用 EXT4 文件系統,并且“在正常工作負載下有足夠的 DRAM 用來操作而不用使用交換空間“。