/data 上挂载了一个 25G /dev/sda6 ext4 分区。我正在尝试使用fallocate
, ,在文件上创建固定大小的文件系统mkfs.ext4
:mount
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
新文件系统上的执行。