2011年6月26日日曜日

CentOS 5.3 以降で kernel.core_pattern にパイプ指定可能

最近の Fedora や、まだ出てませんが CentOS 6 に含まれるであろう ABRT の基礎になっている kernel.core_pattern へのパイプ指定は、CentOS 5.3 以降であれば利用できます。私的には残念ですが、今のところ CentOS 5 系へ ABRT が入る見込みは無いようです。

http://www.centos.org/docs/5/html/5.3/Release_Notes/sect-Release_Notes-Kernel_Related_Updates.html

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

以下、簡単な使い方として、core を圧縮して /var/spool/ap_cores ディレクトリへ集約する方法の紹介です。
#!/bin/bash
#
# Name: gzip_core
#
# Setup: run sysctl -w kernel.core_pattern="|/path/to/this %t %u %g %e %p %s"
#        or add to /etc/sysctl.conf

declare -a CORE_INF=($*)

CORE_TIM=${CORE_INF[0]}
CORE_UID=${CORE_INF[1]}
CORE_GID=${CORE_INF[2]}
CORE_EXE=${CORE_INF[3]}
CORE_PID=${CORE_INF[4]}
CORE_SIG=${CORE_INF[5]}

OUTDIR=/var/spool/ap_cores

[ ! -d $OUTDIR ] && mkdir -p $OUTDIR
chmod 700 $OUTDIR

umask 077

CORE_FILE_NAME=core-$CORE_TIM-$CORE_UID-$CORE_GID-$CORE_EXE-$CORE_PID-$CORE_SIG.gz

/usr/bin/gzip -c > $OUTDIR/$CORE_FILE_NAME
これを、例えば /root/gzip_core に保存して実行権を与えて、次のように sysctl.conf に設定します。
kernel.core_pattern="|/root/gzip_core %t %u %g %e %p %s"
core が生成されれば、/var/spool/ap_cores の下に core が gzip 圧縮されて収集されます。
# ls -la /var/spool/ap_cores/
total 28
drwx------  2 root root  4096 Jun 26 19:49 .
drwxr-xr-x 17 root root  4096 Jun 26 19:26 ..
-rw-------  1 root root 13152 Jun 26 19:49 core-1309085370-0-0-a.out-7537-11.gz

対応するカーネルソースは、次のとおりです。kernel-2.6.18-128.el5 の場合。
   1446 /* format_corename will inspect the pattern parameter, and output a
   1447  * name into corename, which must have space for at least
   1448  * CORENAME_MAX_SIZE bytes plus one byte for the zero terminator.
   1449  */
   1450 static int format_corename(char *corename, const char *pattern, long signr)
   1451 {
   1452         const char *pat_ptr = pattern;
   1453         char *out_ptr = corename;
   1454         char *const out_end = corename + CORENAME_MAX_SIZE;
   1455         int rc;
   1456         int pid_in_pattern = 0;
   1457         int ispipe = 0;
   1458 
   1459         if (*pattern == '|')
   1460                 ispipe = 1;
   1461 
"fs/exec.c"

CentOS 6 のスケジュール

CentOS 6 は、まだかまだなのか、いつ出るんだと、たびたびぐぐっておりますが、

http://qaweb.dev.centos.org/qa

こちらに予定が出ており、これによるともうすぐ出そうです。たった今は 7/4 になっている。ただ、これまでものびのびになっていたわけでしょうし、もうプラス1週間~2週間ぐらいは・・・と思っていたほうがいいかも。予定どおり 7/4 に出てくれるとうれしいですが。

2011-07-02追記
現在も 7/4 に外部ミラーへ同期開始予定のままです。あと3日。


2011-07-04追記
今見たら、1日延びて 7/5 になってました。でも、今度こそ本当にもう間もなくの模様です。


2011-07-08追記
まだ、見えないですね。リリースノートは下記ですが、まだチェックサム (sha1sum) も記入されてない。

http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.0


2011-07-09 8:00追記
幾つかのミラーサイトで、6.0 が見えるようになったようで、さっそく、ダウンロード開始しました。

2011-07-09 9:00追記
リリースノートにチェックサム (sha1sum) が記入されました。
--------------------------------------------
i386 media and their sha1sums are:

9a8dfa2b68937372f89bd1ca46fba7ee71c5262c  CentOS-6.0-i386-bin-DVD.iso
5e3973cb87dc99a71d4a36d81ad1369618251cf2  CentOS-6.0-i386-netinstall.iso

--------------------------------------------
x86_64 media and their sha1sums are:

82637f7d81a6d7dbacf0699dd3bdc72360555dba  CentOS-6.0-x86_64-bin-DVD1.iso
e09c6406c0658dbe28beec363c7adfb0c2c5c3f7  CentOS-6.0-x86_64-bin-DVD2.iso
024e7176a16509d81d4c8e9b601202ecc2bc5040  CentOS-6.0-x86_64-netinstall.iso
今、インストール途中・・・特に問題なし。あとちょっと。
注) 上記のチェックサムは、差し替え(すり替え?)の前のものです。

