ラベル 設計 の投稿を表示しています。 すべての投稿を表示
ラベル 設計 の投稿を表示しています。 すべての投稿を表示

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)のどちらかだけを設定するとコントロールし易いと思います。

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

2017年2月6日月曜日

Linux sosreportで情報収集してエラーの原因究明に役立てる

Linuxでエラーなどが発生したときに情報収集する場合は、sosreportコマンドが便利です。
何か問題が発生した際は、ひとまずsosreportを実行しておくと、役に立ちます。

sosreportはパッケージの導入が必要なコマンドです。

sosreportコマンドの実行には、root権限が必要です。

sosreportでは、
  ・パッケージの導入状況
  ・/etc配下の設定ファイル
  ・サービス設定(chkconfig)
  ・コマンド実行時の状況(df、ps、netstat、freeコマンド)
  ・/var配下のログ(ファイル)
  ・コマンド実行時のカーネルパラメータ(/proc)
などの情報を集め、アーカイブ(圧縮)としてファイルが作成されます。

sosreportコマンドは通常 対話式ですが、オプション(--batch)を指定することでバッチ(非対話式)に変更出来ます。非対話式にすることで、シェルスクリプトへ組み込めます。

また、ファイルの出力先は、デフォルトで/tmp(または/var/tmp)ですが、オプション(--tmp-dir)を指定することで出力先を変更出来ます。出力先の空き容量が不足すると失敗する(ハングする可能性もあります)ので、注意が必要です。

コマンド例) シェルスクリプトに組み込み、出力先のディレクトリを変更する場合
  sosreport△--batch△--tmp-dir△[出力先のディレクトリ]

sosreportコマンドはシェルスクリプトのため、オプションや動作は直接ファイルの内容を確認することが出来ます。

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