« 2007年12月 | トップページ | 2008年2月 »

2008年1月

2008-01-31

やる夫がUNIX macアドレスの確認するようです。

UNIXでmacアドレスを確認する方法

Linuxだったら、”/sbin/ifconfig”で特に問題ないですが、UNIXって”ifconfig”が使えません(使えるかもしれません)。ネットワークの設定で、セキュリティ上このmacアドレスからは接続を許可する・・・のようなことが、どの会社も一般的です。

最近昔っからあるセグメントを退役するとの通達があり、開発サーバを新セグメントへ移行するハメになりました。UNIXでのmacアドレス表示方法はどうすればよいでしょうか?

arp コマンド

IPアドレスからmacアドレスを導き出すために使われるプロトコルのことです。arpは通信効率を高めるために、コンピュータが一度取得したmacアドレスはarpキャッシュテーブルと呼ばれるイーサネット通信のために用いられるIPアドレスと、macアドレスの対照表に特殊なメモリ領域として格納されるようになっています。

# arp -a
Net to Media Table: IPv4
Device IP Address     Mask            Flags Phys Addr
------ -------------- --------------- ----- -----------------
bge0   192.168.2.80   255.255.255.255       00:ne:77:et:08:xx
bge0   192.168.2.81   255.255.255.255       00:00:0t:0e:st:xx
bge0   yaruo          255.255.255.255 SP 00:ya:r2:u8:o8:xx

  • 注):macアドレスは適当に記載しました。こんな感じで出力されます。

| | コメント (0) | トラックバック (0)

2008-01-28

[mysql] やる夫がカラム一覧を表示させるようです。

カラム一覧表示

DESCRIBE [table_name];

postgreSQLだったら”\d [table_name]”だったのですが、やっぱり違うようです。下記例では、”yaruo_db”の”yaruo_tb”のカラム情報を取得する手順となっています。

         ____
       /      \  
     /  _ノ  ヽ、_  \ 
    / o゚((●)) ((●))゚o \  未だにMySQLにはなじめないお
    |     (__人__)    | 
    \     ` ⌒´     /
   /´           `\
  /  /          l  l   .___
__l  l_¶______/_/__/     ヽ
  \, ´-'ヽ  ̄| ̄ ̄ ̄ ̄|   l二二二二l
    ヾ_ノ   | '''' '   |   l二二二二l
   | 9=ε-8. | '''..--  |   l二二二二l:::..
   |   ..''  |  ''-.  ,|
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  

# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| mysql              |
| test               |
| tmp                |
| yaruo_db           |
+--------------------+
11 rows in set (0.03 sec)

mysql> use yaruo_db
Database changed
mysql> show tables;
+-------------------+
| Tables_in_yaruo_db|
+-------------------+
| yaruo_table       |
+-------------------+
1 row in set (0.00 sec)

mysql> DESCRIBE yaruo_table;
+-------+--------+------+-----+---------+----------------+
| Field | Type   | Null | Key | Default | Extra          |
+-------+--------+------+-----+---------+----------------+
| yauro | int(11)| NO   | PRI | NULL    | auto_increment |
+-------+--------+------+-----+---------+----------------+

----------------------------------------
現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

| | コメント (1) | トラックバック (0)

2008-01-23

やる夫がISOイメージのマウントをするようです。

ISOイメージのマウントについて

前回”dd”コマンドの記事で、ISOイメージの作成方法を紹介しました。そのISOイメージから”mount”してファイルを取り出すことが出来るようです。ISOイメージをマウントする機能はカーネル2.4.xから実装可能とのこと。

      ____
    /_ノ   ヽ_\
   /( ●) ( ●)\
 / ::::::⌒(__人__)⌒:::::\  必要なrpmを、クライアント端末から
 |        ̄      |      FTPするが非常にメンドクサイお・・・
 \              /

━━━━━━━━━━━━━━━━━━━━
  .キッ!   / \   / \ やる夫の予感!
___∧,、 /  (●)  (●)  \____
 ̄ ̄ ̄`'` |    (__人__)    | ̄ ̄ ̄ ̄
━━━━━━━━━━━━━━━━━━━━

     ____  
   /      \
  /  ─    ─\ 
/    (●)  (●) \    イメージファイルだから
|       (__人__)    |        CD-Romと同じかな・・・?
/     ∩ノ ⊃  /  
(  \ / _ノ |  |    ひょっとしたらマウントしてファイルがとりだせるかも
.\ “  /__|  |  
  \ /___ /

ISOイメージマウント方法

ISOイメージが”/usr/local/isoimage/redhat/”にあるものとします。

# cd /usr/local/isoimage/redhat/   
# ls
RHEL4-ES-disc1.iso

  • 注):マウントポイントを作成して下さい。ディレクトリ名は任意。

# mkdir RHEL4-ES-disc1
# mount -t iso9660 -o loop RHEL4-ES-disc1.iso /service/data5/isoimage/redhat/RHEL4-ES-disc1

  • iso9660 オプションは、CD-ROMのファイルシステムです。

# df -kh
Filesystem          サイズ  使用  残り 使用% マウント位置
/usr/local/isoimage/redhat/RHEL4-ES-disc1.iso
                      174M  174M     0 100% /service/data5/isoimage/redhat/RHEL4-ES-disc1

  
 (( (ヽ三/)        (ヽ三/) ))
  .  (((i )   ___   ( i)))
  / /  /_ノ   ヽ_\   ヽ \
  (  く  /( ●)  (●)\   > )  df で結果が返ってくるお!
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|        ̄      |/
      \              /