2011-07-10 9:30追記
今、リリースノートを見たら、チェックサムが消えていました。出し直すのかな??
お試し環境が早く欲しかったので、わたしはあまり気にしませんが。。。
RHEL クローンなわけだから、プログラムの品質としては変わらない (おそらく独自にパッチが付加されていることはない) と思います。つまり、RHEL6.0 と品質は同等=”まだ本格的には使えない状態”←私見です。大事なサーバに使うなら、CentOS 6.2 あたりからにするのが良いだろうと思います。
もし出し直されたら、何が差分か調べてみたいと思います。

2011-07-31追記
簡単ですが、diff を採ってみました。
CentOS 6.0 差し替え前のインストールDVDとの差分

2011年6月19日日曜日

dumpコマンドのLZO圧縮オプション

自分ではしばしば使うのですが、バックアップに使う dump コマンドには LZO 圧縮オプション(-y オプション)があります。dump-0.4b34 で追加されており、CentOS 3 以降であれば利用できます。

/usr/share/doc/dump-/CHANGES より抜粋します。
Changes between versions 0.4b33 and 0.4b34 (released April 18, 2003)
====================================================================
...
16.     Added LZO compression to dump. This new compression method has
        the advantage of being super fast, thus not killing tape streaming
        on slow machines. Thanks to Helmut Jarausch 
         for the patch and to 
        Markus Oberhumer  for giving special permission
        to include his miniLZO project (GPL licensed) in dump/restore.
オンラインマニュアルからも抜粋します。
       -y     Compress  every  block  to  be  written  to  the tape using the lzo
              library.  This doesn't compress as well as  the  zlib  library  but
              it's  much  faster.   This  option will work only when dumping to a
              file or pipe or, when dumping to a tape drive, if the tape drive is
              capable  of writing variable length blocks.  You will need at least
              the 0.4b34 version of restore in order to extract compressed tapes.
              Tapes written using compression will not be compatible with the BSD
              tape format.

dump には、zlib による圧縮オプション(-z オプション)もあるわけですが、LZO には非常に高速であるという利点があります。テープ等のバックアップ媒体や、バックアップストレージ (HDD) の領域サイズより以上に、バックアップ時間が短くて済むことには利があると思います。おそらく、試してみれば(非圧縮、-y、-z での所要時間を比較してみる)理解できるものと思います。

LZO 圧縮とは聞き慣れないと、実績面で躊躇する方も居るかもしれませんが、Oracle 11g r2 に採用されていたり、Btrfs でのサポート、vmlinux の圧縮形式としてもサポートされるなど、近年、徐々にその利便性が理解され、利用が広がってきているようです。

http://download.oracle.com/docs/cd/E16338_01/server.112/b56319/chapter1.htm http://ja.wikipedia.org/wiki/Btrfs http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.33

gzip や bzip2 のような感じで、LZO 圧縮を行う lzop コマンドも、わたしのお気に入りです。はっきり言って、そこそこ圧縮できるなら、バックアップ処理時間が短くて済むほうがありがたいです。ディスク容量が有り余るこの時代では、なおのこと。

kdump に lzop を使う方法
こちらも、ぜひ、お読みください。

2012-08-01
ftp を用いたバックアップで lzop を使う方法について書きました。
ftp を使ってディスク丸ごとバックアップ
こちらもどうぞ。
人気ブログランキングへ にほんブログ村 IT技術ブログへ