web-dev-qa-db-ja.com

空のファイルシステムでもext4 jbd2ジャーナリングがアクティブ

Ext4ファイルシステムで、jbd2ジャーナリングが原因であると思われるいくつかの問題があります。関連する投稿を作成しました here そして、誰かが助けることができるかもしれないという希望でそれを言い換えています。

最小限の例として、空の8GB USBスティックから始め、gpartedを使用して1つのext4パーティションを作成します。 ext4ファイルシステムの作成時にgpartedが使用するコマンドは次のとおりです。

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で何をしていますか?

より大きな2Tbディスクで同じ手順を実行すると、iotopは、マウントするとすぐにこの空のディスクがjbd2によってMb/sのレートで常に書き込まれていることを示します。

OSと/ homeがある他のディスクで、この動作を引き起こすプロセスによってファイルが変更されているかどうかを確認しようとしましたが、見つかりませんでした。また、ディスクを集中的に使用するプロセスの多くをtmpfsを使用するように移動しました。そして、noatimeを使用しました。

このマシンには、SSD以外の別のハードディスク/ dev/sdbがあり、これもext4ですが、gpartedによってフォーマットされていません(同僚から与えられました)。 iotopには表示されません。そのため、gpartedに問題があると想定しています。

どんな提案も大歓迎です。また、既存のパーティションを変更して、ゼロから始めずに問題を解決する方法に関するヒントもあります。

Jbd2に関連する投稿がいくつかありますが、助けにはなりませんでした(例 here )。

8
Paul

Ext4は、マウントされるまで多くの初期化をポストポストする(おそらくuninit_bgオプションですか?)ことで「クイックフォーマット」を行うようで、ドライブを最初にフォーマットした後にjbd2がこれを行っていると思われます。コメントの1つ here は、jbd2が作成後にパーティションにサイズに比例した時間を書き込むことを提案し、200 GBあたり10分(TBあたり50分を示す)を提案しました。昨日、3TBのext4ドライブをフォーマットし、jbd2は何年も書き留めていましたが、現在は停止しています。

btrfsはこれを行いません、btw、しかし、私はまだ外部ドライブに対してそれを信用していません-例えば、最近のカーネル(3.4+、私は思う)が必要です。最初にアンマウントせずに(もちろん、電源が失われた場合に発生します)。

7
rocko