标签: dm-crypt

糟糕的一般 dm-crypt (LUKS) 写入性能

我正在调查一个问题,即加密块设备会在写入时造成巨大的性能损失。数小时的互联网阅读和实验并没有让我得到正确的理解,更不用说解决方案了。

简而言之:为什么将 btrfs 放到块设备上时我的写入速度非常快(~170MB/s),而将 dm-crypt/LUKS 放在块设备之间时写入速度会下降(~20MB/s)文件系统和块设备,尽管系统能够维持足够高的加密吞吐量?

设想

/home/schlimmchen/random是一个 4.0GB 的文件,里面装满了之前的数据/dev/urandom

dd if=/dev/urandom of=/home/schlimmchen/Documents/random bs=1M count=4096
Run Code Online (Sandbox Code Playgroud)

阅读速度超快:

$ dd if=/home/schlimmchen/Documents/random of=/dev/null bs=1M
4265841146 bytes (4.3 GB) copied, 6.58036 s, 648 MB/s
$ dd if=/home/schlimmchen/Documents/random of=/dev/null bs=1M
4265841146 bytes (4.3 GB) copied, 0.786102 s, 5.4 GB/s
Run Code Online (Sandbox Code Playgroud)

(第二次,文件显然是从缓存中读取的)。

未加密的 btrfs

设备直接用btrfs格式化(块设备上没有分区表)。

$ sudo mkfs.btrfs /dev/sdf
$ sudo mount /dev/sdf /mnt
$ sudo chmod 777 /mnt
Run Code Online (Sandbox Code Playgroud)

写入速度高达 ~170MB/s:

$ dd if=/home/schlimmchen/Documents/random of=/mnt/dd-test1 bs=1M conv=fsync
4265841146 bytes …
Run Code Online (Sandbox Code Playgroud)

performance dm-crypt btrfs luks cryptsetup

24
推荐指数
1
解决办法
9578
查看次数

使用 LVM 和 dm-crypt 进行修剪

我尝试按照本教程在 ubuntu 13.04 上使用 LVM 和 dm-crypt 设置 TRIM:

http://blog.neutrino.es/2013/howto-properly-activate-trim-for-your-ssd-on-linux-fstrim-lvm-and-dmcrypt/

请参阅下面有关我的配置和测试程序的说明。

问题

  1. 如果 TRIM 工作正常,是否有可靠的测试?

  2. 是我的测试程序错误还是我的 TRIM 不起作用?

  3. 如果它不起作用:我的设置有什么问题?

  4. 如何为我的设置调试 TRIM 并使 TRIM 工作?

配置

这是我的配置:

cat /etc/crypttab

sda3_crypt UUID=[...] none luks,discard
Run Code Online (Sandbox Code Playgroud)

cat /etc/lvm/lvm.conf

# [...]
devices  {
      # [ ... ]
      issue_discards = 1
      # [ ... ]
   }
# [...]
Run Code Online (Sandbox Code Playgroud)

SSD 是三星 840 Pro。

这是我的测试程序

为了测试我刚刚做的设置sudo fstrim -v /,结果

/: [...] bytes were trimmed

再次执行此操作的结果/: 0 bytes were trimmed似乎是有道理的,并表明 TRIM 似乎有效。

但是后来我做了这个测试:

dd …

ssd lvm dm-crypt troubleshooting trim

23
推荐指数
1
解决办法
1万
查看次数

如何更改加密的全系统分区映射到的名称

我的系统使用dm-crypt和完全加密LVM。我最近将加密分区从/dev/sda5/dev/sda2.

我的问题是:如何将加密分区映射到的名称从sda5_crypt更改为sda2_crypt

我可以正常启动系统。但是我在启动时得到的提示(sda5_crypt)虽然UUID映射到/dev/sda2

  Volume group "vg" not found
  Skipping volume group vg
Unlocking the disk /dev/.../UUID  (sda5_crypt)
Enter passphrase:
Run Code Online (Sandbox Code Playgroud)

我想现场引导,解密sda2,激活vgchroot/dev/vg/root和运行update-grub2,但无济于事。

仅仅编辑/etc/crypttab也不起作用。

dm-crypt

21
推荐指数
1
解决办法
1万
查看次数

如何在 dm-crypt+LUKS 容器上设置标签?

我刚收到一个新的 USB 闪存驱动器,并在其上设置了 2 个加密分区。我使用 dm-crypt(LUKS 模式)到cryptsetup. 使用额外的非加密分区,驱动器具有以下结构:

  • /dev/sdb1,加密,隐藏标有“分区 1”的 ext4 文件系统。
  • /dev/sdb2,加密,隐藏另一个 ext4 文件系统,标记为“分区 2”。
  • /dev/sdb3,清晰可见的 ext4 文件系统,标记为“分区 3”。

因为标签附加到 ext4 文件系统,所以只要分区没有被解密,前两个就完全不可见。这意味着,与此同时,LUKS 容器没有标签。这在使用 GNOME(自动挂载)时特别烦人,在这种情况下,分区显示为“ x GB 加密”和“ y GB 加密”,直到我决定解锁它们。

这不是一个真正的阻塞问题,但它很烦人,因为我真的很喜欢我的标签,并且很想看到它们出现,即使我的分区仍然加密。

因此,有没有办法将标签附加到 dm-crypt+LUKS 容器,就像我们将标签附加到 ext4 文件系统一样?dm-crypt+LUKS 标头是否有空间,如果有,我该如何设置标签?

请注意,我不想在解密之前暴露我的 ext4 标签,这很愚蠢。我想向容器添加其他标签,这些标签可能会在 ext4 标签隐藏时出现。

