いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.171 / 読者数:1422名

あけましておめでとうございます、うすだです。

2005年の2月27日に創刊してから、5回目の年越しとなります。

その間、週一でなくなったり、ときどき休んだりしているにも関わらず、 読みつづけていただき、まことにありがとうございます。
(…あ、最近購読されたかたも、たいへんありがとうございます。)

今年は、なるべく読みやすいように書くことを心がけたいと思います。
というわけですので、今後ともよろしくお願いいたします。

 

さて、昨年12月下旬の頃から、よめと子どもがインフルエンザにかかり、 非常にてんやわんやな日々を送ったと思いきや、年末年始は、 わたし自身が伝染ってしまい、いろんなことをすっとばしてしまいました。

昨日(2日)になってようやく平熱に戻り、最低限的に年賀状を出し、 本日ギリギリになって、この文章を書いております。

…ええ、忙しかったとはいえ、コツコツと前もって準備しておけば、 今日になってから慌てることもなかったということは、重々承知の上です。

いっそのこと、今年の抱負は、計画を立てて実行する、 にしようかと思うくらいです。
いやいやいや、今年の抱負のことは明日じっくり考えることにして、 今日のところは、発行を間に合わせることに全力を注ぎたいと思います。

そ、それでは、今年一発目から、慌てずはりきってまいりますよ!

今回のお題 - iSCSI でリモートマシンのストレージを使う / PART II

前回、iSCSI を使うにはこうすればよいですよ〜的な内容をご紹介させていただきました。

Vol.170 - iSCSI でリモートマシンのストレージを使う
http://www.usupi.org/sysad/170.html

とはいえ、とりあえず動きました〜というところで力尽きてしまいましたので、 今回は、前回ご紹介しきれなかった以下を、ご紹介したいと考えております。

…なんだか、微妙に本質からずれている気がしなくもありませんが、 ここはひとつ、温かい目で見守っていただけますと、感謝感激です。

複数のイニシエータで使えるようにする

前回の構成では、ターゲットとイニシエータが1台ずつの場合の設定例をご紹介しました。

もちろん、実際の構成ではそんなことはまれで、 1台のターゲットに複数のイニシエータがぶら下がる、という構成になると思います。

とはいっても、単に、イニシエータの数だけエントリを書くだけです。
たとえば、イニシエータが2台ある場合は、以下のように、 2つエントリを設定してみましょう。

…おっと、まずは Debian 系です。/etc/ietd.conf ですね。

  Target iqn.2010-01.org.usupi:test00
      IncomingUser neuromancer CyBeR_99_SPaCe
      OutgoingUser
      Lun 0 Path=/usr/local/etc/iscsi/test00.img,Type=fileio

  Target iqn.2010-01.org.usupi:test01
      IncomingUser johnny Mne_995_MoNic
      OutgoingUser
      Lun 0 Path=/usr/local/etc/iscsi/test01.img,Type=fileio

各イニシエータが、異なる IQN を指定して使用しますので、 ユーザ名とパスワードを別にしておく必要があると思います。
(ちなみに、上記の例はあまりよくないですね。 推測しにくいものを設定してくださいませ。)

また、提供するディスク・イメージは、前回同様、/usr/local/etc/iscsi 以下の test00.img および test01.img としています。
ですので、dd コマンドであらかじめ作成しておいてください。

  # dd if=/dev/zero of=/usr/local/etc/iscsi/test01.img bs=1M \
  seek=サイズ count=1

あとは、前回の手順と同様にデーモンを起動し、イニシエータから接続を行えば、 使用できるはず…です。
ので、このあたりの手順は、割愛させていただきます。

 

そして RedHat 系の場合は、/etc/tgt/targets.conf に、 以下のエントリを追加すればよいと思います。

  <target iqn.2010-01.org.usupi:test00>
      driver iscsi
      backing-store /usr/local/etc/iscsi/test00.img
      incominguser neuromancer CyBeR_99_SPaCe
      initiator-address ALL
  </target>
  <target iqn.2010-01.org.usupi:test01>
      driver iscsi
      backing-store /usr/local/etc/iscsi/test01.img
      incominguser johnny Mne_995_MoNic
      initiator-address ALL
  </target>

