加密 SSD 上的 TRIM

加密 SSD 上的 TRIM

wiki.ubuntuusers.de說如果我想在加密的 SSD 上使用 TRIM,我至少需要 cryptsetup 1.4 和 kernel 3.1。在創建分區和設定加密時我是否需要這個,或者之後升級就足夠了?

答案1

Ubuntu 11.10 Oneiric 不附 cryptsetup 1.4,但 Precise 附。我不知道 cryptsetup 是否可以在 Oneiric 上升級。由於 Precise 將在一個月後發布,因此您也可以等待發布後再考慮使用加密分割區的 TRIM。之後核心隨時可以升級。

http://code.google.com/p/cryptsetup/wiki/Cryptsetup140

支援 --allow-discards 選項以允許丟棄/TRIM 請求。

從核心 3.1 開始,dm-crypt 裝置可以選擇(不是預設)支援區塊丟棄 (TRIM) 指令。

如果要啟用此操作,則必須在每次啟動時使用 --allow-discards 手動啟用它

cryptsetup luksOpen --allow-discards /dev/sdb test_disk

警告:有幾個安全後果,請至少閱讀 http://asalor.blogspot.com/2011/08/trim-dm-crypt-problems.html 在您啟用它之前。

正如您所看到的,由於連結部落格中提到的安全性降低,因此預設不會啟用此功能。因此,如果您在核心 3.0(隨 Precise 一起提供的核心)上使用 cryptsetup,則您的加密分割區將不支援 TRIM。升級到 3.1+ 後,除非啟用它,否則仍然沒有。

為此,您必須/etc/crypttab在安裝後進行編輯(不確定在安裝過程中是否可以)並新增選項discard。也可以看看密碼表(5)

答案2

我已經發布了在 Ubuntu 12.04 或任何具有 cryptsetup 1.4+ 和 Kernel 3.1+ 的 Debian 中使用 LUKS 加密分區啟用 TRIM 的分步指南。 (如果一些 askubuntu 指南認為有必要,請隨意將其複製到此處。)

設定範例

來源

以 SSD 作為單一磁碟機的筆記本,Linux 安裝在單一 ext4 LVM 根分割區和 LVM 交換分割區中,兩者都透過 LUKS 加密邏輯分割區。

固態硬碟:/dev/sda

$ sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

$ ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # root partition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

如何

  1. 備份您的所有資料。您正在弄亂您的檔案系統,因此進行備份是一個好主意。

  2. 確保您擁有所需的核心和 cryptsetup 版本(3.1 和 1.4,例如在 Ubuntu 12.04 中,但請注意,在撰寫本文時 12.04 仍為測試版)。

  3. 將丟棄參數新增至 /etc/fstab 檔案中加密 LVM 磁碟區的檔案系統選項。這使得 LVM 分區的檔案系統知道您想要使用 TRIM。

    /dev/mapper/volumegroup-root    /    ext4    discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. 但最後一步還不夠。只要 LUKS 不知道您想要使用 TRIM,出於安全原因,它就會有效地阻止來自 LVM 分區檔案系統的所有 TRIM 操作。在/etc/crypttab 中的cryptdevice 選項中加入discard 參數,使LUKS 接受LVM 分區的discard 行為。

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. 重建您的 initramfs。 crypttab 選項儲存在那裡並在啟動時使用。

    sudo update-initramfs -c -k all
    
  6. 重啟。

  7. 檢查 TRIM 現在是否處於活動狀態。

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. 如果最後一個指令顯示這樣的結果(1 allow_discards at結束),那麼您就已經準備好了。

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

相關內容