Show Table of Contents
24.1.8.
24.1.9.
第24章 オンラインストレージ管理
オペレーティングシステムを稼動させたまま再起動せずにストレージデバイスの追加、削除、またはサイズ変更を実行したい場合がよくあります。本章では、 Red Hat Enterprise Linux 7 のホストシステムを稼動させたままでシステム上のストレージデバイスを再設定する手順について簡単に説明しています。さらに、本章では iSCSI およびファイバーチャネルのストレージ相互接続について扱います。他のタイプについての詳細は今後追加していく予定です。
本章では、ストレージデバイスの追加、削除、変更、モニターを中心に説明します。ファイバーチャネルおよび iSCSI プロトコルについては詳細に説明しません。プロトコルについては他のドキュメントを参照してください。
さまざまな
sysfs
オブジェクトを参照しますが、このオブジェクトの名前やディレクトリー構成は Red Hat Enterprise Linux の主要なリリースごとに変更されます。これは、アップストリームとなる Linux カーネルで安定した内部 API が提供されていないためです。移行が可能な方法で sysfs
オブジェクトを参照する方法についてのガイドラインは、カーネルソースツリーにある /usr/share/doc/kernel-doc-version/Documentation/sysfs-rules.txt
を参照してください。
警告
オンラインでのストレージの再設定は慎重に行ってください。プロセス中のシステム障害や中断は予期しない結果を招く恐れがあります。変更の操作を行っている間は、エクステントが最大となるようシステム負荷をできるだけ軽減させることをお勧めします。これにより、設定変更の途中で入出力エラーやメモリー不足によるエラーなどが発生する可能性が低減します。次のセクションでは、これに関してさらに詳しく説明します。
また、オンラインストレージの再設定を行う前にすべてのデータのバックアップを取ることを推奨します。
24.1. ターゲットの設定
Red Hat Enterprise Linux 7 では、
targetcli
シェルを、Linux-IO ターゲットの設定を表示、編集、および保存するためのフロンドエンドとして使用するため、カーネルターゲットの設定ファイルを直接操作する必要はありません。targetcli
ツールはコマンドラインインターフェースで、管理者はこれを使用してファイル、ボリューム、ローカル SCSI デバイス、または RAM ディスクに関連付けられたローカルストレージリソースをリモートにエクスポートできます。targetcli
ツールははツリーベースのレイアウトと、組み込みのタブ補完が含まれ、完全な自動補完サポートとインラインドキュメントを提供します。
targetcli
の階層は、カーネルのインターフェースに常に一致するとは限りません。これは、targetcli
が可能な限り簡素化されているためです。
重要
targetcli
の変更内容を永続化するには、ターゲットサービスを開始し、有効にします。
#
systemctl start target
#
systemctl enable target
24.1.1. targetcli のインストールおよび実行
targetcli
をインストールするには、以下を実行します。
#
yum install targetcli
target
を開始するには、以下を実行します。
#
systemctl start target
target
サービスがブート時に起動するように設定するには、以下を実行します。
#
systemctl enable target
targetcli
コマンドを実行してから ls
を実行し、ツリーインターフェイスのレイアウトを取得します。
#
targetcli
: />ls
o- /........................................[...] o- backstores.............................[...] | o- block.................[Storage Objects: 0] | o- fileio................[Storage Objects: 0] | o- pscsi.................[Storage Objects: 0] | o- ramdisk...............[Storage Ojbects: 0] o- iscsi...........................[Targets: 0] o- loopback........................[Targets: 0]
注記
Red Hat Enterprise Linux 7.0 では、Bash から
targetcli
コマンド (例: targetcli iscsi/ create
) を使用できず 、エラーも出力されませんでした。Red Hat Enterprise Linux 7.1 からは、エラーステータスコードが出力されるようになったため、shell スクリプトで targetcli
が使いやすくなりました。
24.1.2. バックストアの作成
バックストアは、ローカルマシンにエクスポートされた LUN のデータを保存するさまざまな方法に対応します。ストレージオブジェクトを作成して、バックストアが使用するリソースを定義します。
注記
Red Hat Enterprise Linux 6 では、作成されたマッピングを「バッキングストア」と呼びました。他の意味で使用される「バッキングストア」と混合しないように、Red Hat Enterprise Linux 7 では、作成されたマッピングを「ストレージオブジェクト」と呼び、別のバッキングデバイスを示す場合は「バックストア」と呼んでいます。
LIO がサポートするバックストアデバイスは次のとおりです。
- FILEIO (Linux ファイルと関連付けられたストレージ)
- FILEIO ストレージオブジェクトは、
write_back
またはwrite_thru
操作のいずれかをサポートします。write_back
はローカルファイルシステムキャッシュを有効にします。これにより、パフォーマンスが向上しますが、データ損失のリスクが大きくなります。write_back=false
を使用してwrite_back
を無効にし、write_thru
を利用することが推奨されます。fileio ストレージオブジェクトを作成するには、以下の例のようにコマンド/backstores/fileio create file_name file_location file_size write_back=false
を実行します。/> /backstores/fileio create file1 /tmp/disk1.img 200M write_back=false Created fileio file1 with size 209715200
- BLOCK (Linux BLOCK デバイス)
- ブロックドライバーは、
/sys/block
に指定されているブロックデバイスを LIO で使用できるようにします。このようなブロックデバイスには、物理デバイス (HDD、SSD、CD、DVD など) および論理デバイス (ソフトウェアまたはハードウェア RAID ボリューム、LVM ボリュームなど) が含まれます。注記
通常、BLOCK バックストアは最良のパフォーマンスを提供します。/dev/sdb
ブロックデバイスを使用して BLOCK バックストアを作成するには、以下のコマンドを実行します。/> /backstores/block create name=block_backend dev=/dev/sdb Generating a wwn serial. Created block storage object block_backend using /dev/sdb.
- PSCSI (Linux パススルー SCSI デバイス)
- SCSI エミュレーションなしで SCSI コマンドの直接パススルーをサポートするストレージオブジェクト、および
/proc/scsi/scsi
に lsscsi とともに表示される基盤の SCSI デバイスで SCSI コマンドの直接パススルーをサポートするストレージオブジェクトは、バックストアとして設定できます。SCSI-3 以上がこのサブシステムによってサポートされます。警告
PSCSI は上級ユーザーのみが使用するようにしてください。非対称論理ユニット割り当て (ALUA) や永続予約 ( VMware ESX や vSphere によって使用される永続予約など) は、通常はデバイスのファームウェアに実装されず、誤作動やクラッシュが発生する原因となることがあります。確信が持てない場合、実稼働の設定には BLOCK を使用してください。この例の/dev/sr0
を使用して物理 SCSI デバイスであるTYPE_ROM
デバイスの PSCSI バックストアを作成するには、以下を使用します。/> backstores/pscsi/ create name=pscsi_backend dev=/dev/sr0 Generating a wwn serial. Created pscsi storage object pscsi_backend using /dev/sr0
- メモリーコピー RAM ディスク (Linux RAMDISK_MCP)
- メモリーコピー RAM ディスク (
ramdisk
) は、完全な SCSI エミュレーションと、イニシエーターのメモリーコピーを使用した個別のメモリーマッピングが含まれる RAM ディスクを提供します。メモリーコピー RAM ディスクはマルチセッションの機能を提供し、実稼働を目的とした高速で不安定なマスストレージでは特に便利です。1 GB の RAM ディスクバックストアを作成するには、以下のコマンドを実行します。/> backstores/ramdisk/ create name=rd_backend size=1GB Generating a wwn serial. Created rd_mcp ramdisk rd_backend with size 1GB.
24.1.3. iSCSI ターゲットの作成
iSCSI ターゲットを作成するには、以下の手順に従います。
手順24.1 iSCSI ターゲットの作成
targetcli
を実行します。- iSCSI の設定パスに移動します。
/> iscsi/
注記
cd
コマンドでもディレクトリーの変更ができ、移動先へのパスも表示します。 - デフォルトのターゲット名を使用して iSCSI ターゲットを作成します。
/iscsi> create Created target iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff Created TPG1
または、特定の名前を使用して iSCSI ターゲットを作成します。/iscsi > create iqn.2006-04.com.example:444 Created target iqn.2006-04.com.example:444 Created TPG1
ls
でターゲットをリストし、新規作成されたターゲットが表示されることを確認します。/iscsi > ls o- iscsi.......................................[1 Target] o- iqn.2006-04.com.example:444................[1 TPG] o- tpg1...........................[enabled, auth] o- acls...............................[0 ACL] o- luns...............................[0 LUN] o- portals.........................[0 Portal]
注記
Red Hat Enterprise Linux 7.1 では、ターゲットが作成されるとデフォルトのポータルも作成されます。
24.1.4. iSCSI ポータルの設定
iSCSI ポータルを設定するには、最初に iSCSI ターゲットを作成し、TPG と関連付ける必要があります。この手順は、「iSCSI ターゲットの作成」 を参照してください。
注記
Red Hat Enterprise Linux 7.1 では、iSCSI ターゲットが作成されるとデフォルトのポータルも作成されます。このポータルは、デフォルトのポート番号 (0.0.0.0:3260) ですべての IP アドレスをリッスンするよう設定されます。このポータルを削除し、特定のポータルのみを追加するには、
/iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260
を使用し、必要な情報で新しいポータルを作成します。
手順24.2 iSCSI ポータルの作成
- TPG に移動します。
/iscsi> iqn.2006-04.example:444/tpg1/
- ポータルを作成する方法には、デフォルトポータルを作成する方法と、リッスンする IP アドレスを指定してポータルを作成する方法の 2 つがあります。デフォルトポータルを作成する方法では、デフォルトの iSCSI ポート 3260 を使用し、ターゲットがそのポートのすべての IP アドレスをリッスンできるようにします。
/iscsi/iqn.20...mple:444/tpg1> portals/ create Using default IP port 3260 Binding to INADDR_Any (0.0.0.0) Created network portal 0.0.0.0:3260
リッスンする IP アドレスを指定してポータルを作成するには、以下のコマンドを使用します。/iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137 Using default IP port 3260 Created network portal 192.168.122.137:3260
ls
コマンドを実行して新規作成されたポータルが表示されることを確認します。/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, auth] o- acls ......................................[0 ACL] o- luns ......................................[0 LUN] o- portals ................................[1 Portal] o- 192.168.122.137:3260......................[OK]
24.1.5. LUN の設定
LUN を設定するには、最初にストレージオブジェクトを作成します。詳細は 「バックストアの作成」 を参照してください。
手順24.3 LUN の設定
- 作成済みのストレージオブジェクトの LUN を作成します。
/iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/ramdisk1 Created LUN 0. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block1 Created LUN 1. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1 Created LUN 2.
- 変更内容を表示します。
/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, 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- 192.168.122.137:3260......................[OK]
注記
デフォルトの LUN 名は 0 で始まることに注意してください。Red Hat Enterprise Linux 6 のtgtd
を使用した場合は 1 で始まっていました。
重要
デフォルトでは、 読み書きパーミッションを持つ LUN が作成されます。ACL が作成された後に新しい LUN が追加された場合、その LUN は利用可能なすべての ACL に自動的にマップされます。これはセキュリティー上のリスクとなります。以下の手順に従って、読み取り専用の LUN を作成します。
手順24.4 読み取り専用の LUN の作成
- 読み取り専用パーミッションを持つ LUN を作成するには、最初に以下のコマンドを使用します。
/> set global auto_add_mapped_luns=false Parameter auto_add_mapped_luns is now 'false'.
これにより、LUN が既存の ACL へ自動的にマッピングされないようになり、LUN を手動でマッピングできるようになります。 - 次に、コマンド
iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/ create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore=backstore write_protect=1
を実行し、LUN を手動作成します。/> iscsi/iqn.2015-06.com.redhat:target/tpg1/acls/iqn.2015-06.com.redhat:initiator/ create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1 Created LUN 1. Created Mapped LUN 1. /> ls o- / ...................................................... [...] o- backstores ........................................... [...] <snip> o- iscsi ......................................... [Targets: 1] | o- iqn.2015-06.com.redhat:target .................. [TPGs: 1] | o- tpg1 ............................ [no-gen-acls, no-auth] | o- acls ....................................... [ACLs: 2] | | o- iqn.2015-06.com.redhat:initiator .. [Mapped LUNs: 2] | | | o- mapped_lun0 .............. [lun0 block/disk1 (rw)] | | | o- mapped_lun1 .............. [lun1 block/disk2 (ro)] | o- luns ....................................... [LUNs: 2] | | o- lun0 ...................... [block/disk1 (/dev/vdb)] | | o- lun1 ...................... [block/disk2 (/dev/vdc)] <snip>
(mapped_lun0 の (rw) とは異なり) mapped_lun1 行の最後に (ro) が表示されますが、これは、読み取り専用であることを表しています。
24.1.6. ACL の設定
接続している各イニシエーターに対して ACL を作成します。これにより、イニシエーターの接続時に認証が強制され、LUN のみが各イニシエーターに公開されます。通常、各イニシエーターは LUN へ排他的にアクセスできます。ターゲットおよびイニシエーターは一意の識別名を持ちます。ACL を設定するには、イニシエーターの一意名を知っている必要があります。open-iscsi イニシエーターの場合は、
/etc/iscsi/initiatorname.iscsi
で一意名を確認できます。
手順24.5 ACL の設定
- acls ディレクトリーへ移動します。
/iscsi/iqn.20...mple:444/tpg1> acls/
- ACL を作成します。イニシエーターの
/etc/iscsi/initiatorname.iscsi
にあるイニシエーター名を使用するか、簡単に覚えられる名前を使用している場合は 「iSCSI イニシエーターの作成」 を参照して ACL がイニシエーターと一致するようにします。例を以下に示します。/iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888 Created Node ACL for iqn.2006-04.com.example.foo:888 Created mapped LUN 2. Created mapped LUN 1. Created mapped LUN 0.
注記
上記の例の挙動は、使用する設定によって異なります。この場合、グローバル設定のauto_add_mapped_luns
が使用されます。これは、LUN を作成された ACL に自動的にマップします。 - 変更内容を表示します。
/iscsi/iqn.20...444/tpg1/acls> ls o- acls .................................................[1 ACL] o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth] o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)] o- mapped_lun1 .................[lun1 block/block1 (rw)] o- mapped_lun2 .................[lun2 fileio/file1 (rw)]
24.1.7. ファイバーチャネルオーバーイーサネット (FCoE) ターゲットの設定
targetcli
を使用すると、「ファイバーチャネルオーバーイーサネットインターフェースの設定」 で説明した FCoE における LUN のマウントの他に、FCoE の他のマシンへ LUN をエクスポートすることもサポートされます。
重要
次に進む前に、「ファイバーチャネルオーバーイーサネットインターフェースの設定」 を参照して、基本的な FCoE 設定が完了しており、
fcoeadm -i
を実行すると、設定した FCoE インターフェースが表示されることを確認してください。
手順24.6 FCoE ターゲットの設定
- FCoE ターゲットを設定するには、
targetcli
パッケージとその依存関係をインストールする必要があります。targetcli
の基本および設定に関する詳細は、「ターゲットの設定」 を参照してください。 - FCoE インターフェースで FCoE ターゲットインスタンスを作成します。
/> tcm_fc/ create 00:11:22:33:44:55:66:77
FCoE インターフェースがシステムにある場合、create
の後にタブ補完を行うと、使用可能なインターフェースが表示されます。このインターフェースがない場合は、fcoeadm -i
でアクティブなインターフェースが表示されることを確認してください。 - バックストアをターゲットインスタンスにマッピングします。
例24.1 バックストアのターゲットインスタンスへのマッピング例
/> tcm_fc/00:11:22:33:44:55:66:77
/> luns/ create /backstores/fileio/example2
- FCoE イニシエーターからの LUN へのアクセスを許可します。
/> acls/ create 00:99:88:77:66:55:44:33
LUN が指定のイニシエーターにアクセスできるようになりました。 - 再起動後も変更を維持するには、
saveconfig
コマンドを使用し、入力が要求されたらyes
を入力します。この作業を行わないと、再起動後に設定が失われます。 exit
とタイプするか、ctrl+D を押してtargetcli
を終了します。
24.1.8. targetcli
を使用したオブジェクトの削除
バックストアを削除するには、以下のコマンドを使用します。
/> /backstores/backstore-type/backstore-name
ACL などの iSCSI ターゲットの一部を削除するには、以下のコマンドを使用します。
/> /iscsi/iqn-name/tpg/acls/ delete iqn-name
(ACL、LUN、およびポータルのすべてを含む) ターゲット全体を削除するには、以下のコマンドを使用します。
/> /iscsi delete iqn-name
24.1.9. targetcli
のリファレンス
targetcli
の詳細については、次のリソースを参照してください。
man targetcli
targetcli
の man ページ。ウォークスルーの例が含まれています。- Linux SCSI Target Wiki
- Andy Grover によるスクリーンキャスト
注記
この動画は 2012 年 2 月 28 日にアップロードされたため、サービス名がtargetcli
からtarget
に変更されています。
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.