# cd /service/data5/isoimage/redhat/RHEL4-ES-disc1   
# pwd
/service/data5/isoimage/redhat/RHEL4-ES-disc1

ISOイメージアンマウント方法

# umount /service/data5/isoimage/redhat/RHEL4-ES-disc1

あるサーバにISOイメージを作成しておけば、rpmのインストール時にわざわざCD-ROMから引っ張りだしてFTPしたりしなくて良いですね。NFS領域にマウントしておくと便利だと思います。

| | コメント (0) | トラックバック (0)

nkf [ファイル管理コマンド]

nkf コマンド

日本語の文字コードを変換するコマンドです。Webアプリの文言変換等に利用するのでしょうが、最近業務上めっきり使う機会がなくなりました。

nkf インストール方法

”RedHat Enterprise LINUX ES Version4”を使っていますが、デフォルトでインストールすると”nkf”が入っていなかった気がする。というかrpm自体ない?なので下記手順で”nkf”をインストールしました。

# wget ftp://ftp.riken.jp/pub/Linux/redhat/archive.redhat.com/redhat/linux/9/en/os/i386/SRPMS/nkf-2.01-2.src.rpm   
# rpm -ivh nkf-2.01-2.src.rpm
# updatedb
# locate nkf
/usr/src/redhat/SOURCES/nkf-1.92-glibc2290.diff
/usr/src/redhat/SOURCES/nkf201.shar.gz
/usr/src/redhat/SOURCES/nkf.copyright

  • updatedb と locate コマンドで解凍先のディレクトリを確認しただけです。

# cd /usr/src/redhat/SOURCES/
# gzip -d nkf.copyright
# sh ./nkf201.shar
x - MANIFEST
x - INSTALL.j
x - INSTALL
x - Makefile
x - config.h
x - make_test.pl
x - nkf.1
x - nkf.1j
x - nkf.c
x - nkf.doc
x - nkf_test.pl
x - test.pl
x - utf8tbl.c
x - NKF.mod/Changes
x - NKF.mod/MANIFEST
x - NKF.mod/Makefile.PL
x - NKF.mod/NKF.pm
x - NKF.mod/NKF.xs
x - NKF.mod/README
x - NKF.mod/test.pl
# cd nkf201
# make
# make test
# ls
INSTALL    Makefile  make_test.pl  nkf.1j   nkf_test.pl  utf8tbl.o
INSTALL.j  NKF.mod   nkf         nkf.c    test.pl
MANIFEST   config.h  nkf.1       nkf.doc  utf8tbl.c   
# cp nkf /usr/local/bin/.

  • コマンドのコピー先ですが、パスが通っていればどこでも・・・。通常は”/usr/local/bin”ですね。

コマンド利用方法

オプション

オプション 機能
-e EUCコードを出力する。
-E EUCコードを出力する。
-j JISコードを出力する。
-J 入力コードをJISコードとする。
-s シフトJISコードを出力する。
-S 入力コードをシフトJISコードとする。

実行例

ターミナルの日本語受信を”EUC”とします。”yaruo.txt”をクライアントで作成し、サーバにアップロードして”nkf”コマンドを利用してみます。

# cat yaruo.txt
@ @ @@@QQQ_
@ @@@^_m @ R__
@@@^i j @ij_
@ ^::::::樒__l__j楮:: _   
@ |@@@ @|rΝ/ @ @@@|
@ _ @ @ `P'L@@@ @^

  • s-jisなのかな?コレはひょっとすると・・・!?

# nkf -e yaruo.txt > yaruo.euc   
# cat yaruo.euc
       ____
     /_ノ   ヽ_\
   /( >)  (<)\
  /::::::⌒(__人__)⌒::: \
  |     |r┬-/      |
  \     ` ̄'´     /

  • やる夫デスタ。

| | コメント (0) | トラックバック (0)

2008-01-21

やる夫がTrac接続エラーに直面しているようです。

Trac について

Tracはソフトウェアのプロジェクト管理とバグ追跡のためのツールです。Web ベース、オープンソースであり、CVSTracに影響を受けた。 Edgewall Softwareにより開発され、保守されています。

wiki、Subversion、Bazaarといったウェブインタフェイスも提供しており、開発で幅広く使われているようです。

