雲の上はいつも青空 -31ページ目

雲の上はいつも青空

不思議な経歴をもつエンジニア!?の徒然なブログです。
お仕事関係の話が多いと思いますが、コメントとかもらえると中の人はとても喜びます(^O^)/

新しいIP電話のインプレッションです。
今回は、中国のAtcom社製AT-530という機種です。

$雲の上はいつも青空-箱今日DHL便で中国から届きました。
まず箱からして怪しいです(苦笑)
High Performance Ethernet Phoneとしか書かれていませんし、製品名・型番やメーカー名等も一切表記がありません。
唯一、シリアルナンバーの表記はありました。
※OEM用の商品なのかもしれません…
※電話機本体にも型番やメーカー名も何も書いてありません。

中身の電話機本体ですが、これもまた不思議なデザインです。
液晶パネルを覆うカバーと、メモリーキーのカバーが波々していて、まったく必然性ないデザインで好き嫌いは別としても頭をひねります。

問題はボタンの配置と、大きさ・形状です。
ボタン自体は、テンキー・メモリーキー・ファンクションキー・液晶の隣と、大きく4つのブロックに別れ、ファンクションキーは丸ボタンと、楕円ボタンのさらに2つのブロックに分かれます。

雲の上はいつも青空-AT530-1このブロック分けと、操作における指の動線がめちゃくちゃで、慣れないと非常に使い辛く感じます。

…と書くと、なにやらけなしているようですが、値段(1万円以下)を考えるとコストパフォーマンスは悪くないと思います。
音質も、インフィニオンのVoIP用のチップを使っているようで、音質に関してはとても良いと思います。
※IP電話につきものの、エコーや変な環境ノイズっぽいものもまったくありません。

しかし、不思議な機能がいっぱいです。
IP電話機なのに、なぜかルータ機能が搭載されており、PPPoE等で直接インターネットへ接続ができます。
もちろんファイアーウォールの機能や、LAN側のDHCPサーバ機能、L2TP等のVPN接続機能 等々、これでもか! というほど、不思議機能が満載です。
※たしかに、ルータ代わりにIP電話というコンセプトは斬新ではありますが…
※IAX2のプロトコルが使えるのは◎です。

普通のIP電話として使うには、WAN側はDHCPクライアントに設定し、LAN側にはブリッジ接続にして同一セグメントでつなぐようにするのが一般的でしょう。

ただ、保留ボタンを押して受話器を置くと回線が切れてしまうという仕様は正直理解できません(苦笑)。
この辺はファームウェアでどうにでもなる部分ですから、これからのバージョンアップに期待します。

個人宅で一台でIP電話を使うのであれば、こういう製品もありかもしれません。
※Webサイトを見る限り、ビジネス用って書いてありますが… 謎!?
前頁でiSCSIの接続がうまくいったので、今回はXen環境の移行とiSCSI論理ドライブの自動マウントについて書いてみます。
私が構築したテスト環境では、複数のイニシエーターが単一のターゲットへ接続するという形態なので、本来、排他制御の関係からもなんらかのクラスター系のミドルウェアが必要となります。
しかし、今回検証を行った環境下では、通常のiSCSI接続を用いても、いまのところ問題はおきていませんので、排他制御についてページを改めて書こうと思っています。


まずは稼動している仮想サーバを停止します。
これは、xm shutdown サーバ名 になります。

xm list で、すべての仮想サーバが停止していること確認したら、/home/xen/domeins以下に展開されている仮想サーバのディスクイメージを、iSCSIの論理ドライブへコピーします。
/mnt/iscsi にマウントされていると仮定すると、cp -r /home/xen/domains /mnt/iscsi で、すべてのイメージがコピーされます。

次にトラブルがあった時の為に、今コピーした内容をバックアップします。
任意のディレクトリーへ仮想サーバのディスクイメージをコピーしましたら、/home/xen/domains以下はすべて削除します。
cd /home/xen/domains
rm -Rf *

それでは、iSCSIの論理ドライブをいったんアンマウントして、/home/xenにマウントすることにします。
umount /dev/sdc1   ←iSCSIの論理ドライブと仮定
mount /dev/sdc1 /home/xen

ls /home/xen/domains で、仮想サーバ用のディレクトリーが見えることを確認してから、xm create コマンドで、仮想サーバを起動します。
※各サーバが立ち上がったら、正常に起動したかどうかそれぞれのサーバにログインして確認してみてください。


このままでは、Domain-0(Xenホスト機)を再起動すると、マウントが外れてしまうので、/etc/fstabを編集します。

