ведение журнала ext4 jbd2 активно даже на пустой файловой системе

8

У меня было несколько проблем с моими файловыми системами ext4, которые, по-видимому, связаны с журналированием jbd2 . Я сделал соответствующий пост здесь и перефразирую его в надежде, что кто-то сможет помочь.

В качестве минимального примера я начинаю с пустой 8-гигабайтной флешки и использую gparted для создания одного раздела ext4. Команда, используемая gparted при создании файловой системы ext4:

mkfs.ext4 -j -O extent -L DataTraveler8gb /dev/sde1

Я проверяю файловую систему с помощью gparted:

e2fsck -f -y -v /dev/sde1

и я монтирую это:

sudo mount /dev/sde1 /media/test

Диск пуст, но ведение журнала на этом диске очень активно (/ 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]

Что делает jbd2 с / dev / sde1?

Если я выполняю те же действия с большим диском объемом 2 ТБ, iotop указывает, что этот пустой диск постоянно записывается в jbd2 со скоростью Мбит / с, как только я его монтирую.

На других дисках, на которых установлены ОС и / home, я пытался выяснить, изменяются ли какие-либо файлы процессами, чтобы вызвать такое поведение, но не мог их найти. Я также перенес многие процессы с интенсивным использованием диска на использование tmpfs. И использовал noatime.

У меня есть другой жесткий диск без SSD на этом компьютере, / dev / sdb, который также является ext4, но не был отформатирован gparted (предоставлен мне коллегой). Это не появляется в iotop. Поэтому я предполагаю, что проблема с gparted.

Любые предложения приветствуются. Также были бы полезны любые советы о том, как изменить существующие разделы, чтобы устранить проблему без необходимости начинать с нуля.

Есть некоторые сообщения, связанные с jbd2, но они не помогли (например, здесь ).

Павел
источник
Вы запустили iotop до того, как отформатировали диск? В этом случае он показывает данные, записанные во время формата.
Джиппи
@jippie Я начал iotop после форматирования диска (ов). Диск в минимальном примере пуст. На дисках аналогичного формата активность jbd2 происходит, даже если файлы не записываются (проверено с помощью find во всей моей файловой системе).
Пол
Вы пытались установить его mount -o noatime ... ...?
Джиппи
Я пробовал noatime. Кажется, он ничего не делал.
Пол
Может быть связано: bugs.launchpad.net/ubuntu/+source/linux/+bug/607560
Glutanimate,

Ответы:

7

Кажется, что ext4 выполняет «быстрое форматирование», выполняя большую часть своей инициализации, пока она не смонтирована (возможно, опция uninit_bg?), И я подозреваю, что jbd2 делает это после первого форматирования диска. В одном из комментариев здесь предлагается, чтобы jbd2 записывал в раздел после создания в течение времени, пропорционального его размеру, и предлагалось 10 минут на 200 ГБ, что будет означать 50 минут на ТБ. Вчера я отформатировал диск ext4 объемом 3 ТБ, и jbd2 долго писал, но теперь он остановился.

btrfs этого не делает, кстати, но я пока не доверяю этому для внешних накопителей - например, вам нужно свежее ядро ​​(3.4+, я думаю), иначе ядро ​​упадет (и, возможно, потеряет данные), если вы извлечете диск без размонтирования сначала (что, конечно, происходит, если он теряет мощность).

Роко
источник
Ничего себе, я никогда не думал об этом (и почему-то я пропустил это после прочтения той же темы). Я постараюсь подтвердить в отношении uninit_bg, но если вы или кто-то еще уверен, я могу пометить ответ.
Пол