接続エラー

         ____
       /      \
      /  ─    ─\     やらない夫に言われたので、
    /    (●)  (●) \        PostgreSQLのライブラリ更新するお  
    |       (__人__)    | ________
     \      ` ⌒´   ,/ .| |          |
    ノ           \ | |          |
  /´                 | |          |
 |    l                | |          |
 ヽ    -一ー_~、⌒)^),-、   | |_________|
  ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  |

 

         ____
       /::::::::::  u\
      /:::::::::⌒ 三. ⌒\     あれ・・・?
    /:::::::::: ( ○)三(○)\        ログインサービス機待ちが・・・ry)
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          |
    ノ::::::::::u         \ | |          |
  /:::::::::::::::::      u       | |          |
 |::::::::::::: l  u             | |          |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |

            / ̄ ̄\
          /   _ノ  \
          |     -□-□)    Tracアクセスできないんだけど
          |     (__人__)               なんかしらねぇ?
             |     ` ⌒´ノ  
              |         }
              ヽ        }     (こいつまたなんかやっただろ・・・

            ヽ、.,__ __ノ  
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|
;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;:::::::::::::::::::::::\:::::゙、|||:::/::::::::::|:::

         ____
       /      \
      /  ─    ─\     ・・・ちょっと確認してみます・・・。
    /    (○)  (○) \       (やべばいお・・・)
    |       (__人__)    | ________
     \      ` ⌒´   ,/ .| |          |
    ノ           \ | |          |
  /´                 | |          |
 |    l                | |          |
 ヽ    -一ー_~、⌒)^),-、   | |_________|
  ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  | 

         ____
       /   u \
      /  \    ─\    チラッ
    /  し (>)  (●) \
    | ∪    (__人__)  J |  ________
     \  u   `⌒´   / | |          |
    ノ           \ | |          | 
  /´                | |          | 
 |    l             | |          |

Oops...

Trac detected an internal error: libpq.so.4: cannot open shared object file: No such file or directory

       ____
     /ノ   ヽ、_\
   /( ○)}liil{(○)\  
  /    (__人__)   \   やっぱエラってんじゃん!
  |   ヽ |!!il|!|!l| /   | 
  \    |ェェェェ|     /  

サービス機の名前が同じのが多いとついやってしまうミス(嘘)。エラー内容からは、”libpqa.so.4”ライブラリの位置を”apache”が認識していないようです。”libpqa.so.4”があるか確認します。

# updatedb
# locate libpqa.so.4
/usr/local/pgsql/lib/libpq.so.4
/usr/local/pgsql/lib/libpq.so.4.1

  • locate コマンドで探してみました。今回の例ではあったようです。

”libpqa.so.4”のディレクトリ位置がわかったので、”ld.so.conf”を修整して再度読み込ませればOK。今回はコレで動くようになりました。

# cat /etc/ld.so.conf
-----
  include ld.so.conf.d/*.conf    
  /usr/local/lib
+ /usr/local/pgsql/lib
-----
# ldconfig

| | コメント (0) | トラックバック (0)

2008-01-16

やる夫がNFSを利用するようです。

NFS について

NFSを使うと離れた場所にあるコンピュータのファイルを、あたかも自分のコンピュータにあるファイルのように操作することができます。ファイルを他のコンピュータに提供するコンピュータをNFSサーバ、他のコンピュータにあるファイルを利用するコンピュータをNFSクライアントといいます。

NFSサーバ設定

下記設定では、”indigo01”にSCSIハードディスクに割り当てた、”/nfs/yaruo”というデータ領域を”indigo02”というNodeからmountできるように設定する記述になります。”()”の記述は権限とか指定できま。詳しくはGoogleで・・・。

設定

[indigo01]# df -kh
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda5              68G   64G  196M 100% /nfs/yaruo
[indigo01]# vi /etc/ecports
-----
/nfs/yaruo indigo02(rw,no_root_squash,sync)
-----

  • rw 読み書き許可

反映

[indigo01]# /etc/init.d/nfs restart
Shutting down NFS mountd:            
[ OK ]   
Shutting down NFS daemon:            
[ OK ]
Shutting down NFS services:         
[ OK ]
Shutting down NFS quotas:            [ OK ]
Starting NFS services:               
[ OK ]
Starting NFS quotas:                
[ OK ]
Starting NFS mountd:                
[ OK ]
Starting NFS daemon:                
[ OK ]

NFSクライアント設定

mountコマンド打つだけ・・・。前提条件としては、hosts設定ができていることと、ルーティンが通っていること。nfsのportはデフォルトで”2049”お確かめあれ。

設定

[indigo02]# mkdir -p /nfs/yaruo
[indigo02]# mount -t nfs indigo01:/nfs/yaruo /nfs/yaruo
[indigo02]# df -kh
Filesystem          サイズ  使用  残り 使用% マウント位置
indigo01:/nfs/yaruo    68G   64G  196M 100% /nfs/yaruo

”df”で確認すると上記結果が得られる筈。

Nodeのリブート時に、このままだとmountされないので、起動時に自動でmountしてくれるように設定が必要です(しなくてもよい)。

[indigo02]# cd /etc
[indigo02]# vi /fstab
-----
indigo01:/nfs/yaruo /nfs/yaruo nfs defaults 0 0  
-----

おまけ

”fstab”で自動マウント設定ができますが、仮にNFSクライアントNodeのリブート時に、NFSサーバとの通信が出来ていないと、OSが立ち上がりません。セーフモードで立ち上げて、”fstab”のマウント設定をコメントアウトとかして、再度OSの立ち上げをしなければいけなくなったり・・・色々面倒です。

----------------------------------------

NFS&NIS 第2版
ハル スターン リカルド ラビアガ マイク アイスラー Hal Stern Ricardo Labiaga Mike Eisler 砂原 秀樹 木下 哲也
オライリー・ジャパンオライリー・ジャパンオライリー・ジャパン
定価 : ¥ 5,040
2002-04
amazonで詳しく見る
amazon → ブログ 支援ツール by i-store.jp

| | コメント (0) | トラックバック (0)

[shell] やる夫がshell実行時の引数で動作を変更するようしたいようです。

引数を指定してコマンド実行

shellスクリプト実行時に引数を指定したい場合・・・例えば”yaruo.sh”というshellスクリプト実行時に引数を指定し、指定した引数により返す値を変更するという内容です。シンプルなので使いやすいと思います。

スクリプト

# vi yaruo.sh
-----
if [ $# -ne 1 ]; then

    echo "やる夫が引数無しでコマンドを打ったようです。"
    exit 1

fi

    echo "$1が引数有りでコマンドを打ったようです。"

exit 0
-----

  • -ne ”=”でないという比較演算子
  • $# 引数の数を返します。引数3つ与えれば、3を返します。
  • $1 引数を指定した場合、$1に指定した任意の値が入力されます。

実行結果

最初が引数無しのパターン。次が引数(任意)”yaruo”を指定した場合。

# ./yaruo.sh
やる夫が引数無しでコマンドを打ったようです。
# ./yaruo.sh yaruo
yaruoが引数有りでコマンドを打ったようです。

| | コメント (0) | トラックバック (1)

date [システム管理コマンド]

h4>date コマンド

日付、時刻を表示します。設定もできます。ファイル管理するshellのファイル名指定で”date”コマンドを利用すると思います。”yyyymmdd”形式での出力方法を覚えておくと便利ですね。

# date
2008年  1月 16日 水曜日 17:15:53 JST

オプション

オプション 機能
-u グリニッジ標準時で表示
+[表示形式] どのように表示させるか決められる
文字列 表示
%H 時(00-23)
%I 時(01-12)
%k 時(0-23)
%l 時(1-12)
%M 分(00-59)
%S 秒(00-59)
%T 24時間形式(hh:mm:ss)
%A 曜日(Sunday-Saturday)
%B 月(January-Decenber)
%D 日付(mm/dd/yy)
%m 月(01-12)
%d 日(01-31)
%y 年(00-99)
%Y 年(1970-)

実行例

# date +%Y%m%d
20080116

ファイルをバックアップするときに利用してみるのもよいかも。下記例は”/etc/postfix/aliases ”のバックアップ例。まぁ手で書きゃいいのですが・・・参考までに。

# ls
aliases aliases.db main.cf
# cp -p /etc/postfix/aliases /etc/postfix/aliases.bak.`date +%Y%m%d`
# ls
aliases aliases.bak.20080116 aliases.db main.cf

  • -p オプションはデータ日付+パーミッションを引き継いでコピー

| | コメント (0) | トラックバック (0)

2008-01-09

やる夫がSELinuxを無効化にするようです。

SELinux について

セキュリティ拡張モジュールのようです。selinuxを無効化しないと、mysqlがインストールできない・・・または動かない。その他何かが動かない状況に陥ります。

SELinux 設定方法

# /usr/sbin/getenforce
Enforcing

  • Enforcing 有効
  • Permissive 無効

# /usr/sbin/setenforce 0
# /usr/sbin/getenforce
Permissive

システム起動時にSELinux を無効にする設定

# vi selinux selinux.bak
-----
+ SELINUX=disabled
- SELINUX=enforcing
-----

| | コメント (0) | トラックバック (0)

sar [プロセス管理コマンド]

sar コマンド

サーバーの負荷状況を表示します。オプションで、CPU使用率、ディスクI/O、ネットワーク利用量、swap量、使用メモリ量、空きメモリ量、ディスクアクセス量などを取得できます。なんか困ったら”sar”を叩いて見ましょう。

            / ̄ ̄\
          /   _ノ  \
          |     -□-□)
          |     (__人__)   なんかサーバの状態が調子悪いから
             |     ` ⌒´ノ           sarでも見といてくんない?
              |         }
              ヽ        }   
            ヽ、.,__ __ノ    
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|
;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;:::::::::::::::::::::::\:::::゙、|||:::/::::::::::|:::

       ____
     /_ノ   ヽ_\
   /( >)  (<)\
  /::::::⌒(__人__)⌒::::: \  レンジャー!
  |     |r┬-/      |
  \     ` ̄'´     /

# sar
15時45分01秒 CPU %user %nice %system %iowait %idle
15時50分01秒 all  4.01  0.00  0.36    0.39    95.23
15時55分01秒 all  4.66  0.00  0.37    0.29    94.67
16時00分01秒 all  2.70  0.00  0.30    0.32    96.68
平均値:      all  3.76  0.00  0.35    0.42    95.48

       ____
    /      \
   /  ─    ─\    ただ今sar監視中ですお・・・。
 /    (○) (○) \   (idleしか意味がわからんお・・・)
 |       (__人__)    |    
 \     ` ⌒´   /      
,,.....イ.ヽヽ、___ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||


      / ̄ ̄\   
    /ノ( _ノ  \     sar確認にどれだけかかってんだよ
    | ⌒(( ●)(●)     お前何年目だよ!?
    .|     (__人__) /⌒l
     |     ` ⌒´ノ |`'''|
    / ⌒ヽ     }  |  |              
   /  へ  \   }__/ /             / ̄ ̄\
 / / |      ノ   ノ           / ●)) ((●\’, ・ 意味が・・・
( _ ノ    |      \´       _    (   (_人_)’∴ ),  ’
       |       \_,, -‐ ''"   ̄ ゙̄''―---└'´ ̄`ヽ   て
       .|                  ______ ノ    (
       ヽ           _,, -‐ ''"  ノ       ヽ   r'" ̄
         \       , '´        し/..     | J
          \     (           /      |
            \    \         し-  '^`-J


            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ   ったくしょうがねぇなぁ・・・
              |         }      下記ポイントだけは抑えておけよ
              ヽ        }
            ヽ、.,__ __ノ
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|

”sar見といて”ってよく言われるけど、あんまり良くわかっていない人が多いかも、何かあったら”sar”コマンドをよく叩くので、この際に覚えてしまいましょう。

  • %user 大雑把にいうとユーザが叩いたコマンドに反映
  • %system システムレベルでの実行に使用されたCPU
  • %iowait 仮想CPUが強制的に待たされた時間(多いとあまりよくない)
  • %idle サーバの暇度、高いほど暇、上記例だと暇

オプション

# sar 1 2 ・・・1秒おきに2回CPUの使用状況を表示する
20:07:40    %usr    %sys    %wio   %idle
20:07:41       0       2       0      98
20:07:42       1       6       3      90
Average        0       4       1      94

# sar -c 1 1 ・・・システムコールの量を表示
20:49:06 scall/s sread/s swrit/s  fork/s  exec/s rchar/s wchar/s
20:49:07    9049    2389     308    1.98    2.97 6074413  270055

# sar -r 1 1 ・・・空きメモリ、空きswapを表示。単位はpagesizeです。
20:52:34 freemem freeswap
20:52:35 2635678 73726860

過去のsar結果を確認する

”/var/log/sa” 配下に、sa[dd]形式のファイルがあります。コレを読み込ませれば、過去のsar結果を確認することができます。

# sar -f /var/log/sa/sa16

sar がインストールされていない場合もある

ほぼ標準装備です、ただ入っていなかった場合は、”sysstat”をインストールすればOKです。ログローテーションも勝手にやってくれる筈。

# rpm -ivh sysstat-5.0.5-1.i386.rpm
警告: sysstat-5.0.5-1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing…                ########################################### [100%]
  1:sysstat                ########################################### [100%]

デフォルトは5分間隔です。cronの設定をしてみてください。

# vi /etc/cron.d/sysstat
-----
*/5 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
-----

| | コメント (0) | トラックバック (0)

やる夫がログ管理をするようです。

ログローテーションについて

            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ   最近なんかディスク圧迫アラームが
              |         }               頻繁にあがるな・・・
              ヽ        }
            ヽ、.,__ __ノ    やる夫がログローテーションとか
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、       やってくれてるわけないか常識的に考えて・・・
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_ 
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|
;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;:::::::::::::::::::::::\:::::゙、|||:::/::::::::::|:::


