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
如何
備份您的所有資料。您正在弄亂您的檔案系統,因此進行備份是一個好主意。
確保您擁有所需的核心和 cryptsetup 版本(3.1 和 1.4,例如在 Ubuntu 12.04 中,但請注意,在撰寫本文時 12.04 仍為測試版)。
將丟棄參數新增至 /etc/fstab 檔案中加密 LVM 磁碟區的檔案系統選項。這使得 LVM 分區的檔案系統知道您想要使用 TRIM。
/dev/mapper/volumegroup-root / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
但最後一步還不夠。只要 LUKS 不知道您想要使用 TRIM,出於安全原因,它就會有效地阻止來自 LVM 分區檔案系統的所有 TRIM 操作。在/etc/crypttab 中的cryptdevice 選項中加入discard 參數,使LUKS 接受LVM 分區的discard 行為。
sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
重建您的 initramfs。 crypttab 選項儲存在那裡並在啟動時使用。
sudo update-initramfs -c -k all
重啟。
檢查 TRIM 現在是否處於活動狀態。
sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
如果最後一個指令顯示這樣的結果(
1 allow_discards at
結束),那麼您就已經準備好了。0 77656056 crypt aes-cbc-essiv:sha256 abc[...]c7a0c 0 8:5 2056 1 allow_discards