Linuxファイルシステム(ext4)のジャーナリングモードについて

ジャーナリングについてはext2からext3で追加された機能で、ext3からext4では変更がなかったのでext3の同じジャーナリングモードと同様の機能となります。ジャーナリングの概要と設定方法についてまとめます。

ジャーナリングの概要

概要

使用する用語は、下記にまとめておきます。まずは概要です。

ジャーナリングとは、ジャーナリング・ファイルシステムのことで障害に強いファイルシステムです。ファイルシステムに変更が発生した場合、変更をディスクに書込する前にジャーナルと呼ばれる特殊なファイルにメタデータを記録します。ジャーナルにメタデータが記録された後、メタデータとデータをディスクに記録します。記録が完了するとジャーナルを破棄します。この機能によって急なOSの停止があってもメタデータが保護されます。

用語について

ファイルシステム
ファイルを使用するための仕組みで、OSの基本機能の一つ。データを読みだす時「デイスクのXXXXXXXXXセクタからXXXXXXXXXXXセクタまでのデータを取り出せ。」のような指示をすることになるがファイルシステムによって「 /etc/apache/http.conf を開く。」のような指示で処理できるようになる。
メタデータ
ディスク上のデータ管理構造。ファイルの作成と削除、ディレクトリの作成と削除など。
データ
ファイルに実際に実際に書き込まれる情報。

ジャーナリングの種類

ジャーナリングにはext3のジャーナリングは3種類あり、読み書き処理のパフォーマンスとファイルシステムの堅牢性から選択できるようになっています。

journal モード
メタデータとデータの変更をジャーナルに書き込みます。その後デイスクにメタデータとデータを書きこみます。堅牢性は高いがすべてのデータを2度書き込むことになるのでパフォーマンスは悪くなります。
ordered モード
ext3のデフォルト設定になります。データをディスクに書き込んだ後にメタデータのみをジャーナルに書きこみます。データとメタデータの整合性が取れた状態を保ち、メタデータはあるのにデータが存在しない状態を回避できます。
writeback モード
メタデータのみがジャーナルに書き込まれその後にデータがディスクに書き込まれます。他のモードに比べて速度は速いがメタデータがジャーナルに書き込まれた後データの書こみ前にシステムがクラッシュした場合にはデータの不整合が起こります。

ジャーナルモード変更手順

ファイルシステムのパラメータの設定とマウント時のオプションの設定を行います。

ファイルシステムのパラメータの確認

次のコマンドを使って確認します。

sudo tune2fs -l /dev/sda1

結果の中に次のような行を確認します。

Default mount options:    user_xattr acl

デフォルトのマウントオプションの設定ですが、ここにジャーナルオプションがあるとうまくマウントできなくで read-only などでマウントされてしまうので削除します。

sudo tune2fs -o ^journal_data_writeback /dev/sda1
sudo tune2fs -o ^journal_data_ordered /dev/sda1

変更したいディスクが root パーティションにマウントされている場合

システム起動時に grub で設定されるので /etc/fstab の設定を変更しても設定が反映されません。まずは gurb 設定ファイルを変更します。変更するファイルは、 /etc/default/grub になります。下記のように起動オプションとして追加します。

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#起動時のオプションとしてwritebackモードを設定
GRUB_CMDLINE_LINUX="rootflags=data=writeback"

次に grub の設定ファイル変更内容を反映します。

sudo update-grub2

最後に再起動して終了です。

その他のパーティションにマウントされてる場合

/etc/fstab/ に設定を追加します。マウントオプションとして data=writeback を設定します。

/dev/sda2    /mnt/temp/    ext4    defaults,data=writeback    1    1

マウントし直せば終了です。

設定後の確認

再起動や再マウント後に mount コマンドを実行して結果を確認します。

mount
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=writeback)
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする