如何在文件上创建隔离的 ext4 文件系统

如何在文件上创建隔离的 ext4 文件系统

/data 上挂载了一个 25G /dev/sda6 ext4 分区。我正在尝试使用fallocate, ,在文件上创建固定大小的文件系统mkfs.ext4mount

fallocate -l 5G /data/new_storage
mkfs.ext4 -E nodiscard /data/new_storage
mkdir /data/new_dir
mount /data/new_storage /data/new_dir

但是du/data 显示 /data/new_storage 占用 4.9G 而不是 5G。mkfs.ext4执行后会发生这种情况。同时ls说该文件占用5G。

因此,新文件系统不是隔离的,如果在创建子文件系统后,父文件系统已完全填满,则填充子文件系统可能会导致错误:

loop: Write error at byte offset 2281734144, length 4096.
print_req_error: I/O error, dev loop0, sector 4456512

使用 ext2 时,du显示的数量与分配的数量完全相同,并且不会出现类似行为的错误。

禁用 ext4 的日志显示du有点接近 5G,但仍不等于 5G。

正如预期的行为,有一个 /dev/sda6 分区将有 20G 或 25G 可用空间(由于服务数据,可用空间略少),以及第二个 5G 环回 /dev/loop0 分区(由于服务数据,可用空间略少)。彼此。有可能实现这种行为吗?

还有一种可能fstrim会被执行,这会导致文件被打孔。是否有可能以某种方式完全禁用fstrim新文件系统上的执行。

相关内容