こちらも、以降は前回の手順と同様ですので、割愛させていただきます。

 

以上、いずれも、ユーザ名とパスワードを、それぞれ直接指定する必要があります。 ですので、管理する側にとっては、イニシエータが多いほど、 面倒になっていくように思います。(PAM などが使えるとよいのですが。)

ファイアウォールがある場合

さて、前回、こうすれば使えますよ〜と気軽に申し上げてしまいました。
ですが、ファイアウォールが設定されていますと、当然、 イニシエータが接続しようとしても、パケットが落とされてしまってつながらない、 てなケースがおおいに考えられます。

実際、Fedora12 で試してみたところ、以下のように設定されていたために、 イニシエータから接続することができませんでした。
(外からは icmp と ssh だけが許されている、という状況です。)

  # iptables -L
  Chain INPUT (policy ACCEPT)
  target  prot opt source    destination         
  ACCEPT  all  --  anywhere  anywhere  state RELATED,ESTABLISHED
  ACCEPT  icmp --  anywhere  anywhere
  ACCEPT  all  --  anywhere  anywhere
  ACCEPT  tcp  --  anywhere  anywhere  state NEW tcp dpt:ssh
  REJECT  all  --  anywhere  anywhere  reject-with icmp-host-prohibited
  ...

そんなときは、/etc/sysconfig/iptables に以下を追加します。
(REJECTの行の手前に追加します…が、よくわからない場合は、 sshを許可する行の直後にでも追加しておきましょう。)

  -A INPUT -m state --state NEW -m tcp -p tcp --dport 3260 -j ACCEPT

そして、以下を実行して、再度設定してもらいます。

  # /etc/init.d/iptables restart

念のため、iptables コマンドで、許可されたことを確認します。

  # iptables -L
  Chain INPUT (policy ACCEPT)
  ...
  ACCEPT  tcp  --  anywhere  anywhere  state NEW tcp dpt:iscsi-target
  ...

それでも、イニシエータから接続できなければ、 tcpdump コマンドなどでパケットの流れを確認するしかないかもしれません…。

Linuxでもイニシエータ(暫定)

さて、前回は、なぜかイニシエータが Windows でした。
というのも、Linux をイニシエータにしますと、うまくいかなかったからなのでした。 (今更ですがカミングアウト…)

その後も、いろいろと試してはいるのですが、 Debian 系をイニシエータにした場合しか、動作確認ができておりません。

そんな中途半端な状態ではありますが、一応ご紹介させていただきたいと思います。 (Debian 系以外の貴兄は、指をくわえて読んでください。)

 

まず必要なパッケージは、open-iscsi と open-iscsi-utils です。
以下のように、apt などでインストールしておきましょう。

  # apt-get install open-iscsi open-iscsi-utils

そして、/etc/iscsi/iscsid.conf に、以下を追加します。

  node.session.auth.authmethod = CHAP
  node.session.auth.username = ユーザ名
  node.session.auth.password = パスワード
追加しましたら、以下の要領で、デーモンを起動します。
  # /etc/init.d/open-iscsi start

…さて、ここからが、少々ややこしくなります。
ややこしくはなりますが、使用するのは、iscsiadm コマンドだけです。

まず、ターゲットマシンが公開している IQN の一覧を得ます。

  # iscsiadm -m discovery -t sendtargets -p ターゲットマシン
  ターゲットマシン:3260,1 iqn.2010-01.org.usupi:test01
  ターゲットマシン:3260,1 iqn.2010-01.org.usupi:test00

2つの IQN が公開されているようです。
ちなみに、/etc/iscsi/nodes/IQN/ターゲットマシン,3260,1/default というファイルが作成されます。

