Diagon Asked: 2022-12-14 05:56:25 +0800 CST2022-12-14 05:56:25 +0800 CST 2022-12-14 05:56:25 +0800 CST 压缩和 LUKS 容器的磁盘映像 772 我有一个dd磁盘映像,它是一个包含文件系统的 LUKS 容器,我可以循环挂载和解锁以访问文件。容器中的文件系统只有大约 1/4 满。利用压缩的正确方法是什么,同时允许我能够安装和解锁磁盘? mount 2 个回答 Voted Best Answer frostschutz 2022-12-14T06:12:58+08:002022-12-14T06:12:58+08:00 您不能压缩 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)。 另一种方法是压缩未加密的数据。 Vojtech Trefny 2022-12-14T06:12:53+08:002022-12-14T06:12:53+08:00 压缩不会在这里帮助你 - 加密数据由于随机性而不能很好地压缩- 即使开放文本的相同数据块被加密到不同的块(所以就像将“空”部分归零文件系统将无济于事)。如果这是一个磁盘映像,我可能会建议缩小文件系统和 LUKS 容器以节省一些空间,如果您需要更多空间,稍后再增加它。
您不能压缩 LUKS 加密数据。
但是,如果所有涉及的文件系统都支持它,您可以使用 fstrim 丢弃可用空间,从而生成一个稀疏文件,其中可用空间为零且不占用空间。
另一种选择可能是缩小文件系统本身并相应地截断图像文件的大小(请记住考虑 LUKS 标头偏移量,通常 LUKS 1 为 2 MiB,LUKS 2 为 16 MiB)。
另一种方法是压缩未加密的数据。
压缩不会在这里帮助你 - 加密数据由于随机性而不能很好地压缩- 即使开放文本的相同数据块被加密到不同的块(所以就像将“空”部分归零文件系统将无济于事)。如果这是一个磁盘映像,我可能会建议缩小文件系统和 LUKS 容器以节省一些空间,如果您需要更多空间,稍后再增加它。