2016年6月19日日曜日

iSCSIを利用しようその4

KVMを色々検証していく過程で、どうしてもある程度のディスク容量を確保しておく必要がある。

iSCSI関連のブログで、暫定的に10GBのiSCSI領域を確保し、そのうち5GBを使ってファイルシステムを作っておいた。
それをKVMの検証の初期に利用したいと思っているのだが、OSを再起動する度にiSCSIとのセッションが切れて、毎回コマンドでiSCSIターゲットにログインしないといけない。
これではメンドクサイので、まずはOS起動時に自動的にiSCSIターゲットにログインし、ファイルシステムのマウントまで行われるように設定しておこう。

今は、OS再起動によってiSCSIターゲットにログインしていない状態とする。

まずは、OS起動時に自動的にiSCSIターゲットにログインする方法だ。
iscsiadmのマニュアル(man iscsiadm)を読んでみよう。
-L, --loginallのオプションに、[all|manual|automatic]という記載がある。これのような気がする。
-Lや--loginallのオプションは、-m nodeオプションと組み合わせて使用することになっているようだ。
iscsiadm -m node [ -hV ] [ -d debug_level ] [  -P  printlevel  ]  [  -L
all,manual,automatic  ]  [ -U all,manual,automatic ] [ -S ] [ [ -T tar‐
getname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ]
[ -n name ] [ -v value ] [ -p ip:port ] ]

更に、man iscsiadmの下の方の「FILES」という部分に関連するファイルが記載されているのだが、そこを見ると以下のエントリがある。
/etc/iscsi/iscsid.conf
The configuration file read by iscsid and iscsiadm on startup.

/etc/iscsi/initiatorname.iscsi
The file containing the iSCSI InitiatorName  and  InitiatorAlias
read by iscsid and iscsiadm on startup.

/etc/iscsi/nodes/
This directory contains the nodes with their targets.

/etc/iscsi/send_targets
This directory contains the portals.

この中で、/etc/iscsi/nodes/ の下の方を覗いてみると…。
$ sudo ls -alR /etc/iscsi/nodes
以下のようなディレクトリ・ファイル構造になっているのが分かる。
/etc/iscsi/nodes
└(iSCSIターゲットのIQN名)/
 └(iSCSIターゲットのIPアドレス,ポートNo,シーケンス番号)/
  └default

このdefaultというファイルを見てみると、ノード(iSCSIターゲット)に対する設定情報が分かる。
$ sudo cat /etc/iscsi/nodes/(iSCSIターゲットのIQN名)/(iSCSIターゲットのIPアドレス,ポートNo,シーケンス番号)/default
--ここから--
# BEGIN RECORD x.x-xxx
--一部省略--
node.tpgt = 1
node.startup = manual
node.leading_login = No
--一部省略--
# END RECORD
--ここまで--

この、node.startup = manual という設定、iscsiadm-Lオプションである、[all|manual|automatic]に並びそうだ。
ということは、この default ファイルの node.startup = manual を、node.startup = automatic に書き換えればいいような気もする。

で、書き換え方法だが、どうも直接viで編集、というタイプでは無く、iscsiadmコマンドで書き換えるタイプのようだ。
書き換え方は、以下の通り
iscsiadm -m node -T (iSCSIターゲットのIQN名) -p (iSCSIターゲットのIPアドレス):(ポート番号) --op=update --name=(書き換えたいパラメータの名前) --value=(書き換え後の値)
多分、-pオプションは不要な気がする。

以下のようにコマンドを実行してみよう。
$ sudo iscsiadm -m node -T (iSCSIターゲットのIQN名) --op=update --name=node.startup --value=automatic

これで、先ほどの default ファイルを見てみると、見事に node.startup の値が automatic に書き換わったのが確認できる。

これで自動的にiSCSIへログインしてくれるのか、OS再起動して確認してみよう。
$ sudo shutdown -r now

再度ログインしたら、lsblkで見てみる。
$ lsblk
なんと、/dev/sdbだけじゃなく、その下の/dev/sdb1、それを用いたVG(vg-test)やLV(lv-test1)も認識出来ている。

後は、これを起動時にマウントするようにすればいい。

マウントポイントは今はあくまで暫定なので、自分のホームディレクトリに iscsivol というディレクトリでも作って、そこにマウントするようにしよう。
マウントポイントの作成と、手動マウント
$ cd
$ mkdir iscsivol
$ sudo mount /dev/vg-test/lv-test1 iscsivol
$ id
$ sudo chown (自分のユーザ名):(自分のグループ名) iscsivol
$ ls -ld iscsivol
$ df iscsivol
$ grep iscsivol /etc/mtab

マウント出来るのが確認できたら、/etc/fstabに書き加えて、OS起動時にもマウントされるようにしよう。

$ sudo vi /etc/fstab
--以下の行を追記--
/dev/mapper/vg--test-lv--test1 /home/(自分のユーザ名)/iscsivol ext4 _netdev 0 0
--ココまで

OSがブートする時の順番は、/etc/fstab でのエントリからファイルシステムのマウントをした後、ネットワークが立ち上がる。
ところが、iSCSI や NFS のマウント情報を /etc/fstab に記載しておくと、ネットワークの設定が終わらないうちにネットワーク先のファイルシステムをマウントしないといけない、という矛盾が発生する。
そのため、/etc/fstab の4番目のフィールドに _netdev オプションを記載しておく。これによって、ネットワーク設定が完了するまでマウントを遅延させることが出来る。

一旦アンマウントして、fstabに沿ってマウントされるか確認してみよう。
$ cd
$ sudo umount iscsivol
$ df iscsivol
$ cat /etc/mtab | grep iscsivol
$ sudo mount -a
$ df iscsivol
$ grep iscsivol /etc/mtab

再び再起動して、マウントされるか確認しよう。
$ sudo shutdown -r now

再びログインして確認
$ df iscsivol
$ grep iscsivol /etc/mtab

これで、iscsivolの下に5GBのファイルシステムがマウントされた。
とりあえずKVMの検証は、このファイルシステムを利用することにする。
#いずれすぐに変更されることになるけどね。

あと、自動マウントを辞めたい場合は、/etc/fstabの記載から当該エントリを削除し、iSCSIの node.startup を manual に変更すればいいだろう。

今回はここまで。

0 件のコメント:

コメントを投稿