Linuxで再起動時にデバイスのマウントが入れ替わってしまう

Linux(RHEL5.7)を再起動したところ、デバイスのマウントが入れ替わる事象が発生しました。
どうもRHEL5.7は、カーネルが認識した順序でデバイスを割り振るため、こんなことが起きるようです。
おかげでサービスに支障がでてしまいました。
一応解決できたのでメモしておきます。

■解決方法
/etc/fstabにUUIDでマウントする設定に変更した。

1.対象のファイルシステムをアンマウントする。

[root@onedari01 ~]# mount
/dev/sdf on /test1 type ext3 (rw,_netdev) 
/dev/sdg on /test2 type ext3 (rw,_netdev) 

[root@onedari01 ~]# umount /test1 
[root@onedari01 ~]# umount /test2 

2.現在のUUID、ラベル名を確認する。

[root@onedari01 ~]# blkid /dev/sdf 
/dev/sdf: UUID="abcde-f80c-4b5f-8f36-71234556" TYPE="ext3" 

[root@onedari01 ~]# blkid /dev/sdg 
/dev/sdg: UUID="cdefj-0c8d-46bc-9378-56491123" TYPE="ext3" 
[root@onedari01 ~]# 

3.確認したUUIDを使用しマウントする。
 (実行例/UUID を使用する場合)
   # mount -t ext3 -U xxxxxxxx /work

[root@onedari01 ~]# mount -t ext3 -U cdefj-0c8d-46bc-9378-56491123 /NetVault_Gen1 
[root@onedari01 ~]# mount -t ext3 -U abcde-f80c-4b5f-8f36-71234556 /NetVault_Gen2 

4./etc/fstabを変更する。

[root@onedari01 ~]# vi /etc/fstab
/dev/sdf                /test1          ext3    _netdev        1 0 
/dev/sdg                /test2          ext3    _netdev        1 0 
↓↓↓ 
UUID=280cce91-0c8d-46bc-9378-24abb721e04e /test1    ext3    _netdev        1 0 
UUID=ce993c8d-f80c-4b5f-8f36-78baa48a8f0a /test2    ext3    _netdev        1 0 

※記述されている数字の意味
第1列 マウントするブロックデバイスやラベル
第2列 マウントポイント
第3列 ファイルシステムの種類
第4列 マウント時のオプション
第5列 ファイルシステムをdumpする必要があるか否かの指定
「0」または無記述の場合はdump不要のファイルシステムであると見なされる。
第6列 システム起動時にfsckチェックを行うか否かの指定。
「0」チェックを行わない。
「1」ルートファイルシステムでチェックを行う
「2」ルートファイルシステム以外でチェックを行う

※第6列を2にしておくとOS起動時にfsckが走ってなかなか起動しないことがある。
例えば、以下の例だと起動してから6か月以上たっているため、
再起動するとfsckが走り、なかなか起動しない。

[root@onedari01 ~]# tune2fs -l /dev/sdf 
Last checked:             Fri Mar 30 20:49:49 2012 
Check interval:           15552000 (6 months)                    ★ここが6か月になっているためfsckが走った。 

サイズがでかいデバイスの場合、第6列は「0」にしたほうがよいかもしれません。

以上

BIG-IP iRuleのメモ ドメイン名によってpoolを変える

BIG-IPのiRuleで設定しなければならないものがありましたので
メモに残しておきます。

■やりたいこと

http://kiss.co.jp/とhttp://chuu.co.jp/で使用するpoolを分ける。

http://kiss.co.jp/のアクセスはpool_kissというpoolに、

http://chuu.co.jp/のアクセスはpool_chuuというpoolにする。

■iRule設定

when HTTP_REQUEST { 
if { [string tolower [HTTP::host]] eq "kiss.co.jp" } { 
    pool pool_kiss 
    } elseif { [string tolower [HTTP::host]] eq "chuu.co.jp" } { 
    pool pool_chuu 
   } 
} 

こんなもんでできます。簡単ですね。
(私は結構苦労しましたが。。)

このブログがよく纏められてて参考になると思います。
http://millerch.wordpress.com/tag/irules/

以上

Fluentdの正規表現のチェック

Fluentdの設定する時に、ログをマッチさせる正規表現の設定にいつも悩みます。
そんな時にこのサイトが非常に役に立ちます。

http://fluentular.herokuapp.com/

使い方はマジ簡単で、
Regular Expressionに正規表現、Test Stringにログのサンプルを入力し
「Parse」をクリックすると、問題なければMatch Groupsに結果が表示されます。
Formatに表示されているものをFluentdのfluent.confにコピーすれば一丁上がりです。

いろいろとテストしてみました。

■テストケース1
#Regular Expression

^(?<time>[^ ]* [^ ]* [^ ]*) (?<hostname>[^ ]*) (?<user>[^ ]*)\: "(?<ip>[^\"]*)" "(?<BUST>[^\"]*)" "(?<WASTE>[^\"]*)" "(?<HIP>[^\"]*)" (?<message>.*)$

#Test String

Feb  8 18:58:32 localhost root: "202.11.12.32" "90" "53" "63" "iijan iijan"

これだと駄目でした。
最初の”Feb 8 18:58:32″が(?

■テストケース2
#Regular Expression

^(?<time>[^ ]* *[^ ]* [^ ]*) (?<hostname>[^ ]*) (?<user>[^ ]*)\: "(?<ip>[^\"]*)" "(?<BUST>[^\"]*)" "(?<WASTE>[^\"]*)" "(?<HIP>[^\"]*)" (?<message>.*)$

#Test String

Feb  8 18:58:32 localhost root: "202.11.12.32" "90" "53" "63" "genkai toppa!"

(?

■テストケース3
#Regular Expression

^(?<time>[^ ]* [ ][\d+]* [\d+:\d+:\d+]*|[^ ]* [\d+]* [\d+:\d+:\d+]*) (?<hostname>[^ ]*) (?<user>[^ ]*)\: "(?<ip>[^\"]*)" "(?<BUST>[^\"]*)" "(?<WASTE>[^\"]*)" "(?<HIP>[^\"]*)" (?<message>.*)$

#Test String

Feb  8 18:58:32 localhost root: "202.11.12.32" "90" "53" "63" "omaera jagaimo!!"

これが一番いいかもしれません。

ということで、Fluentdの設定がしやすくなりました。
このようなサービスは本当に助かりますね。ありがたいです。

以上

return top