2010年12月25日土曜日

CentOS 5 の sysstat の採取周期を 1 分毎に変更

CentOS 5 のデフォルトの sysstat 採取周期は 10 分になっているが、これだとアラ過ぎると感じることがあるので、自分の管理しているサーバでは 1 分周期に変更している。

デフォルトの /etc/cron.d/sysstat は、次のようになっている。
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
これを、次のように変更する。
# run system activity accounting tool every 1 minutes
*/1 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
もちろん、格納ファイル (/var/log/sa/saXX, XX は日付) のサイズは 10 倍になるのだが、デフォルトの 10 分間隔で、500 KB/日 程度のものなので、今の大容量時代では、10 倍になったところで取るに足りない。過去 7日分 (/etc/sysconfig/sysstat の HISTORY で指定) として、5MB x 7 = 35 MB ほど。

sar のデータをグラフ化する場合などに、10 分毎のサンプルのほうが都合がいいこともあるかもしれないが、そのような場合は、sar -i オプションを使えばいい。

# sar -f /var/log/sa/sa25 | head -35
Linux 2.6.18-194.26.1.el5 (my41)        12/25/2010

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:01:01 AM       all      0.05      0.00      0.12      0.01      0.00     99.82
12:02:01 AM       all      0.04      0.00      0.16      0.00      0.00     99.80
12:03:01 AM       all      0.17      0.00      0.32      0.01      0.00     99.51
12:04:01 AM       all      0.04      0.00      0.13      0.00      0.00     99.83
12:05:01 AM       all      0.06      0.00      0.17      0.00      0.00     99.77
12:06:01 AM       all      0.03      0.00      0.15      0.00      0.00     99.82
12:07:01 AM       all      0.11      0.00      0.25      0.00      0.00     99.64
12:08:01 AM       all      0.32      0.00      0.32      0.00      0.00     99.35
12:09:01 AM       all      0.32      0.00      0.20      0.00      0.00     99.48
12:10:01 AM       all      0.03      0.00      0.14      0.00      0.00     99.83
12:11:01 AM       all      0.04      0.00      0.20      0.00      0.00     99.76
12:12:01 AM       all      0.04      0.00      0.14      0.01      0.00     99.81
12:13:01 AM       all      0.13      0.00      0.22      0.00      0.00     99.65
12:14:01 AM       all      0.04      0.00      0.17      0.00      0.00     99.79
12:15:01 AM       all      0.06      0.00      0.15      0.00      0.00     99.79
12:16:01 AM       all      0.04      0.00      0.09      0.00      0.00     99.87
12:17:01 AM       all      0.12      0.00      0.28      0.00      0.00     99.60
12:18:01 AM       all      0.07      0.00      0.12      0.00      0.00     99.81
12:19:01 AM       all      0.14      0.00      0.23      0.00      0.00     99.63
12:20:01 AM       all      0.05      0.00      0.15      0.00      0.00     99.80
12:21:01 AM       all      0.04      0.00      0.15      0.00      0.00     99.81
12:22:01 AM       all      0.05      0.00      0.13      0.00      0.00     99.82
12:23:01 AM       all      0.13      0.00      0.26      0.00      0.00     99.61
12:24:01 AM       all      0.06      0.00      0.14      0.00      0.00     99.80
12:25:01 AM       all      0.04      0.00      0.12      0.00      0.00     99.84
12:26:01 AM       all      0.05      0.00      0.16      0.00      0.00     99.79
12:27:01 AM       all      0.13      0.00      0.24      0.00      0.00     99.63
12:28:01 AM       all      0.06      0.00      0.17      0.00      0.00     99.77
12:29:01 AM       all      0.09      0.00      0.19      0.01      0.00     99.70
12:30:01 AM       all      0.03      0.00      0.13      0.00      0.00     99.83
12:31:01 AM       all      0.07      0.00      0.20      0.00      0.00     99.73
12:32:01 AM       all      0.04      0.00      0.14      0.00      0.00     99.82

# sar -i 600 -f /var/log/sa/sa25 | head -6          ※-i オプションで 600秒=10分 指定
Linux 2.6.18-194.26.1.el5 (my41)        12/25/2010

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       all      0.12      0.00      0.20      0.00      0.00     99.68
12:20:01 AM       all      0.07      0.00      0.18      0.00      0.00     99.75
12:30:01 AM       all      0.07      0.00      0.17      0.00      0.00     99.76

下記も参照ください。
CentOS 5 の sysstat のデフォルトではディスクアクセス統計が採取されない

2013-02-06追記
sar -i は、少々バグっているバージョンがあるようなので、ご注意を。基本、最新使うべし!

2017-06-14追記
sa1 と sa2 が同時に動くとエラーになる場合がある。回避方法。
# run system activity accounting tool every 1 minutes
*/1 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root sleep 20;/usr/lib64/sa/sa2 -A
sa2 を動かす必要あるかな?とも思うのだが。

2010年12月23日木曜日

CentOS 5 の sysstat のデフォルトではディスクアクセス統計が採取されない

