連載
» 2008年07月02日 00時00分 公開

続・実践! Xenで実現するサーバ統合(2):iSCSIを用いた仮想化環境の構築手順 (1/3)

仮想化ソフトウェアの「Xen」を用いてサーバを統合するのはいいけれど、肝心のデータやアプリケーションを格納するストレージはどのように配置するのが最も効果的でしょうか? 続編では仮想化とストレージの効果的な活用にフォーカスを当てていきます(編集部)

[黒木大祐,株式会社アルク]

 前回「切っても切れない仮想化とストレージの関係」では、仮想化とストレージの関係、そして仮想マシンを配置するストレージの構成について説明しました。今回はiSCSIのストレージを複数のホストサーバで共有し、その上で仮想マシンを稼働させる手順について解説したいと思います。

 なお、Xenのホストとして同一スペックのマシンを使用し、OSはCentOS 5.1をベースとして話を進めます。

【関連記事】

http://www.atmarkit.co.jp/flinux/special/xen01/xen01.html
仮想化技術の大本命「Xen」を使ってみよう 〜 インストール & Debian環境構築編 〜

http://www.atmarkit.co.jp/flinux/special/xen02/xen01.html
仮想化技術の大本命「Xen」を使ってみよう 〜 Xen対応カスタムカーネル構築編 〜http://www.atmarkit.co.jp/flinux/index/indexfiles/xenindex.html
連載:実践! Xenで実現するサーバ統合


iSCSI構成での仮想化環境の構築

 iSCSIの共有ストレージを利用した仮想化環境は図1のような構成になります。

図1 iSCSIのネットワーク構成 図1 iSCSIのネットワーク構成

 このうち「iSCSIイニシエータ」とは、iSCSIへの接続元となるクライアントです。この記事ではiSCSIイニシエータとして「Open-iSCSI」をXenのホストサーバに実装してiSCSIに接続します。

 「iSCSIターゲット」とは、イニシエータが接続するストレージのことです。本記事ではストレージ専用機を使用していますが、サーバにiSCSIターゲットソフトウェアを実装することで、iSCSIストレージを提供することも可能です。

 それでは、実際のiSCSI構成のセットアップ手順について解説していきたいと思います。

Open-iSCSIの入手からインストールまで

 iSCSIに接続するために「Open-iSCSI」というオープンソースのiSCSIイニシエータを使用します。

関連リンク:

Open-iSCSIプロジェクト
http://www.open-iscsi.org/


 今回は執筆時の最新版である「open-iscsi-2.0-869.2」をOpen-iSCSIプロジェクトのサイトからダウンロードします。ホストサーバの任意のディレクトリから、wgetコマンドでダウンロードし、tarボールを展開します。

# wget http://www.open-iscsi.org/bits/open-iscsi-2.0-869.2.tar.gz
# tar xvzf open-iscsi-2.0-869.2.tar.gz
# cd open-iscsi-2.0-869.2

 次に、コンパイルを行います。コンパイルにはLinuxカーネルのヘッダファイルが必要になります。makeコマンドに使用しているカーネルソースの場所を指定して実行します。なお、CentOSの開発ツール、開発ライブラリのパッケージセットはインストール済みであることが前提となります。

# make KSRC=/usr/src/kernels/2.6.18-53.1.19.el5-xen-x86_64

 コンパイルが成功すると、以下のように出力されます。

Compilation complete                              Output file
----------------------------------- ----------------
Built iSCSI Open Interface module:  kernel/scsi_transport_iscsi.ko
Built iSCSI library module:         kernel/libiscsi.ko
Built iSCSI over TCP kernel module: kernel/iscsi_tcp.ko
Built iSCSI daemon:                 usr/iscsid
Built management application:       usr/iscsiadmRead README file for detailed information.

 次に、先ほどのmakeコマンドにinstallを付け加え、バイナリをインストールします。

# make KSRC=/usr/src/kernels/2.6.18-53.1.19.el5-xen-x86_64 \ install
……
(中略)
……
***************************************************
Setting InitiatorName to InitiatorName=iqn.2005-03.org.open-iscsi:cdbe3547eb2
To override edit /etc/iscsi/initiatorname.iscsi
***************************************************
install -d /etc/iscsi/ifaces
install -m 644 etc/iface.example /etc/iscsi/ifaces

 インストールが成功すると、上記のように出力されます。このホストのイニシエータ名が「iqn.2005-03.org.open-iscsi:cdbe3547eb2」であることが分かります。

 次に、depmodを実行してカーネルモジュールの依存関係を解決します。

# depmod -aq

 ここまでがインストール作業になります。続いてOpen-iSCSIを起動し、ストレージに接続してみます。

Open-iSCSIの起動とターゲットへの接続

 Open-iSCSIを起動するには、以下のコマンドを実行します。

# service open-iscsi start

 これでOpen-iSCSIが起動できました。次は、iscsiadmコマンドを使ってターゲットへ接続します。

 iSCSIでは、接続する際に「IQN(iSCSI Qualified Name)」を指定する必要があります。IQNとは、イニシエータやターゲットを一意に識別するための名前のことです。つまり、iSCSIストレージに接続するには、ターゲットIQNを知っている必要があるということです。

 そこで、iscsiadmコマンドのdiscoveryモードを使います。discoveryモードでは、ターゲットのIPアドレスを指定して実行することで、ターゲットIQNを得ることができます。

# iscsiadm -m discovery -t sendtargets -p 172.20.192.24
172.20.192.24:3260,1 iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000

 出力結果から、ターゲットIQNが「iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000」であることが分かりました。ここでiscsiadmのオプションについて少し説明しておきましょう。なお、詳細についてはmanページを参照してください。

オプション 内容
-m, --mode モード。discovery/node/fw/sessionのいずれかを指定します
-t, --type Disoveryモードのタイプ。通常はsendtargetsを指定します
-p, --portal IPアドレスとポートを指定します。ポートのデフォルト値は3260です
-T, --targetname ターゲットIQNを指定します
-l, --login ターゲットにログインします
-u, --logout ターゲットからログアウトします
表1 scsiadmのオプション

 それでは、ターゲットIQNを指定してログインしてみます。

# iscsiadm -m node -T  \
iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000 -l
Logging in to [iface: default, target:
iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000, portal: 172.20.192.24,3260]
Login to [iface: default, target:
iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000, portal: 172.20.192.24,3260]:
successful

 ログインすることができました。fdiskコマンドで確認してみます。

# fdisk -l
(中略)
Disk /dev/sda: 59.0 GB, 59055800320 bytes
64 heads, 32 sectors/track, 56320 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sda は正常な領域テーブルを含んでいません

 ローカルディスクとは別に、新しくSCSIデバイス/dev/sdaが追加されました。ここまでくれば、あとはローカルのSCSIデバイスと同様に扱うことができます。

 でも、これで終わりではありません。このままではホストを再起動したときにターゲットに接続されないので、起動時に自動的に接続できるように設定を追加します。まず、Open-iSCSIがOS起動時に起動されるようにしておきます。

# chkconfig open-iscsi on

 次に、ターゲットに自動的にログインするように設定します。以下のように一度ログインしたターゲットの設定ファイルが作成されています。

# cd /etc/iscsi/nodes
# cd iqn.1994-04.jp.co.hitachi:rsd.d7h.t.11799.1b000
# cd 172.20.192.24,3260,1
# vi default

 この「default」ファイルの「node.startup = manual」を、以下のように変更します。

node.startup = automatic

 これで再起動後も自動的にiSCSIに接続されるようになりました。

 以上の手順について、ホストサーバAとBの両方で実施することで、iSCSIストレージの共有化ができます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。