13.5. iSCSI ベースのストレージプール
13.5.1. ソフトウェア iSCSI ターゲットの設定
手順13.4 iSCSI ターゲットの作成
必須パッケージをインストールします。
targetcli パッケージとすべての依存関係をインストールします。#
yum install targetclitargetcliを起動します。targetcliコマンドセットを起動します。#
targetcliストレージオブジェクトを作成します。
「LVM ベースのストレージプール」で作成されたデバイスを使用して、以下のように 3 つのストレージオブジェクトを作成します。/backstores/blockディレクトリーに変更してから以下のコマンドを実行して、ブロックストレージオブジェクトを作成します。# create [block-name][filepath]例:# create block1 dev=/dev/vdb1fileioディレクトリーに変更してから以下のコマンドを実行して、fileio オブジェクトを作成します。# create [fileioname] [imagename] [image-size]例:# create fileio1 /foo.img 50Mramdiskディレクトリーに変更してから以下のコマンドを実行して、ramdisk オブジェクトを作成します。# create [ramdiskname] [size]例:# create ramdisk1 1M- このステップで作成したディスクの名前は後で必要になるため、忘れないようにしてください。
/iscsiディレクトリーに移動します。iscsiディレクトリーに変更します。#cd /iscsiiSCSI ターゲットを作成します。
iSCSI ターゲットを以下の 2 つの方法で作成します。- 追加パラメーターが指定されていない
createは、IQN を自動生成します。 create iqn.2010-05.com.example.server1:iscsirhel7guestは、指定されるサーバーに特定の IQN を作成します。
ターゲットポータルグループ (TPG) を定義します。
各 iSCSI ターゲットでは、ターゲットポータルグループ (TPG) を定義する必要があります。この例では、デフォルトのtpg1が使用されますが、さらに多くの tpg を追加することもできます。これは最も一般的な設定であるため、この例ではtpg1を設定します。これを実行するには、/iscsiディレクトリーにいることを確認してから、/tpg1ディレクトリーに変更します。# /iscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guest/tpg1ポータル IP アドレスを定義します。
iSCSI 上でブロックストレージをエクスポートするには、ポータル、LUN および ACL をすべて最初に設定する必要があります。ポータルには、ターゲットがリッスンし、イニシエーターが接続する IP アドレスおよび TCP ポートが含まれます。iSCSI は、デフォルトで設定されるポートのポート 3260 を使用します。このポートに接続するには、/tpgディレクトリーから以下のコマンドを実行します。
このコマンドには、このポートをリッスンするすべての利用可能な IP アドレスが含まれます。単一の IP アドレスのみがポートでリッスンするように指定するには、# portals/ createportals/ create [ipaddress]を実行します。指定される IP アドレスはポート 3260 をリッスンするように設定されます。LUN を設定し、ストレージオブジェクトをファブリックに割り当てます。
このステップでは、手順13.4「iSCSI ターゲットの作成」で作成されるストレージデバイスを使用します。ステップ 6 で作成した TPG のlunsディレクトリーに、またはたとえばiscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guestとなるように必ず変更を加えてください。- 最初の LUN を以下のように ramdisk に割り当てます。
# create /backstores/ramdisk/ramdisk1 - 2 番目の LUN を以下のようにブロックディスクに割り当てます。
# create /backstores/block/block1 - 3 番目の LUN を以下のように fileio ディスクに割り当てます。
# create /backstores/fileio/file1 - 結果として生じる LUN の一覧表示はこの画面の出力のようになります。
/iscsi/iqn.20...csirhel7guest/tpg1 ls o- tgp1 ............................................................................[enabled, auth] o- acls..................................................................................[0 ACL] o- luns.................................................................................[3 LUNs] | o- lun0.....................................................................[ramdisk/ramdisk1] | o- lun1..............................................................[block/block1 (dev/vdb1)] | o- lun2...............................................................[fileio/file1 (foo.img)] o- portals............................................................................[1 Portal] o- IP-ADDRESS:3260........................................................................[OK]
各イニシエーターに ACL を作成します。
このステップでは、イニシエーターが接続する際に認証の作成を許可します。さらに、指定された LUN の指定されたイニシエーターへの制限を許可します。ターゲットとイニシエーターの両方には、固有の名前があります。iSCSI イニシエーターは IQN を使用します。- iSCSI イニシエーターの IQN を検索するには、イニシエーターの名前を置き換え、以下のコマンドを実行します。
この IQN を使用して ACL を作成します。# cat /etc/iscsi/initiatorname.iscsi aclsディレクトリーに切り替えます。- コマンド
create [iqn]を実行するか、または特定の ACL を作成します。以下の例を参照してください。# create iqn.2010-05.com.example.foo:888または、すべてのイニシエーターの単一ユーザー ID およびパスワードを使用するようにカーネルターゲットを設定し、そのユーザー ID およびパスワードですべてのイニシエーターがログインできるようにするには、以下のコマンドを使用します (useridおよびpasswordを置き換えます)。#
set auth userid=redhat#set auth password=password123#set attribute authentication=1#set attribute generate_node_acls=1
saveconfigコマンドを使って設定を永続化します。これにより、直前の起動設定を上書きします。または、targetcli からexitを実行すると、デフォルトでターゲット設定が保存されます。systemctl enable target.serviceでサービスを有効にし、次回の起動時に保存された設定を適用します。
手順13.5 オプションのステップ
LVM ボリュームを作成します。
LVM ボリュームは、iSCSI のバッキングイメージに役に立ちます。LVM のスナップショットやサイズ変更は、ゲスト仮想マシンに使える便利な機能です。この例では、iSCSI でゲスト仮想マシンをホストするために RAID5 アレイ上の virtstore という名前の新規ボリュームグループ上に virtimage1 という名前の LVM イメージを作成しています。RAID アレイを作成します。
ソフトウェア RAID5 アレイの作成については、『Red Hat Enterprise Linux 7 ストレージ管理ガイド』で説明されています。LVM ボリュームグループを作成します。
vgcreateコマンドを使用して virtstore という名前の論理ボリュームグループを作成します。#
vgcreate virtstore /dev/md1LVM 論理ボリュームを作成します。
lvcreateコマンドを使用して、virtimage1 という名前の論理ボリュームグループ (サイズは 20GB) を virtstore ボリュームグループ上に作成します。#
lvcreate **size 20G -n virtimage1 virtstoreこれで新規論理ボリュームのvirtimage1 を iSCSI に使用する準備が整いました。重要
カーネルのターゲットバックストアの LVM ボリュームを使用すると、イニシエーターが LVM を使ってエクスポートされたボリュームのパーティション設定を行う場合に問題が発生する可能性があります。これは、global_filter = ["r|^/dev/vg0|"]を/etc/lvm/lvm.confに追加することによって解決できます。
オプション: 検出テスト
新規の iSCSI デバイスが検出可能かどうかを検証します。#
iscsiadm --mode discovery --type sendtargets --portal server1.example.com127.0.0.1:3260,1 iqn.2010-05.com.example.server1:iscsirhel7guestオプション: デバイス接続テスト
新規デバイス (iqn.2010-05.com.example.server1:iscsirhel7guest) を割り当て、デバイスが割り当て可能であるかどうかを判別します。#
iscsiadm -d2 -m node --loginscsiadm: Max file limits 1024 1024 Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 10.0.0.1,3260] Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 10.0.0.1,3260] successful.- デバイスの割り当てを解除します。
#
iscsiadm -d2 -m node --logoutscsiadm: Max file limits 1024 1024 Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 10.0.0.1,3260 Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 10.0.0.1,3260] successful.
13.5.2. virt-manager での iSCSI ストレージプールの作成
virt-manager で iSCSI ターゲットを持つストレージプールを作成します。
手順13.6 iSCSI デバイスの virt-manager への追加
ホストマシンのストレージ詳細を開きます。
- virt-manager で、編集 をクリックしてから、ドロップダウンメニューより 接続の詳細 を選択します。
- ストレージ タブをクリックします。
新規プールを追加します (ステップ 1/2)。
+ ボタン (プールの追加ボタン) を押します。新規ストレージプールを追加 ウィザードが表示されます。
図13.16 iSCSI ストレージプールの名前とタイプを追加します。
ストレージプールの名前を選択して、タイプを iSCSI に変更してから を押して次に進みます。新規プールを追加します (ステップ 2/2)。
このメニューのフィールドへの入力を完了するには、「iSCSI ベースのストレージプール」で使用した情報が必要になります。- iSCSI ソースおよびターゲットを入力します。フォーマットはゲスト仮想マシンが処理するため、フォーマット オプションは選択できません。さらに、ターゲットパス を編集することは推奨されていません。デフォルトのターゲットパスの値
/dev/disk/by-path/は、ドライブパスをそのディレクトリーに追加します。ターゲットパスは、移行のためにすべてのホスト物理マシン上で同一である必要があります。 - iSCSI ターゲットのホスト名または IP アドレスを入力します。この例では、
host1.example.comを使用します。 - ソース IQN フィールドには、iSCSI ターゲット IQN を入力します。「iSCSI ベースのストレージプール」を参照すると、これは
/etc/tgt/targets.conf fileに追加した情報であることが分かります。この例では、iqn.2010-05.com.test_example.server1:iscsirhel7guestを使用しています。 - (オプション) イニシエーターの IQN チェックボックスにチェックマークを付けて、イニシエーターの IQN を入力します。この例では、
iqn.2010-05.com.example.host1:iscsirhel7を使用しています。 - をクリックすると、新規のストレージプールが作成されます。

