禁用日志记录后报告文件系统类型不一致

禁用日志记录后报告文件系统类型不一致

在试图理解为什么kworker flash 使用 99% I/O 并挂起机器上的文件写入,我使用以下方法禁用了 ext4 数据分区上的日志记录:

tune2fs -O ^has_journal /dev/sdg1

重启后,通过条目自动挂载分区/etc/fstab失败:

# mount /mnt/das.f
mount: /mnt/das.f: wrong fs type, bad option, bad superblock on /dev/sdf1, missing codepage or helper program, or other error.

奇怪的。

在我们的机器中,较旧的机器被格式化为 ext3(很久以前),而较新的机器则为 ext4。由于这种混合,常见的管理脚本用于根据存在的实际分区类型parted自动创建。/etc/fstab

但是,删除 ext4 分区上的日志后,parted将其报告为 ext2。其他工具仍将其报告为 ext4。

哪个是对的?删除日志是否会将文件系统从 ext4“转换”为 ext2,或者这是 和 中的parted错误file

# parted /dev/sdc1 p
Model: Unknown (unknown)
Disk /dev/sdc1: 7580GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  7580GB  7580GB  ext2

# file -sL /dev/sdc1
/dev/sdc1: Linux rev 1.0 ext2 filesystem data, UUID=8fde102f-1047-4b3b-83f9-43c40face046 (extents) (large files)

# blkid /dev/sdc1
/dev/sdc1: UUID="8fde102f-1047-4b3b-83f9-43c40face046" TYPE="ext4" PARTUUID="8935788a-939d-4d2c-8495-dc38afc47164"
    

/etc/fstab(如果手动更改为 ext4,卷安装正常...)

机器:Centos 8.1、4.18.0-147.el8.x86_64

答案1

查看代码,libparted 和 libblkid 检测 ext 版本的方式有所不同。该版本不是用超级块编写的,并且两个工具都使用支持的功能来区分版本。

对于没有日志的 ext3,这两个工具都会报告 ext2,这是有道理的,因为这两者之间的区别基本上只是日志支持。

对于 ext4,libblkid 检查 ext4 特定功能,例如大文件或文件类型支持,如果存在这些功能,它将报告设备为 ext4。 Libparted 会执行类似的检查,但前提是日志存在,因此它会将每个没有日志的 ext 文件系统报告为 ext2。我想说这是一个错误,但我想这要看情况。

Libblkid ext superblock扫码可用这里请注意,它probe_ext3会检查期刊支持,但probe_ext4不会。

Libparted 扩展代码可用这里并且_ext2_generic_probe仅当 ext3 检查通过时才检查 ext4,因此它永远不会尝试在没有日志的设备上检测 ext4。

相关内容