2017/02/27

システム起動時のfsck

現状の確認

インストール直後の既定値を確認する。

/etc/fstab

[root@centos01 ~]# cat /etc/fstab | grep /dev/mapper/vg_centos01-lv_root
/dev/mapper/vg_centos01-lv_root /                       ext4    defaults        1 1
[root@centos01 ~]#
第6フィールドが「1」となっている。
この設定では、起動の際にfsck実施条件をチェックし、適宜fsckを実施する。

ボリュームのパラメータ

CentOS 6/RHEL 6の場合、既定ではext4のボリュームは、fsckを実施しない様設定されている。
# ちなみに、CentOS 7/RHEL 7では、既定でxfsのため、起動にfsckは実行されない。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              4
Maximum mount count:      -1
Last checked:             Thu Feb 23 06:06:05 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

現在は、以下の通り設定されていることが判る。
  • マウントされた回数(Mount count)が4、
  • マウント回数によるfsck実行(Maximum mount count)は無し、
  • 最後にfsckが実行されたの(Last checked)が2017.2.23(木) 06:06:05、
  • 経過時間によるfsck実行(Check interval)は無し
結果、既定状態では起動時のfsckは、実行されないことが判る。

マウント回数による条件の検証

Maximum mount countの設定

前に確認した通り、現在のマウント回数は4回なので、Maximum mount countを5に設定する。
[root@centos01 ~]# tune2fs -c 5 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to 5
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              3
Maximum mount count:      5
Last checked:             Thu Feb 23 06:06:05 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

確認1: fsckされない場合

再度再起動する。
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数5回だが、Maximum mount countの設定値5を超えていないため、fsckされない。
最後にfsckした時刻(Last checked)が変わっていないことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              5
Maximum mount count:      5
Last checked:             Thu Feb 23 06:06:05 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

確認2: fsckされる場合

再度再起動する。
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数6回に達し、Maximum mount countの設定値5を超えるため、fsckされる。
最後にfsckした時刻(Last checked)が変わったことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      5
Last checked:             Sat Feb 25 13:42:42 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

復旧

設定を元に戻す。
[root@centos01 ~]# tune2fs -c -1 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
[root@centos01 ~]#

/fastbootの検証

ファイル/fastbootを作成すると、次回起動時にfsckされなくなることを確認する。

設定

[root@centos01 ~]# tune2fs -c 1 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to 1
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      1
Last checked:             Sat Feb 25 13:42:42 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

確認1: fsckされない場合

/fastbootを作成し、再起動する。
[root@centos01 ~]# touch /fastboot
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数2回で、Maximum mount countの設定値2を超えているが、/fastbootが作成されていたため、fsckされない。
最後にfsckした時刻(Last checked)が変わっていないことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              2
Maximum mount count:      1
Last checked:             Sat Feb 25 13:42:42 2017
Check interval:           0 (<none>)
[root@centos01 ~]#
再起動前に作成した/fastbootは削除されている。
[root@centos01 ~]# ls /fastboot
ls: cannot access /fastboot: そのようなファイルやディレクトリはありません
[root@centos01 ~]#

確認2: fsckされる場合

/fastbootが設定されていない状態で再起動する。
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数3回に達し、Maximum mount countの設定値1を超えるため、fsckされる。
最後にfsckした時刻(Last checked)が変わったことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      1
Last checked:             Sat Feb 25 14:35:52 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

復旧

設定を戻す。
[root@centos01 ~]# tune2fs -c -1 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
[root@centos01 ~]#

/forcefsckの検証

ファイル/forcefsckを作成すると、強制的にfsckを実行させることができる。
これを確認する。

現在状態の確認

現在の状態を確認する。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      -1
Last checked:             Sat Feb 25 14:35:52 2017
Check interval:           0 (<none>)
[root@centos01 ~]#
マウント回数、経過時間共にfsckされる条件を満たしていないことが判る。

確認

/forcefsckを作成し、再起動する。
[root@centos01 ~]# touch /forcefsck
[root@centos01 ~]# shutdown -r now
強制的にfsckが実行される。
起動後、確認する。
最後にfsckした時刻(Last checked)が変わったことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      -1
Last checked:             Sat Feb 25 14:48:14 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

/etc/fstabの第6フィールドの検証

/etc/fstabの第6フィールドを0に設定すると、fsckが抑制される。

設定

/etc/fstabの第6フィールドを0に設定する。
[root@centos01 ~]# cp -p /etc/fstab /etc/fstab.orig
[root@centos01 ~]# grep lv_root /etc/fstab
/dev/mapper/vg_centos01-lv_root /                       ext4    defaults        1 1
[root@centos01 ~]# sed -i '/lv_root/s/1$/0/' /etc/fstab
[root@centos01 ~]# grep lv_root /etc/fstab
/dev/mapper/vg_centos01-lv_root /                       ext4    defaults        1 0
[root@centos01 ~]#

Maximum mount countを1に設定する。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      -1
Last checked:             Sat Feb 25 14:48:14 2017
Check interval:           0 (<none>)
[root@centos01 ~]# tune2fs -c 1 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to 1
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      1
Last checked:             Sat Feb 25 14:48:14 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

確認1: fsckされない

再起動する。
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数2回に達し、Maximum mount countの設定値1を超えるが、/etc/fstabでfsckを抑制しているため、fsckされない。
最後にfsckした時刻(Last checked)が変わっていないことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              2
Maximum mount count:      1
Last checked:             Sat Feb 25 14:48:14 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

確認2: /etc/fstabの第6フィールド VS /forcefsck

/etc/fstabの第6フィールドを0にした状態で/forcefsckを作成した場合どうなるか検証する。

/forcefsckを作成し、再起動する。
[root@centos01 ~]# touch /forcefsck
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数3回に達し、Maximum mount countの設定値1を超え、さらに/etc/forcefsckが作成されているが、/etc/fstabでfsckを抑制しているため、fsckされない。
最後にfsckした時刻(Last checked)が変わっていないことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              3
Maximum mount count:      1
Last checked:             Sat Feb 25 14:48:14 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

復元1: /etc/fstabのみ

/etc/fsckの第6フィールドのみ設定を戻す。
[root@centos01 ~]# mv -f /etc/fstab.orig /etc/fstab
[root@centos01 ~]# grep lv_root /etc/fstab
/dev/mapper/vg_centos01-lv_root /                       ext4    defaults        1 1
[root@centos01 ~]#

確認3: fsckされる

/etc/fsckの第6フィールドの設定を戻すと、fsckされることを確認する。
[root@centos01 ~]# shutdown -r now
起動後、確認する。
この時点でマウント回数4回に達し、Maximum mount countの設定値1を超えるので、fsckされる。
最後にfsckした時刻(Last checked)が変わったことで確認できる。
[root@centos01 ~]# tune2fs -l /dev/mapper/vg_centos01-lv_root | egrep -i 'mount count|check'
Mount count:              1
Maximum mount count:      1
Last checked:             Sat Feb 25 15:21:03 2017
Check interval:           0 (<none>)
[root@centos01 ~]#

復元2: Maximum mount count

Maximum mount countの設定を戻す。
[root@centos01 ~]# tune2fs -c -1 /dev/mapper/vg_centos01-lv_root
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
[root@centos01 ~]#

0 件のコメント: