土曜日, 10月 24, 2009

CentOS 5.4 でKVM 入門編 (第1.2回、インストール)

[概要]
CentOS 5.4がリリースされたので、Red Hat Enterprise Linux 5.4との差分を中心にKVMのインストールについて説明します。
CentOS6, RHEL6の方はこちらを、ubuntuの方はこちらをそれぞれご覧ください。

[詳細]
CentOS 5.4から、仮想化環境としてXenに加えて、KVM (Kernel-based Virtual Machine)が実装されました。
KVMはLinux kernelに2.6.20より標準で実装されている仮想化環境で、カーネルのモジュールとして動作します。ただし、CentOS 5.4はKernel 2.6.18なので、バックポートされたモジュールが実装されています。
また、KVMはハイパーバイザとしてのみ働き、自身ではPCのエミュレートの機能は持っておらず、QEMUというエミュレータがKVMとやり取りを行って、バーチャルマシンを提供しています。KVMの使用については、Intel-VTかAMD-Vを実装したCPU必要です。

KVMはRHEL 5.3以前でもソース・コードのコンパイル、もしくは、ディストリビューション以外で提供されているパッケージをインストールすることで使用することはできましたのですが、Red Hat社がKVMへの主な出資者であるQumranet社がに買収し、KVMをメインの仮想化環境として扱うとしたことで、ディストリビューションに含まれました。

それでは、今回は、KVMの設定方法と簡単な操作方法を説明して行きたいと思います。

  1. CentOS 5.4のインストール
    KVMのインストールは、通常のOSのインストールの中で、KVMのパッケージを選択することで行います。
    OSインストールについては、KVMに関するポイントの部分を、中心にそのほかは、かいつまんで説明します。
    1. インストール・ソフトウェアの選択
      パスワード入力後に表示される下のソフトウエアの選択画面では、"仮想化"のチェックを外し、ソフトウェア選択のカスタマイズを"今すぐカスタマイズ"を選択します。



      次の画面では、左側のカテゴリで"仮想化"を選択し、"KVM"を選択します。

    その後は、通常通りインストールを進め、完了後、再起動を行ってください。
  2. 動作確認
    KVM用カーネル・モジュールがロードされていることを確認します。

    [root@vm-host03 ~]# lsmod | grep kvm
    kvm_intel 85992 0
    kvm 222368 2 ksm,kvm_intel

    AMDのCPUでは、"kvm_intel"のかわりに"kvm_amd"がロードされます。

これでKVMを使用する準備が整いました。こちら参照して、バーチャルマシンの作成からOSのインストールまでを、行ってください。

火曜日, 9月 29, 2009

RHEL5, CentOS 5でのiSCSIターゲットの設定

[概要]
Red Hat EL (RHEL) 5.xとCentOS 5.xを使用したiSCSIのターゲットの作成を説明しています。