図13.17 iSCSI ストレージプールの作成
13.5.3. virt-manager を使用したストレージプールの削除
- 同じプールを使用する他のゲスト仮想マシンに関連した問題を避けるには、ストレージプールを停止し、そのストレージプールで使用中のリソースをすべて解放するのが最良の方法です。これを実行するには、停止するストレージプールを選択して、
をクリックします。

図13.18 ストレージプールの削除
- ストレージプールを削除するには、
をクリックします。このアイコンが使用できるのは、ストレージプールが停止している場合のみです。
13.5.4. virsh を使用した iSCSI ベースのストレージプールの作成
オプション: ストレージプールのセキュリティーを保護します。
必要な場合は、「iSCSI ストレージプールのセキュリティー保護」にあるステップで認証をセットアップします。ストレージプールを定義します。
ストレージプールの定義は、virshコマンドラインツールで作成できます。virshでのストレージプール作成は、複数のストレージプールをスクリプトで作成しているシステム管理者にとって便利な方法です。virsh pool-define-asコマンドにはパラメーターがいくつかあり、以下の形式で使用します。virsh pool-define-as
name type source-host source-path source-dev source-nametarget以下でパラメーターについて説明します。- type
- たとえば、このプールを特定タイプ iSCSI として定義します。
- name
- ストレージプールの名前を設定します。この名前は固有である必要があります。
- source-host と source-path
- ホスト名と iSCSI IQN です。
- source-dev と source-name
- これらのパラメーターは iSCSI ベースのプールでは不要です。- 文字を使用してフィールドをブランクのままにします。
- target
- ホストマシン上で iSCSI デバイスをマウントする場所を定義します。
以下の例では、上記のvirsh pool-define-asの例と同じ iSCSI ベースのストレージプールを作成します。# virsh pool-define-as --name iscsirhel7pool --type iscsi \ --source-host server1.example.com \ --source-dev iqn.2010-05.com.example.server1:iscsirhel7guest \ --target /dev/disk/by-path Pool iscsirhel7pool definedストレージプールが一覧表示されていることを確認します
ストレージプールのオブジェクトが正しく作成されており、状態がinactiveであることを確認します。#
virsh pool-list --allName State Autostart ----------------------------------------- default active yes iscsirhel7pool inactive noオプション: iSCSI ストレージプールへの直接接続を確立します。
以下のステップはオプションですが、iSCSI ストレージプールへの直接の接続を確立することができます。デフォルトでこれは有効にされていますが、ホストマシンへの接続 (ネットワークへの直接の接続ではない) が設定されている場合、この例を反映するように仮想マシンのドメイン XML を編集することによって、設定を元に戻すことができます。... <disk type='volume' device='disk'> <driver name='qemu'/> <source pool='iscsi' volume='unit:0:0:1' mode='direct'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> ...図13.19 ディスクタイプ要素 XML の例
注記
disk deviceをdiskまたはlunとして設定することで、同一の iSCSI ストレージプールを LUN またはディスクに使用できます。SCSI LUN ベースのストレージをゲストに追加するためのサンプル XML 設定については、「SCSI LUN ベースのストレージのゲストへの追加」を参照してください。さらに、ホストマシンへの接続のためにsource modeをmode='host'と指定できます。手順13.4「iSCSI ターゲットの作成」に詳しく説明されているように iSCSI サーバーに認証を設定している場合、<disk>サブ要素として使用される以下の XML はディスクの認証資格情報を提供します。「iSCSI ストレージプールのセキュリティー保護」は、libvirt シークレットの設定方法を説明しています。<auth type='chap' username='redhat'> <secret usage='iscsirhel7secret'/> </auth>ストレージプールを起動します。
virsh pool-startを使用してディレクトリーストレージプールを有効にします。これにより、ストレージプールをボリュームおよびゲスト仮想マシンに使用することができます。#
virsh pool-start iscsirhel7poolPool iscsirhel7pool started #virsh pool-list --allName State Autostart ----------------------------------------- default active yes iscsirhel7pool active noautostart をオンにします。
ストレージプールのautostartをオンにします。Autostart は、libvirtdサービスの起動時にストレージプールを起動するように設定します。#
virsh pool-autostart iscsirhel7poolPool iscsirhel7pool marked as autostartediscsirhel7pool プールが autostart を有効にしていることを確認します。#
virsh pool-list --allName State Autostart ----------------------------------------- default active yes iscsirhel7pool active yesストレージプールの設定を確認します。
ストレージプールが正しく作成されたこと、サイズが正しく報告されたこと、および状態がrunningとして報告されていることを確認します。#
virsh pool-info iscsirhel7poolName: iscsirhel7pool UUID: afcc5367-6770-e151-bcb3-847bc36c5e28 State: running Persistent: unknown Autostart: yes Capacity: 100.31 GB Allocation: 0.00 Available: 100.31 GB
13.5.5. iSCSI ストレージプールのセキュリティー保護
virsh を使ってユーザー名およびパスワードパラメーターを設定することにより、iSCSI ストレージプールのセキュリティーを保護することができます。これは、プールを定義する前後に設定できますが、認証設定を有効にするには、プールが起動している必要があります。
手順13.7 virsh を使用したストレージプールの認証設定
libvirt シークレットファイルを作成します。
以下の例を使って、secret.xmlという libvirt シークレット XML ファイルを作成します。#
cat secret.xml<secret ephemeral='no' private='yes'> <description>Passphrase for the iSCSI example.com server</description> <auth type='chap' username='redhat'/> <usage type='iscsi'> <target>iscsirhel7secret</target> </usage> </secret>シークレットファイルを定義します。
virshを使ってsecret.xmlファイルを定義します。#
virsh secret-define secret.xmlシークレットファイルの UUID を確認します。
secret.xmlの UUID を確認します。#
virsh secret-listUUID Usage -------------------------------------------------------------------------------- 2d7891af-20be-4e5e-af83-190e8a922360 iscsi iscsirhel7secretシークレットを UUID に割り当てます。
例のように以下のコマンド構文を使用して、シークレットを該当の UUID に割り当てます。#
MYSECRET=`printf %s "password123" | base64`#virsh secret-set-value 2d7891af-20be-4e5e-af83-190e8a922360 $MYSECRETこれにより、CHAP ユーザー名およびパスワードが libvirt で制御されたシークレット一覧に設定されることを確認できます。認証エントリーをストレージプールに追加します。
virsh editを使用してストレージプールの XML ファイルの<source>エントリーを変更し、authentication type、username、およびsecret usageを指定して<auth>要素を追加します。以下は、認証が設定されたストレージプール XML 定義の例を示しています。#
cat iscsirhel7pool.xml<pool type='iscsi'> <name>iscsirhel7pool</name> <source> <host name='192.168.122.1'/> <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/> <auth type='chap' username='redhat'> <secret usage='iscsirhel7secret'/> </auth> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>注記
<auth>サブ要素は、ゲスト XML の<pool>および<disk>要素内の複数の異なる場所に存在します。<pool>の場合、<auth>は、認証が一部のプールソース (iSCSI および RBD) のプロパティーであり、プールソースの検索方法を記述しているため、<source>要素内に指定されます。ドメインのサブ要素である<disk>の場合、iSCSI または RBD ディスクへの認証はディスクのプロパティーになります。ゲスト XML に設定される<disk>の例については、「virsh を使用した iSCSI ベースのストレージプールの作成」を参照してください。ストレージプール内の変更をアクティブにします。
以下の変更をアクティブにするには、ストレージプールを起動している必要があります。ストレージプールをまだ起動していない場合は、「virsh を使用した iSCSI ベースのストレージプールの作成」にあるステップに従ってストレージプールを定義し、起動します。プールがすでに起動している場合は、以下のコマンドを実行してストレージプールを停止し、再起動します。#
virsh pool-destroy iscsirhel7pool#virsh pool-start iscsirhel7pool
13.5.6. virsh を使用したストレージプールの削除
- 同じプールを使用する他のゲスト仮想マシンとの問題を避けるには、ストレージプールを停止してから使用中のリソースをすべて解放するのが最良の方法です。
#
virsh pool-destroy iscsirhel7pool - ストレージプールの定義を削除します。
#
virsh pool-undefine iscsirhel7pool

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.