partition gnome dm-crypt luks cryptsetup

17
推荐指数
2
解决办法
9727
查看次数

如何更改现有 dm-crypt LUKS 设备的哈希规范和迭代时间?

如何更改现有dm-crypt LUKS 设备的哈希规范和迭代时间?

显然,如果我创建一个设备,我可以传递选项,例如这样的:

 sudo cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 --iter-time 2100 --hash sha512 /dev/loop0
Run Code Online (Sandbox Code Playgroud)

但是,如果该设备已经存在,我怎么能例如更改sha256sha1或改变迭代时间没有“破坏”的设备。(显然,您必须重新输入密码,因为将生成新的哈希值。)

dm-crypt luks

12
推荐指数
2
解决办法
1万
查看次数

如果 LUKS 不存储分区大小,`cryptsetup resize` 会做什么?

LUKS/ dm-crypt/ cryptsetup FAQ页面说:

2.15 我可以调整 dm-crypt 或 LUKS 分区的大小吗?

是的,您可以,因为 dm-crypt 和 LUKS 都不存储分区大小。

我一头雾水:

  1. 如果没有存储大小信息,什么是“调整大小”?

  2. 如何在加密卷的打开/关闭过程中记住“调整大小”?

dm-crypt luks cryptsetup volume device-mapper

12
推荐指数
1
解决办法
7126
查看次数

如何加密我的系统,以便暂停到 RAM 工作并且也被加密

我如何加密我的系统(最好使用 lvm + dm-crypt/luks),以便挂起到 RAM 工作并且当挂起到 RAM 时一切都处于加密状态?

linux security encryption suspend dm-crypt

10
推荐指数
1
解决办法
3262
查看次数

fstrim 似乎没有修剪使用 lvm 和 dm-crypt 的分区

我尝试使用 dm-crypt 和 LVM 设置 Fedora 25,但很难使 TRIM 工作。

$ sudo fstrim -av                                                                            
/boot: 28.6 MiB (30003200 bytes) trimmed
/: 56.5 GiB (60672704512 bytes) trimmed

$ sudo fstrim -av                                                                            
/boot: 0 B (0 bytes) trimmed
/: 56.5 GiB (60671877120 bytes) trimmed
Run Code Online (Sandbox Code Playgroud)

从上面的输出中可以看出,重复运行fstrim在未加密的ext4 上有效 /boot,但似乎对/(在同一磁盘上)没有影响。

设置是 SSD -> dm-crypt -> LVM -> XFS

$ lsblk -D                                                                                                                                                                                     
NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda                                                  0      512B       2G         0
??sda2                                               0      512B       2G         0
? ??luks-dd5ce54a-34c9-540c-a4cf-2a712b8a3a5e        0      512B …
Run Code Online (Sandbox Code Playgroud)

ssd lvm dm-crypt xfs fstrim

10
推荐指数
1
解决办法
4726
查看次数

如何仅使用 `mount` 挂载 cryptsetup 容器?

我通过创建了一个加密的容器

#!/bin/bash
dd if=/dev/zero of=$1 bs=1 count=0 seek=$2
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksFormat $LOOPDEV
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER)
mkfs.ext3 $MAPPER
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV
Run Code Online (Sandbox Code Playgroud)

例如,container指定给此脚本的文件将包含通过 .ext3 加密的 ext3 文件系统cryptsetup luksFormat

要安装它,我目前使用另一个脚本,例如dm.mount container /mnt/decrypted

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER) || losetup -d $LOOPDEV
mount $MAPPER $2 || (
  cryptsetup luksClose $MAPPER
  losetup -d $LOOPDEV
)
Run Code Online (Sandbox Code Playgroud)

并卸载它dm.umount /mnt/decrypted …

mount dm-crypt luks cryptsetup

9
推荐指数
1
解决办法
1万
查看次数

使用 dm-crypt 进行全盘加密(无 LUKS)

我目前正在尝试在没有 LUKS 标头的纯模式下使用 dm-crypt 实现全盘加密,并/boot在 U 盘上使用单独的 USB 记忆棒。

我的主要目标是在基于 Debian 的发行版上实现合理的否认。现在我已经设法使用加密分区cryptsetup并将/boot分区安装到单独的 USB 密钥。一切都按预期进行,因为加密标头未存储在 LUKS 中,所以我需要在 initramfs 屏幕上手动输入它,但在这一步中,我只是收到一个错误,表明 initramfs 中没有 cryptsetup ("/bin/ sh: cryptsetup: not found") 同时尝试解析标头。

综上所述:

  • dev/sda使用dm-crypt/root/home卷)加密:
cryptsetup --hash=sha512 --cipher=twofish-xts-plain64 create crypt /dev/sda
Run Code Online (Sandbox Code Playgroud)
  • dev/sdb 安装了 grub 的引导棒

我可以从引导棒成功引导。我看到 Ubuntu 启动画面大约 20 秒,这是我想要实现的合理否认,然后它下降到 initramfs 抱怨无法找到/dev/mapper/root- 这也是我想要实现的目标。

问题是,当我想解析允许我输入密码并继续引导的 cryptsetup 行时,initramfs 会抱怨“cryptsetup:未找到”。

我想这个抱怨是真的。我的问题是:如何将 cryptsetup 安装到 initramfs 中,以便它允许更准确地引导密码提示?

另外,我知道我在 中添加了适当的条目而省略了一些内容/etc/fstab/etc/crypttab并且在启动期间找不到设备。

这些是我找到并用于设置所有当前配置的指南,也许这会清除我在问题中未涵盖的内容:

ubuntu encryption dm-crypt

8
推荐指数
1
解决办法
3502
查看次数