2017年2月16日木曜日

Linux サーバ起動時にFSCKが実行されて、サーバの起動に時間がかかる

Linuxでは、サーバ起動時にディスク(ファイルシステム)のFSCKを実行、その後ディスク(デバイス)をマウントして起動プロセスへ移っていくようになっています。

FSCKの実行時間は、ディスク(デバイス)の容量に依存するため、ディスク(デバイス)容量が大きい(1TB等)場合は留意する必要があります。
サーバ起動時間がFSCKの実行有無で大幅に変わることが想定されます。
そのため、サーバの起動に時間がかかっている場合は、FSCKの実行有無が影響している可能性があります。

FSCKが実行される契機は、以下です。
  1.ディスク(デバイス)のマウント回数
  2.ディスク(デバイス)へFSCKを実行してから経過した時間

設定情報内容は、以下のコマンドで確認できます。
  tune2fs△-l△[デバイス名]
  ※例  tune2fs△-l△/dev/sda1

tune2fs で表示した結果で以下がFSCKに関連があります。

  Mount count: 10  ←ディスク(デバイス)がマウントされた回数
  Maximum mount count: 30  ←Monut countがこの値になるとFSCKが実行される
  Last checked: Sun Jan 01 09:00:00 2017  ←前回FSCKが実行された日時
  Check interval: 15552000 (6 months)  ←前回から次回のFSCKが実行されるまでの間隔(秒)

上記の場合、次回のFSCKが実行されるタイミングは以下になります。
  1.ディスクがあと20回マウントされた場合
    ※Maximum mount count(30) - Mount count(10)

  2.2017年6月30日9時
    ※Last checked(2017年1月1日9時) + Check interval(6ヶ月:15552000秒)
    ※ただし、1のマウント回数によりFSCKが先に実行された場合は、その日時から6ヶ月(15552000秒)後に変更されます。

FSCKの実行設定は、tune2fs で変更できます。
  オプション  -c  …  Maximum mount count を変更 (0 または -1 を設定すると、FSCKが実行されなくなります)
  オプション  -i  …  Check interval を変更 (0 を設定すると、FSCKが実行されなくなります)

複数のディスク(デバイス)をマウントしている場合は、ディスク(デバイス)毎にFSCKが実行されるタイミングを変え、全てのディスクが一斉にFSCKが実行されないようにして、サーバの起動にかかる時間を工夫(コントロール)した方がよいと思います。
マウント回数(Maximum mount count)か間隔(Check interval)のどちらかだけを設定するとコントロールし易いと思います。

ご指摘、ご質問などはコメントへお願いします。

0 件のコメント:

コメントを投稿