ディスク圧迫を防ぐためにログローテーション設定をして見ましょう。ココでは”apache”の”/usr/local/logs/httpd.log”っていうログのローテーションを設定してみます。やらない夫がこっそりログローテーションを仕掛けてくれるようです。

  • 記事範囲が狭いためちょっと見づらい・・・

# cd /etc/logrotate.d
# vi apache_log
-----
### apacheログの絶対パス
/usr/local/logs/httpd.log {
    ### ローテーションは16回
    rotate 16
    ### 毎日ログローテーションする daily or weekly
    daily
    ### ログファイルが無くてもエラーを出さない
    missingok
    ### 複数指定したログに対してpostrotateまたはprerotateで記述されたコマンドを実行
    sharedscripts
    ### ローテーションされたログをgzipで圧縮
    compress
    ### postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
    ### postrotate or prerotate
    postrotate
    /bin/kill -USR1 `cat /usr/local/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}
-----

  • -USR1 オプションはフリーになったプロセスから順に再起動
  • -HUP オプションは接続中のユーザセッションも切断し再起動

”ーUSR1”の場合はログの切り替えタイミングを知るのが難しいです。瞬断してもよいのであれば、”-HUP”がお勧めでしょうか?

| | コメント (0) | トラックバック (0)

2008-01-08

やる夫がmod_proxy_balancerを利用するようです。

mod_proxy_balancerについて

apache-2.2.4インストールというよりも、”mod_proxy_balancer”の設定を主に記載してみます。ロードバランサがあれば特に必要ないのではないかと思ったりします。コストの問題でしょうか?遊びで構築してみましたが、サービスへの導入はしてないです。

     ____ 
   /      \
  /  ─    ─\ 
/    (●)  (●) \   
|       (__人__)    |   トラブル発生時に、ロードバランサーから切り離して 
/     ∩ノ ⊃  /               もらうよう依頼するのも時間かかるし・・・。
(  \ / _ノ |  |    
.\ “  /__|  |   
  \ /___ /

     ____
   /      \ ( ;;;;(
  /  _ノ  ヽ__\) ;;;;)   
/    (─)  (─ /;;/  
|       (__人__) l;;,´   かといって、サービス単位でロードバランサ作業は
/      ∩ ノ)━・'/                      させてもらえないだろ・・・。
(  \ / _ノ´.|  |    
.\  "  /__|  |     
  \ /___ /

何処の組織もそうだと思いますが、ロードバランサーとかフィルタ関連は、それ専門で実施する部署とかあると思います。トラブルが発生時にこういったしがらみが、対応を遅くさせます。ちょっとやる夫が成長しています。

         |
     \  __  /
     _ (m) _
        |ミ|
      /  `´  \
       ____
     /⌒  ⌒\
   /( ●)  (●)\    そうだ!アプリ側でバランシングすればいいお!
  /::::::⌒(__人__)⌒::::::\   たしかapache2.0からバランシングモジュールが
  |     |r┬-|     |                      利用できたはず!
  \      `ー'´     /

ファイル取得

http://www.apache.jp/ から”apache-2.2.4”を適当に落としてください。

apache-2.2.4 インストール 

単純に”./configure”だけだと、、”mod_proxy_balancer”が使えないので、下記オプションを参考にインストールして見てください。

# ./configure --enable-proxy --enable-proxy-balancer --enable-rewrite -enable-deflate
# make
# make install

モジュール確認

下記結果が返ってくれば、”mod_proxy_balancer”が使える筈。

# /usr/local/apache2/bin/httpd -l | grep proxy
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c

mod_proxy_balancer 設定

httpd.conf 設定

”apache”を”indigo01(192.168.2.20)”に構築し、イントラネット上のクライアント端末(192.168.2.30)から、管理画面を使用する設定とします。バランシング方法は、”http://192.168.2.20/cluster_test”でのリクエストに対し、yahoo,goo,so-net,niftyへランドロビンする設定になっています。

# vi /usr/local/apache2/conf/httpd.conf
-----
#Load Balancer
#http://localhost/cluster_test
<Location /balancer-manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Deny from all
    # 管理画面を使用するクライアントネットワークの指定
    Allow from 192.168.2.0/24
</Location>

ProxyRequests Off

#http://localhost/cluster_test
ProxyPass /cluster_test balancer://mycluster lbmethod=byrequests timeout=1

###http://localhost/yaruo というアドレスでバランシングしたい場合は・・・
###ProxyPass /yaruo balancer://mycluster lbmethod=byrequests timeout=1

<Proxy balancer://mycluster>
   #1 yahoo
   ###
   BalancerMember http://www.yahoo.co.jp loadfactor=20
   #2 goo
   BalancerMember http://www.goo.ne.jp loadfactor=10
   #3 so-net
   BalancerMember http://www.so-net.ne.jp loadfactor=10
   #4 nifty
   BalancerMember http://www.nifty.com loadfactor=10
</Proxy>
-----

  • loadfactor 上記設定だと、yahooへ行く回数が多くなります。

balancer-manager

上記設定だと http://192.168.2.20/cluster_test で下記のようなイメージになります。

Apache










stickysession

ID指定で固定のアクセスが可能です。

-----
<Proxy balancer://mycluster>
   #1 yahoo
   ###
   BalancerMember http://www.yahoo.co.jp loadfactor=10 route=1001
   #2 goo
   BalancerMember http://www.goo.ne.jp loadfactor=10 route=1002
   #3 so-net
   BalancerMember http://www.so-net.ne.jp loadfactor=10 route=1003 redirect=1002
   #4 nifty
   BalancerMember http://www.nifty.com loadfactor=10
</Proxy>
-----

リダイレクト設定

サーバやapacheのプロセスが死んだ場合のリダイレクト設定が”redirect”で可能です。上記設定だと、”http://192.168.2.20/cluster_test?testid=test.1003”でリクエストして、”so-net”のポータルサーバが落ちていた場合、”goo”にアクセスするように設定しています。

balancer-manager 接続エラー

[Tue Jan 08 14:41:03 2008] [error] [client 192.168.2.20] client denied by server configuration: /usr/local/apache2/htdocs/balancer-manager

こんなエラーメッセージが出力されたならば、”httpd.conf”のACL設定がまずいようです。今回は”balancer-manager”とします。”Allow from”と記載されたところを確認して見てください。

# vi /usr/local/apache2/conf/httpd.conf
-----
<Proxy balancer://mycluster>
-   Allow from 192.168.1.1
+   Allow from 192.168.2.0/24
</Location>
-----

こんな感じでしょうか?

| | コメント (0) | トラックバック (0)

2008-01-07

[postgresql] やる夫がデータベースを削除するようです。

postgresql データベース削除

$ dropdb [database name]

オプションとかは知りません。コレだけだと寂しいので削除例を・・・。
       ____
     /ノ   ヽ、_\
   /( ●)}liil{(●)\
  /    (__人__)   \   やらない夫まじムカつくお!
  |   ヽ |!!il|!|!l| /   |             削除してやんよ!
  \    |ェェェェ|     /

$ psql
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \l
               List of databases
          Name          |  Owner   | Encoding
------------------------+----------+----------
postgres                | postgres | UTF8
template0               | postgres | UTF8
template1               | postgres | UTF8
yaranaio_db             | postgres | UTF8

(4 rows)

  • \l はデータベース一覧表示

”yaranaio_db”というデータベースを削除してみます。

$ dropdb yaranaio_db
$ psql
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \l
               List of databases
          Name          |  Owner   | Encoding
------------------------+----------+----------
postgres                | postgres | UTF8
template0               | postgres | UTF8
template1               | postgres | UTF8

(3 rows)

----------------------------------------

オープンソースを使ったデータベースの構築―ApacheサーバとPostgreSQLでデータベース
藤田 泰徳 山崎 文則
セレンディップセレンディップセレンディップ
定価 : ¥ 3,675
2000-09
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

やる夫がUSB CD-Rom ドライブの認識に苦戦しているようです。

USB CD-Rom の認識について

USB CD-Rom ドライブを利用して、Red Hat Enterprise Linux 4 をインストールしようとしましたが、USR CD-Rom ドライバが認識されませんでした。”SCSI”だったらこんなこともないのだろうけども・・・。

         ___
       /::::::::::  u\
      /:::::::::⌒ 三. ⌒\   
    /:::::::::: ( ○)三(○)\ 
    |::::::::::::::::⌒(__人__)⌒  |   サーバ購入時CD-Romドライブを
     \::::::::::   ` ⌒´   ,/           付けておけばよかったお・・・。
    ノ::::::::::u         \ 
    /:::::::::::::::::      u   

CD-Romドライブを付けないで、1万~5万くらいのコストダウンでしょうか?知ってりゃ問題ないことなので、コレを機に覚えましょう(金があればやる夫の考え方で問題なし)。

解決方法

電源ボタンを押し、インストールCDをセットします。しばらくすると、”Red Hat”のロゴが表示され下記プロンプトが表記されます。”linux cdrom = sda”と入力して[Enter]キーでドライブが認識される筈@それだけ。

boot:
boot: linux cdrom = sda

| | コメント (0) | トラックバック (0)

[postgresql] やる夫がvacuumで苦戦しているようです。

VACUUM について

PostgreSQLの特徴として、追記型アーキテクチャを利用しています。更新・削除時には、以前のデータを残したまま、新しいデータを末尾に追記します。更新・削除が頻繁に行われると、必要としないデータのゴミが蓄積されます。このデータベースの不要領域を回収するのに、VACUUMが用いられます。VACUUMを定期的に行わないとパフォーマンスが悪くなります。
         ____
       /      \  
     /  _ノ  ヽ、_  \ 
    / o゚((●)) ((●))゚o \  Vacuumしないと
    |     (__人__)    |      レスポンスが悪化するお
    \     ` ⌒´     /
   /´           `\
  /  /          l  l   .___
__l  l_¶______/_/__/     ヽ
  \, ´-'ヽ  ̄| ̄ ̄ ̄ ̄|   l二二二二l
    ヾ_ノ   | '''' '   |   l二二二二l
   | 9=ε-8. | '''..--  |   l二二二二l:::..
   |   ..''  |  ''-.  ,|
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     

$ vacuumdb -avz > /usr/local/postgres/work/vacuum.log.20071114 2>&1

  • -a オプションは全てのデータベースをVacuumします。
  • -v オプションは処理実行中に詳細な情報を表示します。
  • -z オプションはデータベースの統計情報を計算します。

$ tail -f /usr/local/postgres/work/vacuum.log.20071114 2>&1
-----
vacuumdb: vacuuming of database “postgres” failed: ERROR: out of memory
-----

メモリーエラーになってます。”postgresql.conf” の” maintenance_work_mem ”値を変更してやる必要があります。恐らく多くとりすぎたか?256MBくらいが、適当と思われます。

$ vi /usr/local/postgres/PGData/postgresql.conf
-----
maintenance_work_mem = 262144
-----

----------------------------------------

オープンソースを使ったデータベースの構築―ApacheサーバとPostgreSQLでデータベース
藤田 泰徳 山崎 文則
セレンディップセレンディップセレンディップ
定価 : ¥ 3,675
2000-09
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-01-04

[shell] やる夫がお手軽監視スクリプトを作成したようです。

お手軽監視コマンド

”top”や”vmstat”はリアルタイムでのリソース監視が可能ですが、リアルタイムで垂れ流しで監視したいコマンドって結構ありますよね(?)

commandループ

# while true ; do [command]; sleep [n]; done;
  • [command]:ループしたいコマンドを入力
  • [n]:秒数

停止は”Ctrl”+”c”で止まります。

応用例

pg_lock監視

下記は”pg_locks”をリアルタイムで確認できるコマンドです。例だと2秒毎に”pg_locks”を確認しに行きます。役に立つかどうかは未知数。

# while true ; do date ; echo 'select count(*) from pg_locks;' | /usr/local/pgsql/bin/psql -U postgres ; sleep 2 ;  done;

メール送信状況の確認

ひねり出すと以外にあるかも。滞留していたメールの送信状況確認とか。

# while true ; do date ; find /var/spool/postfix/active/ -type f | wc -l ; sleep 2 ; done;

| | コメント (0) | トラックバック (0)

やる夫がCLUSTERPROを操作するようです。

CLUSTERPRO モニタ状況

# /usr/sbin/clpstat -m
=====================  MONITOR RESOURCE STATUS  =====================
Cluster : cluster
   server0 : indigo01
  *server1 : indigo02 ←こちらが主系で活躍中

  Monitor0 [Postgresexecmonitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Offline
   server1 [o] : Online ←indigo02でDBが生きてるかの監視稼動中

  Monitor1 [Webipwmonitor : Caution]
--------------------------------------------------------------------
   server0 [o] : Suspend
   server1 [o] : Suspend

  Monitor2 [eth0monitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online

  Monitor3 [eth1monitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online

  Monitor4 [failipwmonitor : Caution]
--------------------------------------------------------------------
   server0 [o] : Suspend
   server1 [o] : Suspend

  Monitor5 [sdb2rawwmonitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online

  Monitor6 [sdc2rawwmonitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online

  Monitor7 [sdd2rawwmonitor : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online

  Monitor8 [userw : Normal]
--------------------------------------------------------------------
   server0 [o] : Online
   server1 [o] : Online
=====================================================================

CLUSTERPRO FIP表示

# /usr/sbin/clpstat --rsc
=======================  CLUSTER INFORMATION  =======================
   [Resource0 : WebManagerFIP1]
     Type                       : fip
     Comment                    : floating ip resource
     IP Address                 : 192.168.2.20
   [Resource0 : Postgresexec]
     Type                       : exec
     Comment                    :
     Start Script
       Path                     : start.sh
     Stop Script
       Path                     : stop.sh
   [Resource1 : PostgresexecMON]
     Type                       : exec
     Comment                    :
     Start Script
       Path                     : start.sh
     Stop Script
       Path                     : stop.sh
   [Resource2 : fip1]
     Type                       : fip
     Comment                    :
     IP Address                 : 192.168.2.19<--これ!
   [Resource3 : sdb3disk]
     Type                       : disk
     Comment                    :
     Device Name                : /dev/sdb3
     File System                : ext3
     Mount Point                : /service/data0
   [Resource4 : sdc3disk]
     Type                       : disk
     Comment                    :
     Device Name                : /dev/sdc3
     File System                : ext3
     Mount Point                : /service/data1
   [Resource5 : sdd3disk]
     Type                       : disk
     Comment                    :
     Device Name                : /dev/sdd3
     File System                : ext3
     Mount Point                : /service/data2
=====================================================================

Monitor0 監視スクリプト

下記ディレクトリ配下にある、シェルスクリプトで、PostgreSQL、MySQLの上げ下げを行っています。

# cat /opt/nec/clusterpro/scripts/failover1/PostgresexecMON/start.sh
# cat /opt/nec/clusterpro/scripts/failover1/MySQLexecMON/start.sh

その中で「clp_mysql50mon」などの監視プロセスを下記のように立ち上げている。

# clp_mysql50mon mysqlwatch -d mysql -a 192.168.2.20

clp_mysql50monはmysqlwatchというテーブルを”mysql”というDBに対して作成および更新をかけるプロセスで、そのプロセスがDBにアクセス出来なかった場合落下するので、その落下が監視項目にひっかかるという具合。下記にその例を示す。

CLUSTERPRO: <type: rm><event: 1> Monitor MySQLexecmonitor start.
CLUSTERPRO: <type: mysql50mon><event: 1> The clp_mysql50mon has started watching MySQL. [ID:mysqlwatch]
CLUSTERPRO: <type: mysql50mon><event: 0> MySQL:Lost connection to MySQL server during query
CLUSTERPRO: <type: mysql50mon><event: 21> Failed to connect to the database 'vote'. [ID:mysqlwatch]
CLUSTERPRO: <type: mysql50mon><event: 6> The clp_mysql50mon will terminate. [ID:mysqlwatch]
CLUSTERPRO: <type: rm><event: 9> Monitor MySQLexecmonitor failed. (1 : Process does not exist. (pid=23986))
CLUSTERPRO: <type: rm><event: 2> Monitor MySQLexecmonitor stop.
CLUSTERPRO: <type: rm><event: 14> failover1 was failover for failure in MySQLexecmonitor.

この場合はstart.sh経由でclp_mysql50monがスタートするが、MySQL:user:rootが何らかの理由でDB[vote]にアクセスできずにclp_mysql50monプロセスが落下。そのモニタ項目であるMonitor MySQLexecmonitorが検知されfailoverが始まる。

これを改善するには、mysql> SHOW GRANTS FOR DB名;などでアクセス権限を確認して、間違いがあれば修正する。

CLUSTERPRO 稼動ログ

こんな感じで引っ掛ければよいです。

# tail -f /var/log/messagesgrep |grep CLUSTERPRO

CLUSTERPRO 監視停止+起動

監視停止 ※両サーバで実施すること

# clpmonctrl -s
# clpstat
  • <server>が”Online”と”Normal”であることを確認。
  • <group>が”Online”であることを確認。
  • <monitor>が”Caution”であることを確認。

# clpstat -m
  • モニタリソースが”Suspend”になっている筈。

監視起動 ※両サーバで実施すること

# clpmonctrl -r
# clpstat
  • <server>が”Online”と”Normal”であることを確認。
  • <group>が”Online”であることを確認。
  • <monitor>が”Normal”であることを確認。

# clpstat -m
  • モニタリソースが”Online”になっている筈。

おまけ

リファレンスガイド
http://www.ace.comp.nec.co.jp/CLUSTERPRO/clp/linux/document/x10_l.html

| | コメント (0) | トラックバック (0)

やる夫がAdaptec SCSI Card ドライバインストールするようです。

Adaptec SCSI Card ドライバインストール状況について

当時はまったの・・・。状況としては、”PowerEdge 1860”にSCSI HDD”Excella 104 ”を増設する。

Excella 104 設定

基本は購入した時の設定でOKです。デフォルトだとSCSI IDが”5”(たしか)に設定されている筈です。他のSCSI IDと競合さえしなければ、問題ない筈です。

  1. ”PowerEdge 1860”の電源をONにします。※このとき”Excella 104 ”の電源はOFF状態
  2. BIOSが立ち上がり、SCSI SCAN が開始されます。”Adaptec”のSCSI SCANが開始されたら、”Ctrl”+”A”を押下します。
  3. ”Excella 104”の電源をONにし、SCSI SCANを開始してみて下さい。SCSI ID ”5”で引っかかる筈。
  4. 認識されたら”Esc”してOS立ち上げの再開をして下さい。
    • こうしないと認識されませんでした。ショック療法?

Adaptec SCSI Card ドライバインストール

今回追加したSCSIデバイスファイルは”sdb”とします。

# ls -l /dev/sdb*
#

ない・・・。

# /sbin/lsmod



megaraid_mbox          36880  0
megaraid_mm            15780  1 megaraid_mbox
mptscsih               36605  0
mptbase                47329  1 mptscsih
sd_mod                 20545  4
scsi_mod              116557  5 sg,megaraid_mbox,mptscsih,sd_mod
  • Adaptecのドライバ(aic7xxx)が入っていないようす。

# /sbin/modprobe aic7xxx

  • modprobe コマンドはドライバ読み込み&削除が出来るコマンドです。

# /sbin/lsmod



megaraid_mbox          36880  0
megaraid_mm            15780  1 megaraid_mbox
mptscsih               36605  0
mptbase                47329  1 mptscsih
sd_mod                 20545  4
scsi_mod              116557  5 aic7xxx,sg,megaraid_mbox,mptscsih,sd_mod

# ls -l /dev/sdb*
brw-rw----  1 root disk 8, 16 12月 21 08:55 /dev/sdb

でてきた。パーティション設定はいずれ説明します。

備考

再起動すると、またドライバが読み込まれない状態になり、”Excella 104 ”が認識されなくなります。なので”fstab”とかの設定ができないので結構めんどいです。何か良い方法があるんだろうなぁ・・・。

| | コメント (0) | トラックバック (0)

« 2007年12月 | トップページ | 2008年2月 »