CentOS 5 の sysstat のデフォルトではディスクアクセス統計(sar -d)が採取されませんが、サーバ運用をしている人は、ときおりデータを見たい場合があるのではないでしょうか?

デフォルトの /etc/cron.d/sysstat は次のようになっています。
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
デフォルトのまま、sar -d すると、データが利用できませんとのメッセージが表示されます。
# sar -d
Requested activities not available in file
もしディスクアクセス統計を採取したい場合は、/etc/cron.d/sysstat を次のように変更します。ついでに、採取頻度を1分毎に変更しています。10分毎ではアラ過ぎと思う。
# run system activity accounting tool every 10 minutes
*/1 * * * * root /usr/lib64/sa/sa1 -d 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
ただし、変更が有効に働くのは次の日からです。1日の途中で、/var/log/sa/saXX に項目が増えても認識してくれないようです。もちろん、消していいのなら、無理やり /var/log/sa/saXX を消せば、上記の設定が反映されたことを確認できます。ディスクアクセス統計が有効になれば、次のような出力を得ることができます。

# sar -d -p    ※ディスクデバイス名を分かりやすく表示するには -p オプションをつけます
Linux 2.6.18-194.26.1.el5 (my41)        12/23/2010

11:29:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:30:01 AM       sda      2.72      0.00     52.78     19.44      0.00      0.76      0.15      0.04
11:30:01 AM      sda1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda5      2.72      0.00     52.78     19.44      0.00      0.76      0.15      0.04
11:30:01 AM      sda6      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda7      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda8      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:30:01 AM      sda9      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
なお、CentOS 4 だと、デフォルトでディスクアクセス統計も採取されます。また、まだ出ていませんが、CentOS 6 でもデフォルト採取されるものと思います。ベースの RHEL6 のデフォルトの /etc/cron.d/sysstat は次のようになっており、ディスクアクセス統計も採取されるようになっています。
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1
# 0 * * * * root /usr/lib64/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
RHEL6 では、オプションが変わって(-d → -S DISK)しまっています。OSS の世界では、"進化のためには非互換変更もやっちゃいます"というわけでしょうし、進化も歓迎なのですが、OSS を商売にする人(わたしも)にとっては、非互換というのは面倒・トラブルのもとですね。

2010年12月18日土曜日

CentOS 5.5 の dump/restore コマンドは ext4 に非対応

CentOS 5.5 では ext4 が使えますが、1つ注意点として、dump/restore コマンドが非対応になっています。ベースの RHEL5 では、技術的理由から dump/restore の ext4 対応はしないと言っていますので、今後もおそらく対応されることはないと考えられます。バックアップに dump/restore を使うつもりで、あてが外れないようにご注意を。まあ、バックアップツールは他にも多数あるんですが・・・

https://bugzilla.redhat.com/show_bug.cgi?id=444534

2011-03-26追記
RHEL6 の dump/restore は ext4 にも対応しているので、未だリリースされませんが、CentOS 6 では ext4 に対応するはずです。もし、CentOS 5.5 以降で ext4 を使っている場合で、システムバックアップを採るということなら、CentOS 6 の iso イメージから rescue モードで起動すればいいだろうと思います。

CentOS 5 の kernel-debuginfo は複数バージョン同時インストールできないのか?

CentOS 4 までは、kernel-debuginfo を複数バージョン同時にインストールできたが、CentOS 5 では、同時インストールしようとすると rpm からはじかれてしまう。
# uname -r
2.6.18-194.26.1.el5
# ls -l kernel-debuginfo-2.6.18-194.26.1.el5.x86_64.rpm 
-rw-r--r-- 1 root root 181913978 Dec 18 13:06 kernel-debuginfo-2.6.18-194.26.1.el5.x86_64.rpm
# rpm -qlvp kernel-debuginfo-2.6.18-194.26.1.el5.x86_64.rpm | grep -v `uname -r`
何も出力なし
#
という具合なので、デバッグ用オブジェクトはちゃんとバージョン毎に分かれて格納されている。kernel-debuginfo が依存している kernel-debuginfo-common のほうに、ソースが入っているようであり、こちらがバージョン毎のディレクトリに分かれていないために、NGということのようだ。
# rpm -qlp kernel-debuginfo-common-2.6.18-194.26.1.el5.x86_64.rpm | less
/usr/lib/debug
/usr/lib/debug/boot
/usr/lib/debug/lib
/usr/lib/debug/lib/modules
/usr/lib/debug/usr/src/kernels
/usr/src/debug
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64/arch
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64/arch/i386
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64/arch/i386/kernel
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64/arch/i386/kernel/acpi
/usr/src/debug/kernel-2.6.18/linux-2.6.18.x86_64/arch/i386/kernel/acpi/boot-xen.c
...
なので、単にリングバッファ、バックトレース、メモリ使用状況程度を見るのなら、kernel-debuginfo だけを --nodeps で入れてしまえばいいようだ。
なお、いつもどこだっけ?・・・となるので、2010-12 現在の kernel-debuginfo の在り処をメモしておく。
http://debuginfo.centos.org/

