仮想化ソフトウェアの「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の共有ストレージを利用した仮想化環境は図1のような構成になります。
このうち「iSCSIイニシエータ」とは、iSCSIへの接続元となるクライアントです。この記事ではiSCSIイニシエータとして「Open-iSCSI」をXenのホストサーバに実装してiSCSIに接続します。
「iSCSIターゲット」とは、イニシエータが接続するストレージのことです。本記事ではストレージ専用機を使用していますが、サーバにiSCSIターゲットソフトウェアを実装することで、iSCSIストレージを提供することも可能です。
それでは、実際のiSCSI構成のセットアップ手順について解説していきたいと思います。
iSCSIに接続するために「Open-iSCSI」というオープンソースのiSCSIイニシエータを使用します。
今回は執筆時の最新版である「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を起動するには、以下のコマンドを実行します。
# 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ストレージの共有化ができます。
Copyright © ITmedia, Inc. All Rights Reserved.