使用 Precise 对加密设备进行 TRIM

使用 Precise 对加密设备进行 TRIM

我已将主要数据迁移到新的 SSD。(三星 840 EVO,120GB。)我的~是 自动挂载的加密分区。也就是说,此分区pam_mount在 中有记录。/etc/security/pam_mount.conf.xml

我希望它支持 TRIM。我知道这会稍微削弱加密(即建立某种侧通道),但我希望这是可以接受的。

我尝试在 中启用它pam_mount.conf.xml。一种方法是将其包含discard在挂载选项中,据说这会自动允许在加密块设备上丢弃:

<volume user="{USERNAME}" fstype="crypt" mountpoint="/home/{USERNAME}" path="/dev/sdb{NUMBER}"  options="defaults,noatime,nosuid,nodev,discard" />

discard另一种尝试是将(以及)包含discards在 mntoptions 中。

<mntoptions allow="discard,discards,nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />

没有运气。fstrim 仍然不起作用:

% sudo fstrim --verbose ~                        
fstrim: /home/{USERNAME}: FITRIM ioctl failed: Operation not supported

我是不是忘了什么?升级到 14.04 能解决问题吗?命令man cryptsetup告诉我--allow-discards支持,所以我希望它能正常工作。内核版本是3.13.0-35-generic,这似乎没问题,因为版本3.1+是必需的。

底层文件系统是 ext4。该fstrim命令在未加密的文件系统(也是 ext4)上工作得很好,但在使用 dm-crypt (?) 加密的文件系统上不起作用。

请注意,discard似乎使用了 mount 选项:

% mount | grep ~
/dev/sdb{NUMBER} on /home/{USERNAME} type crypt (rw,nosuid,nodev,noatime,discard)

答案1

从源代码编译新版本就成功了。为了获得此库的较新版本,pam-mount我必须安装Trusty的.deb版本(这通常很危险)。libhx28libhx-dev

您可能在较新的 Ubuntu 中安装了较新的版本,因此您可以跳过编译。如果可以,您可以升级到 Trusty。我想继续使用 Precise 一段时间。

现在,启用allow_discards没有discard是一个丑陋的黑客行为。修补只是检查是否存在“discard”标志。因此,我决定同时放置“discard”和“nodiscard”(按此顺序),并希望它能奏效。

现在fstrim此设备可以正常工作,但我希望丢弃挂载标志无效。不确定我是否可以测试它。

或者,人们可以尝试重新安装,但我用这种方法没有成功。

相关内容