加密 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选项。另请参阅crypttab(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 卷的文件系统选项中添加 discard 参数。这会使 LVM 分区的文件系统知道您想要使用 TRIM。

    /dev/mapper/volumegroup-root    /    ext4    discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. 但最后一步还不够。只要 LUKS 不知道您想要使用 TRIM,它就会出于安全原因有效地阻止来自 LVM 分区文件系统的所有 TRIM 操作。将 discard 参数添加到 /etc/crypttab 中的 cryptdevice 选项,以使 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
    

相关内容