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