2010年12月11日土曜日

Fedora 14 で root でログイン

Fedora 14 のデフォルトでは、GDM から root でログインできない。
推奨されないのは承知だが、仕事がら root でログインできたほうが便利なので、Googleで検索したところ、/etc/pam.d/gdm と /etc/pam.d/gdm-password の次のエントリーをコメントアウトすればよいとのこと。先人の方に感謝。
auth required pam_succeed_if.so user != root quiet
http://old.ikoinoba.net/wiki/?Linux/Fedora/11/memo2#wbd2161a

2011-04-24追記
Fedora 15 Beta でも同様でした。

2011-09-09追記
Fedora 16 Alpha でも同様でした。

2012-06-07追記
Fedora 17 でも同様です。

NIC 交換時の CentOS における kudzu の挙動

サーバのマザーボード故障で、交換が発生した場合、 当然ながらオンボード NIC の MAC が変わってしまうが、その場合の挙動が CentOS 5 と CentOS 4 では異なっている。以下は、VMware 上で実験した結果です。

■CentOS 5 の場合は、自動的に DHCP 設定に置き換えられて、バックアップ(サフィックス.bak)が作成される。
# cd /etc/sysconfig/network-scripts/

# ls ifcfg-eth3*
ifcfg-eth3  ifcfg-eth3.bak

# cat /etc/sysconfig/network-scripts/ifcfg-eth3
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth3
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=00:0c:29:67:4d:2e
どのみち MAC を書き換えなければ、eth3 を使えないので、デスクトップ利用の場合なら、この自動処置があると便利、ということかと思います。サーバ用途だと、勝手に設定が書き換わるというこの動作は、面食らうと思うのですがね・・・。

■CentOS 4 の場合は、起動時にハードウェア(NIC)の変更を検出して、次のような画面が出る。タイムアウトが 30秒 なので、処置しないとサーバ起動のたびにこの画面が出て、30秒 遅延することになる。

30秒 以内に、キー入力(スペース等)すると、次の画面へ遷移する。

上の画面は、交換前の NIC の設定を削除していいかを尋ねているので、交換前の設定を残すには、「Keep Configuration」を選べばいい。そうすると、次の画面へ遷移する。

上の画面は、交換後の NIC の設定を行うかどうか尋ねているので、サーバ起動完了後に vi で、設定ファイル(ifcfg-ethX の HWADDR=)の MAC を書き換えるなら、「Ignore」を選べばよい。

2011-07-24追記
CentOS 6.0 の場合については、こちら を参照。

2010年12月5日日曜日

CentOS 5.5 において ext4 に kdump 出力する

CentOS 5.5 では、ext4 が使えるので、自分の管理している小規模サーバでは、全て ext4 にしてしまった。CentOS 5.5 のインストーラーでは、/ を ext4 にしてインストールしようとすると蹴られるのだが、予め、インストール CD からレスキューモードを起動して、ファイルシステムを作成してしまうことで、うまくインストールできた。本題ではないが、ext4 のファイルシステム作成手順は、次のとおり。
# mke2fs -j /dev/sda3          ※まずは、ext3 を作る

# tune4fs -O extent /dev/sda3  ※エクステントフラグを付加(ext4化する)する。これがキモ
      ※CentOS 5.5 の場合、tune4fs なので注意

# tune4fs -O flex_bg     /dev/sda3  ※その他のオプションを設定
# tune4fs -O huge_file   /dev/sda3  ※  そのうち、もう少し詳細を書こう
# tune4fs -O uninit_bg   /dev/sda3  ※
# tune4fs -O dir_nlink   /dev/sda3  ※
# tune4fs -O extra_isize /dev/sda3  ※
さて、kdump の領域に ext4 を使うには、ext3 の場合と同様に記述するのですが、次のように extra_bins の指定も必要です。これをやらないと、セカンドカーネルでダンプ採取領域をマウントする前の fsck が出来ず(fsck.ext4 が見つからないといわれる)、ダンプが失敗します。
extra_bins /sbin/fsck.ext4
ext4 LABEL=/
path /var/crash
core_collector makedumpfile -c -d 1
なお、ext3 で kdump 専用領域を作ったほうがいいのかもしれませんが、kdump のために遊ばせておくというのもと思うため、/ 1個にしています。/var も分割していません。もし重要度の高い業務用サーバなら /var を独立させて、ログとダンプ置き場専用とするのが一番無難だろうと思います。

2010-12-18追記
ext4 を使う前に、こちらも確認を。

2011-03-27追記
ext4 のファイルシステム作成は、mkfs.ext4 で行えば、最初に書いたような tune4fs でのオプション設定は不要でした。

2011-08-02追記
今ごろ気がつきましたが、既に 5.6 で kexec-tools に ext4 サポートが追加されていました。
http://rhn.redhat.com/errata/RHEA-2011-0146.html
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=667966
上のような小細工をするよりも、kexec-tools をアップデートしましょう。
人気ブログランキングへ にほんブログ村 IT技術ブログへ