我在尝试理解 Ubuntu 中的 LUKS 加密设置时遇到了问题。在我之前有人用 Ansible 完成了这项工作,大致过程如下:
使用 DD 创建稀疏文件
dd of=/root/encfs bs=1 count=0 seek=40G
格式化 LUKS 分区
cryptsetup -y luksFormat /root/encfs
打开加密文件
cryptdisks_start datafs
创建文件系统
mkfs.ext4 -j /dev/mapper/datafs
挂载分区:
mount /dev/mapper/datafs /data
稀疏文件似乎位于 30G 的磁盘中,但我认为它实际上位于另一个 64G 的磁盘上。我试图更改该加密卷的大小,并成功将稀疏文件放大,但 df 仍然显示它是 40G
有人知道我该怎么做: - 首先,确保分区位于我认为的磁盘上 - 其次,利用整个磁盘,使分区为 64G? - 附加问题:稀疏文件真的有必要吗?
我尝试删除 /root/encfs 并重新创建它,重新设置图像路径,但都没有效果。
由于我在网上找不到任何帮助,因此非常感谢任何指点/帮助。
非常感谢
答案1
您所看到的是sparse
稀疏文件的属性:只有文件中至少被写入过一次的部分才会真正分配到磁盘上。
尚未在磁盘上分配的部分尚未实际使用,因此不会显示在du
或df
举个例子:这是我在 Ubuntu PC 上所做的:
~$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/payload-home 2.8T 540G 2.1T 21% /home
~$ dd if=/dev/zero of=./test.sparse bs=1 count=0 seek=5000G
0+0 records in
0+0 records out
0 bytes copied, 0.00022495 s, 0.0 kB/s
~$ ls -lh test.sparse
-rw-r--r-- 1 me me 4.9T Apr 29 17:23 test.sparse
~$ du -h test.sparse
0 test.sparse
~$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/payload-home 2.8T 540G 2.1T 21% /home
因此:虽然磁盘有 2.1T 可用空间,但我可以轻松创建一个 5T 稀疏文件,该文件将显示为使用零字节,并且不会对df
如果我要填充该文件,则在写入超过 2 TB 的块后,我会收到“设备上没有剩余空间”的消息。
直接回答您的问题:df -h /path/to/file
将告诉您文件位于哪个分区或卷以及该分区上有多少空间。