即使在空文件系统上,ext4 jbd2 日志也处于活动状态

Pau*_*aul 8 ext4 gparted 11.10

我的 ext4 文件系统出现了几个问题,似乎是由于jbd2日志记录造成的。我在这里发了一个相关的帖子并重新措辞,希望有人能够提供帮助。

举一个最小的例子,我从一个空的 8gb U 盘开始,并使用gparted创建一个 ext4 分区。gparted 在创建 ext4 文件系统时使用的命令是:

mkfs.ext4 -j -O extent -L DataTraveler8gb /dev/sde1
Run Code Online (Sandbox Code Playgroud)

我用 gparted 检查文件系统:

e2fsck -f -y -v /dev/sde1
Run Code Online (Sandbox Code Playgroud)

我安装它:

sudo mount /dev/sde1 /media/test
Run Code Online (Sandbox Code Playgroud)

该磁盘为空,但该磁盘 (/dev/sde1) 上的日志记录非常活跃。其他磁盘是类似格式化的 ext4 SSD。iotop 的快照:

% sudo iotop -oPa

Total DISK READ: 0.00 B/s | Total DISK WRITE: 2027.21 K/s
  PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
  262 be/3 root          0.00 B     56.00 K  0.00 %  0.18 % [jbd2/sda1-8]
29069 be/3 root          0.00 B      0.00 B  0.00 %  0.16 % [jbd2/sde1-8]
  891 be/3 root          0.00 B      4.00 K  0.00 %  0.03 % [jbd2/sdc1-8]
Run Code Online (Sandbox Code Playgroud)

jbd2 对 /dev/sde1 做什么?

如果我对更大的 2Tb 磁盘执行相同的步骤,iotop 表示 jbd2 会在安装后立即以 Mb/s 的速率不断写入该空磁盘。

在具有操作系统和 /home 的其他磁盘上,我试图查找进程是否正在修改任何文件以导致此行为,但找不到任何文件。我还移动了许多磁盘密集型进程来使用 tmpfs。并使用了 noatime。

我在这台机器上有另一个非 SSD 硬盘,/dev/sdb,它也是 ext4,但不是由 gparted 格式化的(由同事给我)。它不会出现在 iotop 中。所以我假设 gparted 存在问题。

任何建议表示赞赏。此外,有关如何修改现有分区以解决问题而无需从头开始的任何提示都会很棒。

有一些与 jbd2 相关的帖子,但它们没有帮助(例如here)。

小智 7

似乎 ext4 通过在安装之前发布大量初始化来执行其“快速格式化”(可能是 uninit_bg 选项?),我怀疑 jbd2 在您第一次格式化驱动器后正在执行此操作。这里的评论之一建议 jbd2 在创建后写入分区的时间与其大小成比例,并建议每 200 GB 10 分钟,这表示每 TB 50 分钟。我昨天格式化了一个 3TB ext4 驱动器,jbd2 已经写了很长时间了,但现在已经停止了。

btrfs 不会这样做,顺便说一句,但我还不相信它用于外部驱动器 - 例如,您需要一个最新的内核(我认为是 3.4+),否则如果您移除驱动器,内核会出错(并且可能会丢失数据)无需先卸载它(当然,如果它断电就会发生这种情况)。