さて、自分が使えるのは iqn.2010-01.org.usupi:test00 だけですので、 以下の手順で、そちらに接続してみます。

  # iscsiadm -m node --targetname iqn.2010-01.org.usupi:test00 \
   --login
  ...
  Login to [iface: default, target: iqn.2010-01.org.usupi:test00, \
  portal: ターゲットマシン,3260]: successful

最後、successful とおっしゃっていただけた場合は、成功です。

Linuxカーネルがおっしゃるメッセージを確認しますと、今回の例では、 /dev/sdb として認識されているようです。
(dmesg コマンドや /var/log/messages などで確認できます。)

  scsi2 : iSCSI Initiator over TCP/IP
  scsi 2:0:0:0: Direct-Access   IET  VIRTUAL-DISK 0  PQ: 0 ANSI: 4
  sd 2:0:0:0: Attached scsi generic sg1 type 0
  sd 2:0:0:0: [sdb] 264192 512-byte logical blocks: (135 MB/129 MiB)
  ...
  sd 2:0:0:0: [sdb] Attached SCSI disk

あとは、通常の /dev/sdb として扱えばよいと思います。
たとえば、fdisk コマンドでパーティションの設定を行い、 mkfs.ext3 コマンドでフォーマットして mount して使用する、 といったところでしょうか。

  # fdisk /dev/sdb
  ...
  # mkfs.ext3 /dev/sdb1
  # mount /dev/sdb1 /mnt
  ...
  # umount /dev/sdb1

さて、使い終わりましたら、あとは接続を断っておきます。
iscsiadm -m session で、現在接続中の一覧が出力されますので、 不要なIQN を --logout してしまいます。

  # iscsiadm -m session
  tcp: [5] ターゲットマシン:3260,1 iqn.2010-01.org.usupi:test00
  # iscsiadm -m node --targetname iqn.2010-01.org.usupi:test00 \
   --logout
  ...
  Logout of [sid: 5, target: iqn.2010-01.org.usupi:test00, \
  portal: ターゲットマシン,3260]: successful
  # iscsiadm -m session
  iscsiadm: No active sessions.

 

とまあ、基本的には以上です。

ただ、やっかいなことに、/etc/iscsi/nodes/*/*/default というファイルがありますと、デーモン起動時に、 自動的に接続しようとすることがあります。 (いろいろ試しましたが、よくわかりませんでした。すみません。)

ですので、使用していない余計なものは、消しておいたほうがよいかも… という気がいたします。(念のため、デーモンを止めてから消しましょう。)

おわりに

以上、寄せ集め的な iSCSI の続編をお伝えいたしました。

まだまだ調べきれていないことや、 お伝えしきれていないことがあるようにも思いますが、iSCSI に関しましては、 いったん、このあたりで終わりにさせていただきたいと思います。

なにかと癖はありますが、何事も経験だと思いますので、 食わず嫌いにはならないよう、いろいろ試してみていただけますと幸いです。

宿題の答え

前回の宿題は、

  USBメモリなど、ホンモノのストレージを iSCSI で扱ってみましょう。

でした。

以降では、512MBのUSBメモリをターゲットマシンに差して、 イニシエータから使えるようにしてみたいと思います。

まずは、USBメモリのデバイスファイルを知る必要がありますよね。
そんなときは、迷わずぶっ差してみましょう。

たとえば、Ubuntu9.10 なマシンにぷすっと差しますと、 Linuxカーネルは以下のようにおっしゃいました。
(先ほどと同様に、dmesg コマンドなどで確認します。)

  usb 1-1: new high speed USB device using ehci_hcd and address 3
  ...
  usb-storage: device found at 3
  usb-storage: waiting for device to settle before scanning
  usb-storage: device scan complete
  ...
  sd 4:0:0:0: Attached scsi generic sg2 type 0
  sd 4:0:0:0: [sdc] 985088 512-byte logical blocks: (504 MB/481 MiB)
  ...

つまり、/dev/sdc だとおっしゃっておられます。
ですので、たとえば Debian 系の場合ですと、 /etc/ietd.conf に以下のようなエントリを追加すればよいと思います。

  Target iqn.2010-01.org.usupi:usb512mb
      IncomingUser neuromancer CyBeR_99_SPaCe
      OutgoingUser
      Lun 0 Path=/dev/sdc,Type=fileio

