2007 2 月 | 英太郎の鯖缶

アーカイブ: 2007年02月

Linuxで文字コード一括変換

2007年02月21日

ソースコードの文字コードや改行コードを一括で変換したい場合、以下のようにすると簡単です。

※実行はバックアップを取ってから行いましょう!

実行したいフォルダに移動後、

find . -name "*.php" -print0 | xargs -0 nkf -w -Lu --overwrite

これで全てUTF8に変換、改行コードがLFになります。
NKFについてはhttp://www.ksknet.net/linux/nkf_204.htmlを参考にしました。
オプションで変換したい文字コードを変更したりできます。詳しくはmanなどを参考にしてくださいね。

サーバーの生存確認をする

2007年02月18日

常時稼動するサーバーの生存確認をしたい場合、ping などを使用し、cronで実行させます。

※サービスの生存確認を行うことも出来ますが、ここでは単純にpingでのチェックの方法を紹介します。

# vi /root/checkalive.pl

#!/usr/bin/perl
# サーバーの生存チェック
use Net::Ping;

## 送信先メールアドレス
$to = 'あなたのメールアドレス';
## sendmailのパス
$sendmail = '/usr/sbin/sendmail';
## チェックするホスト一覧
@host = (
"192.168.1.1",  # チェックしたいサーバーのIPアドレスのリスト
"192.168.1.2",  #
);
## timeout
$timeout = 0.1;
## ホストネーム取得
($hostname) = gethostbyaddr(pack('C4', 127,0,0,1), 2);
## subject
$subject = "[$hostname] alive checker.";
## from
$from = "$ENV{'USER'}\@$hostname";

## routine
@notalive = ();
$pObj = Net::Ping->new("icmp");

## 生存チェック
foreach $host (@host) {
if(! $pObj->ping($host, $timeout)) {
push @noalive, $host;
}
}
$pObj->close();
## リストが無ければ終了
exit if (! @noalive);
# メッセージ作成
$noalive = join "\n", @noalive;
$msg = << "___EOM"; # メールの本文(ヒアドキュメントで変数に代入)
### dead list
$noalive
___EOM

# sendmail コマンド起動
open (MAIL, "| $sendmail -t -i") || die 'sendmail error';
# メールヘッダ出力
print MAIL "From: $from\n";
print MAIL "To: $to\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-Type: text/plain;\n\n";
# メール本文出力
print MAIL "$msg";
# sendmail コマンド閉じる
close (MAIL);

exit;

# chmod +x checkalive.pl

以上のファイルを作成、修正したら実行属性をつけてテストしてください。最初は存在しないリストを追加し、コマンドラインでチェック、動作確認後再度修正して crontab に追加してください。

5分毎にチェックする場合

# crontab -e

*/5 * * * * /root/checkalive.pl

サーバーが停止してしまっている場合、5分毎にエラーメールが送信されてきます。また、実行するサーバーが落ちていると意味が無いので、同じ設定で複数台設定することが望まれます。

※経路が落ちていると結局メールが届かないですが、分からないよりは…

samba3.0でNFSマウントされたフォルダを使う

2007年02月18日

以前sambaを更新したとき、Windows2000側からファイルのコピーが出来なくなる問題があり、問題解決には至っておりませんでした。

サーバーの更新に伴い、仮想サーバーの作り直しなどを行っていたのですが、ついでに色々調べた結果、サーバー側のファイルロック関連であることが判明しました。

# vi /etc/samba/smb.conf

[global]
kernel oplocks = no ===> 追加する

以上の設定をしてsambaを再起動することにより、NFSマウントされたフォルダへのコピーが問題なく実行されるようになりました。

iSCSI-Target for Kernel 2.6.19

2007年02月16日

Fedoracore5のKernel2.6.19で、iSCSI-Targetがコンパイルできませんでした。

色々あちこち調べてみたのですが、中々情報を得られずちょっとあきらめかけていたところ、開発版のチェックアウトをすることで動くことがわかりました。

$ /usr/bin/svn co svn://svn.berlios.de/iscsitarget/trunk iscsitarget

で、最新のソースを取得しコンパイルすることで、動かすことができます。

※svnが入っていない場合は、

# yum -y install subversion

でインストールして置いてください。

ソースを入手したら、

$ make
$ su -
# make install

でインストールできます。

iSCSI-Target

2007年02月14日

Fedoracore5でのiSCSI-Targetのインストールと設定。
http://sourceforge.net/projects/iscsitarget/から、iSCSI Enterprize Target をダウンロード、インストールします。

# tar zxvf iscsitarget-0.4.14.tar.gz
# cd cd iscsitarget-0.4.14/
# make
# make install

コンパイル環境やカーネルソースは事前にインストールしてあるものとします。
参考:

# yum install kernel-xen0-devel openssl-devel gcc

動作設定用の ietd.conf を /etc にコピーします。

# cp etc/ietd.conf /etc

iSCSI用のボリュームを切り出し、設定ファイルを変更します。

# lvcreate -L4G -n storage-iscsi VolGroup00 ===>VolGroup00 に storage-iscsi という名前のボリュームを4G作成します。
# mkfs.xfs /dev/VolGroup00/storage-iscsi ===>xfsファイルシステムでフォーマットします。ext3ファイルシステムの場合は mkfs.ext3コマンドで。
# vi /etc/ietd.conf ===>設定ファイルを修正します。