fstabの編集するときの注意点です。
・マウントするドライブ名は、論理ドライブ名をつかわずUUIDを使うこと。
・マウントオプションは、_netdev を指定する。

論理ドライブ名は、固定されたものではなく、状況によって変わってしまうので、一意に指定できるUUIDで書くようにすると良いです。

UUIDの調べ方…
・まずiSCSIとして接続されている状態で、fdisk -l を実行しその時点での論理ドライブ名を確認する。
ls -l /dev/disk/by-uuid/ を実行すると、ドライブ名毎にUUIDが表示される。

次に_netdevというマウントオプションですが、この設定にするとネットワーク関連の設定完了を待ってから、マウント動作を実行するよう、マウントを待たせるオプションです。
※通常は、INIT処理の最初で一気にマウント処理が実行されます。

ですので、fstabの設定はこんなかんじになります。
UUID=8a24c3e5-9a8f-4325-9786-353c19ecfca7 /home/xen ext3 _netdev 0 0


以上の設定で、再起動時に自動的にマウントする筈なのですが、私のテスト環境では問題がでました。
毎回ではないのですが、再起動時にマウントできない時がたまにあるという、いやらしい障害です。
しかも、再現性がなく設定をいろいろ変更してみてもあまり効果がありませんでした。
これには三日ほど苦しみましたが、以下の設定変更で障害はおさまりました。

きっかけは、自動的にiSCSIにログオンするスクリプトを作った時にありました。
ログオフして再度ログオンしたりと、テスト中は頻繁に行ったので、以下の簡単なスクリプトを作りました。
#!/bin/sh
iscsiadm -m discovery -t st -p 192.168.0.155
iscsiadm -m node -p 192.168.0.155 -l

これに、先ほど書いたUUIDを表示するスクリプトを追加すると…
#!/bin/sh
iscsiadm -m discovery -t st -p 192.168.0.155
iscsiadm -m node -p 192.168.0.155 -l
ls -l /dev/disk/by-uuid/
この一行追加したスクリプトを実行すると、ログインしている筈のiSCSIの論理ディスク名が見えません!
あれ? っと思い、マニュアルでls -l /dev/disk/by-uuid/を実行すると、今度はちゃんと見えます。

もう一度、iscsiadm -m node -p 192.168.0.155 -u で一度ログオフして、再度スクリプトを実行してみても同じです。実行後に手入力すると見えるので、sleepを入れてすこし待ってみることにしました。
#!/bin/sh
iscsiadm -m discovery -t st -p 192.168.0.155
iscsiadm -m node -p 192.168.0.155 -l
sleep 3
ls -l /dev/disk/by-uuid/
今度は大丈夫! ちゃんとスクリプトを実行させてもiSCSIの論理ドライブのUUIDが表示されます。

↑↑↑↑↑↑↑↑↑↑↑↑
このスクリプトを思い出し、もしやと思いながら、open-iscsiの起動スクリプトにちょっと待ちを入れてみることにしました。

元の/etc/init.d/open-iscsi にある起動スクリプトです。
starttargets() {
log_daemon_msg "Setting up iSCSI targets"
echo
$ADM -m node --loginall=automatic
log_end_msg 0
}
この起動部分の前後に5秒(たぶん3秒で十分)ほどsleepを入れました。
starttargets() {
log_daemon_msg "Setting up iSCSI targets"
echo
sleep 5
$ADM -m node --loginall=automatic
sleep 5
log_end_msg 0
}

■この変更で、サーバの起動時にiSCSIの論理ドライブのマウント失敗という障害は、ピタッとおさまりました。
Lenny上に構築したXen環境でiSCSIを動かしてみました。
手順さえわかってしまえば、安定して動作をさせる事が可能ですが、実際にやってみると色々知らない事が多くて、ネットで情報を集めても結局最後は自分で試行錯誤が必要です。
※単に思いつきでやってもダメで、系統だった論理的推論は要求されますね(苦笑)


今回の検証に使った環境(サーバ構成)を書いてみます。
1.iSCSIターゲット機:ストレージ本体になります。    マシン名:kitty
  192.168.0.155  ASUS ITX-220, Celeron 220 1.2GHz, memory 2G
          HDD HDT721025SLA380 (250GB)
          Debian GNU Linux 5.0 Lenny
          kernel 2.6.26-2-686, iscsitarget 0.4.16+svn162-3
          RTL8169 Gigabit Ethernet(怪しい… でもちゃんと動いているww)