基本的には、Path にデバイスファイルを指定しているだけです。
そして、デーモンを再起動します。

  # /etc/init.d/iscsitarget restart

あとは、イニシエータから参照および変更できることを、 いつもの手順で確認するだけです。(…ので、あとは割愛させていただきます。)

 

ところで、設定の Type には、fileio 以外に blockio を指定することもできるようです。

オンラインマニュアル(man ietd.conf)によりますと、blockioを指定した場合は、 ページキャッシュをスルーして直接ブロックにアクセスするようになるそうです。

アライメントされていないセクタへのアクセスや、 大量のブロックの読み込みなどの際に効果があるようですが、 こちらの環境で試した限りでは、blockio を指定すると動作してくれませんでした。

実際に試せていませんので、ここからは憶測ですが、 ページキャッシュで余計なキャッシュをしないというケースに限り、 速くなるということではないか、と勝手に思い込んでおります。

まあ、とりあえず動けばよいという貴兄は、fileio を指定しておけば、 間違いはないと思います。ですが、 なにか気になる現象に見舞われたときに上記を思い出すと、 ひょっとするとよいことがある…かもしれません。 (…ああ、イイカゲンな発言ですみません…。)

 

…おっと、RedHat 系の場合も同様で、やはり backing-store に指定するパスを、 デバイスファイルにするだけです。
具体的には、たとえば以下のエントリを /etc/tgt/targets.conf に追加すればよいと思います。

  <target iqn.2010-01.org.usupi:usb512mb>
      driver iscsi
      backing-store /dev/sdc
      incominguser neuromancer CyBeR_99_SPaCe
      initiator-address ALL
  </target>

こちらも、前回ご紹介した手順で、停止した後起動すれば、 イニシエータから参照できるようになると思います。(…ので、割愛いたします。)

今回の宿題

今回の宿題は、

  RedHat系で、ターゲットのデーモンを自動起動させてみましょう。

です。

前回お知らせした方法では、デーモンを起動してから、tgt-admin -e を実行して、 /etc/tgt/targets.conf の内容を読み込んでもらう必要がありました。

また、終了させる際にも、事前に、読み込んだ内容を削除しておく必要がありました。

このあたりを、サービス起動用のスクリプト /etc/init.d/tgtd ですべて処理できれば、 手順が簡単になってよいなあと思った次第です。

…実は、本題でご紹介しようと思っていたのですが、 よい宿題を思いつくことができませんでしたので、宿題にしてしまいました。

以上、申し訳ございませんが、ご容赦いただけますと幸いです。

あとがき

…というわけで、なんとか発行できそうなところまでたどり着きました。
では次回は…と言いたいところですが、もう少し無駄にがんばります。

 

わたくしがうなっていた年末に、周期的に話題になるテーマで、 気になるモノがスラドに載っていましたので、ご紹介させていただきます。

12歳から始めるプログラミング、何からスタートすべき?
http://slashdot.jp/developers/09/12/31/1047221.shtml

中学一年生の息子を持つわたくしとしましても、 なにかプログラミングをさせたいと常々思ってはいるのですが、 己の教師力のなさと、本人のやる気のなさという、2つの大きな壁に阻まれて、 挫折を繰返しております。

そもそも、自分の場合、同じく中一の頃に、 8bitパソコン(マイコン?)の全盛期を迎えることになり、 ゲームを自分で作りたい!というだけの理由で、BASICを自力で勉強したものでした。

ですので、ここはやっぱり本人のやる気が一番だよなぁ、ということで、 本人がやる気を出すまで待とうと思う次第です。

SqueakScratchProcessing などを、 子どもに教えようと思って勉強してみたけれど途中で挫折した、という黒歴史には、 触れないようにしていただけますと幸いです。(ふたたび無駄にカミングアウト…)

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、1月17日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 年賀状効果が現れる前に読者数が増えたので、こわいです。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本