Target iqn.2007-02.com.cpmstaff.base7:storage.iscsi
Lun 0 Path=/dev/VolGroup00/torage-iscsi,Type=fileio
Alias iscsi
# Target iqn.<作成年月>.<リバースドメインネーム>:<識別子>
# Lun 0 Path=<デバイスへのパス>,Type=fileio
# Alias <エイリアスネーム>
# 複数作成すれば複数公開されます。

iscsi-target をスタートさせます。

# service iscsi-target start ===>iSCSI-Targetデーモンをスタート。
# chkconfig iscsi-target on ===> ISCSI-Targetデーモンを自動起動させる。

公開されているiSCSI-Targetを確認するには、

# cat /proc/net/iet/volume

で確認できます。

RTX1000の設置、設定

2007年02月14日

アクセス数の増大などの影響で、ルーターがたまにおかしくなったりするため、ルーターの変更作業を行いました。

RTX1000という、YAMAHAの有名なルーターですが、業務用ということもあり、設定が難解です。また、以前使用していたルーターはグローバルアドレスで内部サーバーへポートフォワード?するタイプだったため、今までは外向けDNSサーバーで公開サービスにアクセスできていたのですが、内側向けのDNSの設定作業などもありました。

開放するポートは出来るだけ少なく、さらに公開サーバーを隠匿するため結構面倒な設定になってしまいましたが、特に問題が出ないようであればしばらく運用してみて、設定を公開してみたいと思います。PPPoEで複数のセッションを取得し、各セッションごとに公開サーバーを設定したりしているので、PPPoEマルチセッションの設定をしたい人がいればちょっと参考になるかも。

Xenでのライブマイグレーションを有効にする

2007年02月09日

Xen上での仮想サーバーは、サーバーイメージを共有ディスクに作成してあれば動的に仮想サーバーが稼動するマシンを切り替えることが出来ます。

移動元

# vi /etc/xen/xend-config.sxp

(xend-relocation-server yes)

(xend-relocation-port 8002)

(xend-relocation-hosts-allow '')

「/etc/xen/xend-config.sxp」ファイルを編集し、「xend」をリスタートさせれば準備は完了です。

※移動元と移動先のCPUが違うと失敗することがあるようですので注意してください。

設定が完了すれば、ライブマイグレーションを行えます。

移動したい仮想サーバーが稼動しているマシンから、


# xm migrate --live <移動したい仮想マシン名> <移動先のIPアドレス>

で、仮想マシンがサーバーを移動します。

ストレージサーバーさえしっかりしたものを運用してあれば、サービスを止めることなくサーバーのメンテナンスを行うことが出来るため、しっかりテストして運用していこうと思います。

悲しきHDD

2007年02月09日

今まで幾度となくサーバー停止の憂い目に会いましたが、全ての元凶(とかってに思う)HDDがようやくお役ごめんとなりました。

初期からなんとなーくやな感じで使ってきた Maxtro 6Y120MO(計3台)、なんかやたら発熱するのです。サーバーに良くない環境での運用とはいえ、他のHDDより明らかに熱い。ファンで冷却はしていたのですが、ファンが不調になるととたんにやばい状況になったりしてました。

今回の不具合の一端もやっぱりファンの不調だったのですが、なんとかなるかなーとかいう甘い見込みで普及作業が滅茶苦茶大変になってしまったわけです。

ちゃんと冷やしておけば特に問題なさげですが、やっぱり常時稼動するシステムにはちょっと過酷だったのでしょうか。まぁSAS使えという突っ込みは聞きません!まだそこまでお金をかけて運用する段階までいってないので。やっとまともにご飯くらいは食べれるようになったかなってところですね(汗

サーバー故障です

2007年02月09日

残念ながら新しいサーバーが届く前に完全に停止してしまいました。

あとほんのちょっと持ってくれればよかったのですが、止まったものは仕方がありません。全力でファイルのサルベージと復旧です。

約8時間の徹夜作業でなんとか仮復旧できましたが、やっぱり遅いです。

ネタも思いつかないくらい疲れたので、まとめは後でまた書くことにします。

ストレージサーバー構築

2007年02月07日

注文していたHDDが到着したので、早速ストレージサーバーの構築にとりかかる。

今回の構成としては、シンプルかつメンテナンス性もよくなるように構成を考えてみました。

OSはFC5あたり(賛否両論あるでしょうが、特に問題も出ないので愛用)で構築。FC5のブートイメージをUSBに焼きこんで、USBからインストール開始します。

HDDは同じ容量のものを2基用意し、RAID1構成です。

最初のパーテーションは /boot 用とし、100M程度の割り当て。
次のパーテーションは最大容量でLVMを作成し、SWAPパーテーションと、ルートパーテーションを作成(それぞれ2G程度と10G程度)。残りは後でサービス領域の割り当てとして使う予定。

http://tama-studio.com/xhnewbb+viewtopic.topic_id+118+forum+3+post_id+131.htm
細かい設定などは、こちらで説明されていますので見てみるといいかもです。

インストール完了したらそれぞれのHDDからの起動を確認し、運用のための設定をします。

このシステムでのサービスは、NFSとiSCSIを運用予定です。また、一時的に他の仮想サーバーの肩代わりをさせるときのため、Xenカーネルを動かしておきます。

以前の記事