压缩和 LUKS 容器的磁盘映像

压缩和 LUKS 容器的磁盘映像

我有一个dd磁盘映像,它是一个包含文件系统的 LUKS 容器,我可以循环挂载和解锁以访问文件。容器中的文件系统仅占大约 1/4。在允许我能够安装和解锁磁盘的同时,利用压缩的正确方法是什么?

答案1

您无法压缩 LUKS 加密数据。

但是,如果所有涉及的文件系统都支持它,您可以使用 fstrim 丢弃可用空间,从而导致稀疏文件其中可用空间为零并且不占用空间。

# du -h foobar.img
1.0G    foobar.img

# cryptsetup open --allow-discards foobar.img foobar
Enter passphrase for foobar.img: foobar
# mount /dev/mapper/foobar loop/

# df -h loop/
Filesystem          Size  Used Avail Use% Mounted on
/dev/mapper/foobar  974M  129M  780M  15% /foobar/loop

# fstrim -v loop/
loop/: 845.7 MiB (886763520 bytes) trimmed

# du -h foobar.img
179M    foobar.img

另一种选择可能是缩小文件系统本身并相应地截断映像文件的大小(请记住考虑 LUKS 标头偏移量,通常 LUKS 1 为 2 MiB,LUKS 2 为 16 MiB)。

另一种方法是压缩未加密的数据。

答案2

压缩在这里不会有帮助——加密数据不是很可压缩本质上是随机的——即使开放文本的相同数据块也会被加密为不同的块(因此将文件系统的“空”部分归零之类的东西不会有帮助)。如果这是磁盘映像,我可能会建议缩小文件系统和 LUKS 容器以节省一些空间,并在需要更多空间时再增大它。

相关内容