2.Xen環境、Domain-0:検証用Xenマシン1号機       マシン名:poporon
  192.168.0.154  ZOTAC nForce630i-ITX, Core2Duo E7400 2.8GHz, memory 4G
          HDD WD10EADS-00L (1TB)
          Debian GNU Linux 5.0 Lenny
          kernel 2.6.26-2-686, open-iscsi 2.0.870~rc3-0.4
          Marvel Yukon 88E8053 Gigabit Ethernet

3.Xen環境、Domain-0:検証用Xenマシン2号機       マシン名:aster
  192.168.0.5   EPSON NP-11v, ATOM 230 1.6GHz, memory 1G
          HDD ST9160310AS (160GB)
          Debian GNU Linux 5.0 Lenny
          kernel 2.6.26-2-686, open-iscsi 2.0.870~rc3-0.4
          RTL8168B Gigabit Ethernet
※このNP-11vにLennyをインストールするには注意が必要です。
普通にインストールするとNICを誤認識して、動作が不安定になります。
やり方はいろいろあるようですが、私はまずUSBタイプのLANアダプターを接続してインストールして、それからNICのドライバーをダウンドロードして組み込みました。

○使ったUSB接続のLANアダプター:CG-FEUSBTXCW USB1.1仕様なのでしょぼいですww
○NICドライバーの組み込み方は、ここを参考にしました。
丁寧な文章で、とっても助かりました。neetseさん、ありがとうございます!
※Xen環境を構築する時は、当然kernelが変わるので、ドライバーの再組み込みが必要です。
そのときは、xenカーネル用のkernel headerをインストールするのを忘れずに~!
※私はこれで数時間悩みました(苦笑)


ちょっと、前段の話が長くなりましたが、ここからイニシエーターの組み込みと設定の話です。
順番的には…

1.open-iscsiのインストールと設定
2.既存のXen環境への組み込み
3.動作確認及び、ライブマイグレーションのテスト
4.排他制御に関する考察


1.open-iscsiのインストールと設定
Debianパッケージでは、このopen-iscsiがiSCSIのイニシエーターとなります。
aptitude install open-iscsi
で、サクッとインストールできます。

設定に入ります。
まずは /etc/iscsi/iscsi.conf を変更します。
targetの設定で、認証等の設定をしていなければ、この3行が設定されていればOKです。
isns.address = 192.168.0.155  ←Targetが動いているサーバのIPアドレス
isns.port = 3205
node.startup = automatic


次に、/etc/iscsi/initiatorname.iscsi を変更します。
※これは、iSCSI上でのイニシエーターの名前です。 Target機でどこから接続されているか調べた時に、ここで設定した名前が表示される。
InitiatorName=iqn.2009-10.jp.it-tutor:aster   ←わかりやすい名前であればOK!
注)=(イコール)の前後にスペース or TAB等を入れないこと!

それでは、実際にTargetが動いているサーバに接続し、iSCSIで論理ドライブを作成します。

【ターゲット名確認コマンド】
iscsiadm -m discovery -t st -p 192.168.0.155
このコマンドで、公開されているターゲット名が表示されます。

【ログインコマンド】
iscsiadm -m node -p 192.168.0.155 -l
公開されているターゲットを一気に全部(複数あっても)に対して接続(ログイン)します。
※もちろん、ターゲット名を指定して個別にログインも可能です。

【設定ファイル変更コマンド】
iscsiadm -m node -p 192.168.0.155 --op update -n node.conn[0].startup -v automatic
ログインコマンドを実行すると、自動的に /etc/iscsi/node に設定ファイルが作られます。
その設定ファイルに対して、再起動したときに自動的にログインするよう設定を変更するコマンドです。
※実際には、node.conn[0].startup = automatic と、設定を変更します。デフォルトは、node.conn[0].startup = manual
※再度ログインコマンドを実行した場合には設定ファイルがデフォルトへ戻ってしまうので、必ずこの自動起動への変更コマンドも実行する必要があります。

さて、これまでの操作に誤りがなければ、fdisk -l で新しい論理ドライブが見えるはずです。
※一番最初にこのドライブを使うときは、フォーマットされていないので初期化が必要です。
※例:fdisk /dev/sdc で、パーティションを一つ作ります。
 それから、mkfs.ext3 /dev/sdc1 で、初期化をします。

初期化が終了したら、
mkdir /mnt/iscsi
mount /dev/sdc1 /mnt/iscsi
  ←iSCSIのドライブが /dev/sdc1 と仮定します。
問題なくマウントできたら、ひとまず設定は終了です。

【重要】恒常的に使うには、この後にfstabを編集して起動時に自動的にiSCSIボリュームをマウントする必要があります。 この設定については後述します。

■長くなってきたので、今日はここまでにします。