[詳細]
RHEL 5.xとCentOS 5.xには、iSCSI ターゲットとなるためのパッケージscsi-target-utilsが添付されています。このパッケージを利用してLinuxマシンをiSCSIのターゲットとして運用する方法を説明します。

  1. パッケージのインストール
    • RHEL 5.x
      Cluster Storageのパッケージグループに属していますので、次のようにパッケージのパスを指定してください。
      rpm -ivh マウントポイント/ClusterStorage/scsi-target-utils*

    • CentOS 5.x
      rpm -ivh マウントポイント/CentOS/scsi-target-utils*

  2. ターゲットの作成

    ターゲットの管理は、tgtadmというコマンドを使って行いますが、多くのオプションがあり初心者にはちょっと扱いづらいところがあります。
    tgtadmを直接使わずに、簡単にセットアップするためにいくつかのコマンドが用意されています。ターゲットの追加は"tgt-setup-lun"、ターゲットの変更や状態の表示は"tgt-admin"で行うことが出来ます。
    ただ、これらのコマンドでの実行だけでは、マシンの起動と同時にiSCSIのターゲットは動作しません。起動時に動作させるためには/etc/tgt/targets.confに、ターゲットの設定を記述し、サービスtgtdを自動起動するように設定します。
    まず、/etc/tgt/targets.confの記述方法について説明します。
    1. /etc/tgt/targets.confの書式
      /etc/tgt/targets.confは、ターゲットごとに"<target ターゲット名>"と"</target>"の間に設定を記述します。
      • backing-store
        iSCSIデバイスとなるディスク、もしくは、パーティション、ファイルを指定します。backing-storeを複数指定すると、イニシエータ(クライアント)からは複数のLUNとして表示されます。
        backing-store /dev/sdb1
        backing-store /opt/disk.img

      • initiator-address
        接続を許可するイニシエータのIPアドレスを記載します。複数のイニシエータに接続を許可する場合はinitiator-addressを列挙します。
        逆にinitiator-addressが無い場合には、すべてのイニシエータからの接続を許可します。
        initiator-address 192.168.1.152
        initiator-address 192.168.1.154

      • incominguser
        ターゲットへ接続するイニシエータ対して認証を要求するよう設定します。
        incominguser foo bar

      • outgoinguser
        イニシエータの要求する認証に、ターゲットが返答するよう設定します。
        outgoinguser foo bar


      <target qn.2001-04.com.jp-lin03-sdb:tgtd>
      # List of files to export as LUNs
      backing-store /dev/sdb1
      backing-store /dev/sdb4

      # Authentication :
      # if no "incominguser" is specified, it is not used
      #incominguser backup secretpass12

      # Access control :
      # defaults to ALL if no "initiator-address" is specified
      initiator-address 192.168.1.152
      initiator-address 192.168.1.154
      </target>
      <target qn.2001-04.com.jp-lin03-file:tgtd>
      # List of files to export as LUNs
      backing-store /opt/disk.img

      # Authentication :
      # if no "incominguser" is specified, it is not used
      incominguser foo bar

      # Access control :
      # defaults to ALL if no "initiator-address" is specified
      #initiator-address 192.168.1.151
      </target>


      上記の例では、"qn.2001-04.com.jp-lin03-sdb:tgtd"と"qn.2001-04.com.jp-lin03-file:tgtd"という2つのターゲットを定義しています。"qn.2001-04.com.jp-lin03-sdb:tgtd"は、"/dev/sdb1"と"/dev/sdb4"のそれぞれをLUNとして定義し、"192.168.1.152"と"192.168.1.154"からのアクセスを許可しています。次に、"qn.2001-04.com.jp-lin03-file:tgtd"は、"/opt/disk.img"というレギュラーファイルをLUNとして、すべてのイニシエーターからのアクセスを許可していますが接続に対してユーザ名"foo"、パスワード"bar"という認証を要求します。


  3. サービスの自動起動の設定
    [root@localhost]~# chkconfig tgtd on

  4. tgtdサービスの起動
    [root@localhost]~# service tgtd start

  5. 動作確認
    "tgt-admin -s"もしくは、"tgtadm --lld iscsi --mode target --op show"を使用して、動作確認を行います。
    各ターゲットのLUN 0はSCSIのコントローラとなるので、ディスクが割り当てられるのは、LUN 1から見ていきます。

    LUNについてのチェックは、指定した数のディスクが存在するか、"Backing store"に正しいデバイスが指定されているか、"Online"が"Yes"になっているかを見ます。他には" Account information"で指定したユーザが表示されているか、"ACL information"では指定したIPアドレスが表示されているかをチェックしてください。

    [root@localhost ~]# tgt-admin -s
    Target 1: qn.2001-04.com.jp-lin03-sdb:tgtd
    System information:
    Driver: iscsi
    State: ready
    I_T nexus information:
    LUN information:
    LUN: 0
    Type: controller
    SCSI ID: deadbeaf3:0
    SCSI SN: beaf30
    Size: 0 MB
    Online: Yes
    Removable media: No
    Backing store: No backing store
    LUN: 1
    Type: disk
    SCSI ID: deadbeaf3:1
    SCSI SN: beaf31
    Size: 30006 MB
    Online: Yes
    Removable media: No
    Backing store: /dev/sdb1
    LUN: 2
    Type: disk
    SCSI ID: deadbeaf3:2
    SCSI SN: beaf32
    Size: 26469 MB
    Online: Yes
    Removable media: No
    Backing store: /dev/sdb4
    Account information:
    ACL information:
    100.100.100.152
    100.100.100.154
    Target 2: qn.2001-04.com.jp-lin03-file:tgtd
    System information:
    Driver: iscsi
    State: ready
    I_T nexus information:
    LUN information:
    LUN: 0
    Type: controller
    SCSI ID: deadbeaf1:0
    SCSI SN: beaf10
    Size: 0 MB
    Online: Yes
    Removable media: No
    Backing store: No backing store
    LUN: 1
    Type: disk
    SCSI ID: deadbeaf1:1
    SCSI SN: beaf11
    Size: 41943 MB
    Online: Yes
    Removable media: No
    Backing store: /opt/disk.img
    Account information:
    foo
    ACL information:
    ALL

以上で、iSCSIのターゲットの設定は終了です。