目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Enterprise Storage 7マニュアル / 導入ガイド / 追加のサービスのインストール / iSCSIゲートウェイのインストール
適用項目 SUSE Enterprise Storage 7

6 iSCSIゲートウェイのインストール

iSCSIは、クライアント(「イニシエータ」)から、リモートサーバ上のSCSIストレージデバイス(「ターゲット」)にSCSIコマンドを送信できるようにするSAN (ストレージエリアネットワーク)プロトコルです。SUSE Enterprise Storage 7には、Cephのストレージ管理をiSCSIプロトコル経由でMicrosoft Windows*、VMware* vSphereなどの異種クライアントから利用できるようにする機能が含まれています。マルチパスiSCSIアクセスによってこれらのクライアントの可用性とスケーラビリティが向上すると同時に、標準化されたiSCSIプロトコルがクライアントとSUSE Enterprise Storage 7クラスタ間に追加のセキュリティ分離層も提供します。この設定機能はceph-iscsiという名前です。Cephストレージ管理者は、ceph-iscsiを使用して、シンプロビジョニングおよび複製された高可用性ボリュームを定義できます。これらのボリュームでは、Ceph RBD (RADOS Block Device)により、読み込み専用スナップショット、読み書きクローン、および自動サイズ調整がサポートされます。これにより、単一のceph-iscsiゲートウェイホスト、またはマルチパスフェールオーバーをサポートする複数のゲートウェイホストを通じてボリュームをエクスポートできます。iSCSIプロトコルによってボリュームを他のSCSIブロックデバイスと同じように利用できるようになり、Linux、Microsoft Windows、およびVMwareホストはiSCSIプロトコルを使用してボリュームに接続できます。つまり、SUSE Enterprise Storage 7の顧客は、従来のSANの特徴と利点をすべて備えた完全なブロックストレージインフラストラクチャサブシステムをCeph上で効果的に実行でき、将来の増加に対応できます。

この章では、CephクラスタインフラストラクチャをiSCSI Gatewayと共に設定し、クライアントホストがiSCSIプロトコルを使ってリモート保存データをローカルストレージデバイスとして使用できるようにするための情報について詳しく説明します。

6.1 iSCSIブロックストレージ

iSCSIは、IP (インターネットプロトコル)を使用するSCSI (Small Computer System Interface)コマンドセットを実装したもので、RFC 3720で規定されています。iSCSIはサービスとして実装され、クライアント(イニシエータ)はTCPポート3260でセッションを経由してサーバ(ターゲット)と通信します。iSCSIターゲットのIPアドレスとポートを「iSCSIポータル」と呼び、1つ以上のポータルを通じてターゲットを公開できます。ターゲットと1つ以上のポータルの組み合わせを「TPG」(ターゲットポータルグループ)と呼びます。

iSCSIの基礎となるデータリンク層プロトコルはほとんどの場合Ethernetです。具体的には、最新のiSCSIインフラストラクチャは、最適なスループットのために10ギガビットEthernetまたはより高速なネットワークを使用します。iSCSI GatewayとバックエンドのCephクラスタ間の接続には、10ギガビットEthernetを強くお勧めします。

6.1.1 LinuxカーネルiSCSIターゲット

LinuxカーネルiSCSIターゲットは元々、プロジェクトの発端となったドメインとWebサイトlinux-iscsi.orgにちなんでLIOと呼ばれていました。しばらくの間、競合するiSCSIターゲット実装がLinuxプラットフォームで4つも利用可能な状態が続いていましたが、最終的にはLIOがiSCSIの単一のリファレンスターゲットとして普及しました。LIOのメインラインカーネルコードは、シンプルではあるものの若干あいまいな「ターゲット」という名前を用いて、「ターゲットコア」と、さまざまなフロントエンド/バックエンドターゲットモジュールを区別しています。

最も一般的に用いられているフロントエンドモジュールはまず間違いなくiSCSIです。ただし、LIOはFC (ファイバチャネル)、FCoE (ファイバチャネルオーバーEthernet)、およびその他の複数のフロントエンドプロトコルもサポートしています。現在のところ、SUSE Enterprise StorageによってサポートされているのはiSCSIプロトコルのみです。

最もよく使用されるターゲットバックエンドモジュールは、ターゲットホスト上で利用可能なブロックデバイスを単に再エクスポートできるモジュールです。このモジュールは「iblock」という名前です。ただし、LIOには、RBDイメージへの並列化マルチパスI/Oアクセスをサポートする、RBD固有のバックエンドモジュールもあります。

6.1.2 iSCSIイニシエータ

このセクションでは、Linux、Microsoft Windows、およびVMwareの各プラットフォームで使用されているiSCSIイニシエータについて簡単に紹介します。

6.1.2.1 Linux

Linuxプラットフォームの標準のイニシエータはopen-iscsiです。open-iscsiはデーモンiscsidを起動し、ユーザはこのデーモンを使用して特定のポータル上のiSCSIターゲットを検出してターゲットにログインし、iSCSIボリュームをマップできます。iscsidはSCSIの中間層と通信して、カーネル内ブロックデバイスを作成します。これにより、カーネルはこのブロックデバイスをシステムの他のSCSIブロックデバイスと同じように扱うことができます。open-iscsiイニシエータをデバイスマッパーマルチパス(dm-multipath)機能と組み合わせて展開することで、高可用性iSCSIブロックデバイスを提供できます。

6.1.2.2 Microsoft WindowsとHyper-V

Microsoft WindowsオペレーティングシステムのデフォルトのiSCSIイニシエータは、Microsoft iSCSIイニシエーターです。このiSCSIサービスはGUI (グラフィカルユーザインタフェース)を使用して設定でき、高可用性のためにマルチパスI/Oをサポートしています。

6.1.2.3 VMware

VMware vSphereおよびESXのデフォルトのiSCSIイニシエータは、VMware ESXソフトウェアiSCSIイニシエータvmkiscsiです。これが有効な場合、vSphere Clientから、またはvmkiscsi-toolコマンドを使用して設定できます。その後、vSphere iSCSIストレージアダプタを介してVMFSに接続されたストレージボリュームをフォーマットし、他のVMストレージデバイスと同じように使用できます。VMwareイニシエータも、高可用性のためにマルチパスI/Oをサポートしています。

6.2 ceph-iscsiに関する一般情報

ceph-iscsiは、RADOS Block Deviceの利点とiSCSIのユビキタスな汎用性を組み合わせたものです。iSCSIターゲットホスト(iSCSI Gatewayとして知られている)上でceph-iscsiを使用することで、Cephクライアントプロトコルに対応していなくても、ブロックストレージを利用する必要があるすべてのアプリケーションがCephの利点を享受できます。代わりに、ユーザはiSCSIまたは他のターゲットフロントエンドプロトコルを使用してLIOターゲットに接続できます。これにより、そのターゲットがすべてのI/OをRBDストレージ操作に変換します。

1つのiSCSI Gatewayで構成されるCephクラスタ
図 6.1: 1つのiSCSI Gatewayで構成されるCephクラスタ

ceph-iscsiは本質的に高可用性であり、マルチパス操作をサポートしています。したがって、ダウンストリームのイニシエータホストは、複数のiSCSI Gatewayを使用して高可用性とスケーラビリティの両方を実現できます。複数のゲートウェイで構成されるiSCSI設定で通信する場合、イニシエータはiSCSI要求を複数のゲートウェイに負荷分散できます。ゲートウェイに障害が発生したり、一時的にアクセス不可能であったり、保守のために無効になっていたりする場合、I/Oは別のゲートウェイ経由で透過的に継続されます。

複数のiSCSI Gatewayで構成されるCephクラスタ
図 6.2: 複数のiSCSI Gatewayで構成されるCephクラスタ

6.3 展開に関する考慮事項

SUSE Enterprise Storage 7とceph-iscsiの最小設定は以下のコンポーネントで構成されます。

  • Ceph Storage Cluster。Cephクラスタは、それぞれが8つ以上のOSD (オブジェクトストレージデーモン)をホストする少なくとも4台の物理サーバで構成されます。このような設定では、3つのOSDノードがモニタ(MON)ホストとしての役割も持ちます。

  • LIO iSCSIターゲットを実行する1つのiSCSIターゲットサーバ。ceph-iscsiで設定します。

  • 1つのiSCSIイニシエータホスト。open-iscsi (Linux)、Microsoft iSCSIイニシエーター(Microsoft Windows)、または互換性があるその他のiSCSIイニシエータ実装を実行します。

SUSE Enterprise Storage 7とceph-iscsiの推奨運用設定は以下で構成されます。

  • Ceph Storage Cluster。運用Cephクラスタは任意の数(通常は11以上)のOSDノードで構成されます。一般的にはそれぞれが10~12のOSD (オブジェクトストレージデーモン)を実行し、少なくとも3つの専用のMONホストを持ちます。

  • LIO iSCSIターゲットを実行する複数のiSCSIターゲットサーバ。ceph-iscsiで設定します。iSCSIのフェールオーバーと負荷分散を行うには、これらのサーバで、target_core_rbdモジュールをサポートするカーネルを実行する必要があります。更新パッケージはSUSE Linux Enterprise Server保守チャネルから入手できます。

  • 任意の数のiSCSIイニシエータホスト。open-iscsi (Linux)、Microsoft iSCSIイニシエーター(Microsoft Windows)、または互換性があるその他のiSCSIイニシエータ実装を実行します。

6.4 インストールと設定

このセクションでは、SUSE Enterprise StorageにiSCSI Gatewayをインストールして設定する手順について説明します。

6.4.1 CephクラスタへのiSCSI Gatewayの展開

Ceph iSCSI Gatewayの展開は他のCephサービスの展開と同じ手順で行われます。すなわり、cephadmを使用します。詳細については、「5.4.3.5項 「iSCSI Gatewayの展開」」を参照してください。

6.4.2 RBDイメージの作成

RBDイメージはCephストア内に作成され、その後iSCSIにエクスポートされます。この目的のため、専用のRADOSプールを使用することをお勧めします。Ceph rbdコマンドラインユーティリティを使用してStorage Clusterに接続できる任意のホストからボリュームを作成できます。このためには、クライアントが少なくとも最小限のceph.conf設定ファイルとCephX認証資格情報を持っている必要があります。

以降iSCSI経由でエクスポートするために新しいボリュームを作成するには、rbd createコマンドを使用して、ボリュームサイズをメガバイト単位で指定します。たとえば、iscsi-imagesという名前のプールにtestvolという名前の100GBのボリュームを作成するには、次のコマンドを実行します。

cephuser@adm > rbd --pool iscsi-images create --size=102400 testvol

6.4.3 iSCSIを経由したRBDイメージのエクスポート

iSCSI経由でRBDイメージをエクスポートするには、CephダッシュボードWebインタフェースか、ceph-iscsi gwcliユーティリティのいずれかを使用できます。このセクションでは、gwcliにのみ焦点を当て、コマンドラインを使用してRBDイメージをエクスポートするiSCSIターゲットを作成する方法を示します。

注記
注記

次のプロパティを持つRBDイメージは、iSCSI経由ではエクスポートできません。

  • journaling機能が有効化されたイメージ

  • stripe unitが4096バイト未満のイメージ

rootととして、iSCSI Gatewayのコンテナを入力します。

root # cephadm enter --name CONTAINER_NAME

rootとして、iSCSI Gatewayのコマンドラインインタフェースを起動します。

root # gwcli

iscsi-targetsに移動して、次の名前のターゲットを作成します。iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol

gwcli >  /> cd /iscsi-targets
gwcli >  /iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol

iSCSI Gatewayのnameipアドレスを指定して、ゲートウェイを作成します。

gwcli >  /iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gateways
gwcli >  /iscsi-target...tvol/gateways> create iscsi1 192.168.124.104
gwcli >  /iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
ヒント
ヒント

現在の設定ノードで使用可能なコマンドのリストを表示するには、helpコマンドを使用します。

testvolという名前のRBDイメージをプールiscsi-imagesに追加します。

gwcli >  /iscsi-target...tvol/gateways> cd /disks
gwcli >  /disks> attach iscsi-images/testvol

RBDイメージをターゲットにマップします。

gwcli >  /disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disks
gwcli >  /iscsi-target...testvol/disks> add iscsi-images/testvol
注記
注記

targetcliなどの下位レベルのツールを使用してローカル設定を照会することができますが、設定を変更しないでください。

ヒント
ヒント

lsコマンドを使用して、設定を確認できます。一部の設定ノードは、infoコマンドもサポートしています。このコマンドを使用すると、詳細情報を表示できます。

デフォルトではACL認証が有効になっているため、このターゲットにはまだアクセスできません。認証とアクセス制御の詳細については、6.4.4項 「認証とアクセス制御」を確認してください。

6.4.4 認証とアクセス制御

iSCSI認証は柔軟性があり、多数の認証方法に対応しています。

6.4.4.1 ACL認証の無効化

「認証なし」とは、イニシエータが、対応するターゲット上のすべてのLUNにアクセスできることを意味します。「認証なし」を有効にするには、ACL認証を無効にします。

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts
gwcli >  /iscsi-target...testvol/hosts> auth disable_acl

6.4.4.2 ACL認証の使用

イニシエータ名ベースのACL認証の使用時には、定義されたイニシエータのみが接続を許可されます。以下を実行して、イニシエータを定義できます。

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts
gwcli >  /iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20

定義されているイニシエータは接続できますが、イニシエータに明示的に追加されたRBDイメージにのみアクセスできます。

gwcli >  /iscsi-target...:e6ca28cc9f20> disk add rbd/testvol

6.4.4.3 CHAP認証の有効化

ACLに加えて、各イニシエータのユーザ名とパスワードを指定して、CHAP認証を有効にできます。

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts/iqn.1996-04.de.suse:01:e6ca28cc9f20
gwcli >  /iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
注記
注記

ユーザ名は8~64文字の長さが必要で、英数字と記号「.」、「@」、「-」、「_」、「:」を使用できます。

パスワードは12~16文字の長さが必要で、英数字と記号「@」、「-」、「_」、「/」を使用できます。

必要に応じて、authコマンドでmutual_usernameパラメータとmutual_passwordパラメータを指定して、CHAP相互認証を有効にすることもできます。

6.4.4.4 検出認証と相互認証の設定

「検出認証」は、前の認証方法とは異なります。参照用の資格情報が必要です。これはオプションで、次のコマンドによって設定できます。

gwcli >  /> cd /iscsi-targets
gwcli >  /iscsi-targets> discovery_auth username=du123456 password=dp1234567890
注記
注記

ユーザ名は8~64文字の長さが必要で、英数字と記号「.」、「@」、「-」、「_」、「:」を使用できます。

パスワードは12~16文字の長さが必要で、英数字と記号「@」、「-」、「_」、「/」を使用できます。

オプションで、discovery_authコマンドでmutual_usernameパラメータとmutual_passwordパラメータを指定することもできます。

検出認証は、次のコマンドを使用して無効にすることができます。

gwcli >  /iscsi-targets> discovery_auth nochap

6.4.5 高度な設定

高度なパラメータを使用してceph-iscsiを設定し、設定したパラメータをその後LIO I/Oターゲットに渡すことができます。パラメータは、ターゲットのパラメータとディスクのパラメータに分かれています。

警告
警告

特に明記されていない限り、これらのパラメータをデフォルト設定から変更することは推奨しません。

6.4.5.1 ターゲット設定の表示

infoコマンドを使用して、これらの設定の値を表示できます。

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
gwcli >  /iscsi-target...i.SYSTEM-ARCH:testvol> info

また、reconfigureコマンドを使用して、設定を変更します。

gwcli >  /iscsi-target...i.SYSTEM-ARCH:testvol> reconfigure login_timeout 20

使用可能なターゲット設定は、次のとおりです。

default_cmdsn_depth

CmdSN (コマンドシーケンス番号)のデフォルトの深さ。特定の時点でiSCSIイニシエータが未処理の状態にしておくことができる要求の量を制限します。

default_erl

デフォルトのエラー回復レベル。

login_timeout

ログインタイムアウトの値(秒)。

netif_timeout

NICの障害タイムアウト(秒)。

prod_mode_write_protect

1に設定すると、LUNへの書き込みを防止します。

6.4.5.2 ディスク設定の表示

infoコマンドを使用して、これらの設定の値を表示できます。

gwcli >  /> cd /disks/rbd/testvol
gwcli >  /disks/rbd/testvol> info

また、reconfigureコマンドを使用して、設定を変更します。

gwcli >  /disks/rbd/testvol> reconfigure rbd/testvol emulate_pr 0

使用可能なディスク設定は次のとおりです。

block_size

基礎となるデバイスのブロックサイズ。

emulate_3pc

1に設定すると、サードパーティコピーが有効になります。

emulate_caw

1に設定すると、Compare and Writeが有効になります。

emulate_dpo

1に設定すると、Disable Page Outがオンになります。

emulate_fua_read

1に設定すると、Force Unit Access読み込みが有効になります。

emulate_fua_write

1に設定すると、Force Unit Access書き込みが有効になります。

emulate_model_alias

1に設定すると、モデルのエイリアスに対してバックエンドデバイス名が使用されます。

emulate_pr

0に設定すると、Persistent Group Reservationを含む、SCSI予約のサポートが無効になります。無効になっている間、SES iSCSI Gatewayは予約状態を無視できるため、要求の遅延が改善されます。

ヒント
ヒント

iSCSIイニシエータでSCSI予約のサポートが必要ない場合は、backstore_emulate_pr0に設定することをお勧めします。

emulate_rest_reord

0に設定すると、Queue Algorithm ModifierにRestricted Reorderingが設定されます。

emulate_tas

1に設定すると、Task Aborted状態が有効になります。

emulate_tpu

1に設定すると、Thin Provisioning Unmapが有効になります。

emulate_tpws

1に設定すると、Thin Provisioning Write Sameが有効になります。

emulate_ua_intlck_ctrl

1に設定すると、Unit Attention Interlockが有効になります。

emulate_write_cache

1に設定すると、Write Cache Enableが有効になります。

enforce_pr_isids

1に設定すると、ISIDの永続的な予約が強制されます。

is_nonrot

1に設定すると、バックストアは非ローテーションデバイスになります。

max_unmap_block_desc_count

UNMAPのブロック記述子の最大数。

max_unmap_lba_count:

UNMAPのLBAの最大数。

max_write_same_len

WRITE_SAMEの最大長。

optimal_sectors

最適な要求サイズ(セクタ単位)。

pi_prot_type

DIF保護タイプ。

queue_depth

キューの深さ。

unmap_granularity

UNMAPの細分性。

unmap_granularity_alignment

UNMAPの細分性の配置。

force_pr_aptpl

有効にすると、クライアントがaptpl=1によって要求したかどうかに関係なく、LIOは常に永続ストレージに「永続予約」状態を書き出します。これは、LIOのカーネルRBDバックエンドには影響しません。常にPR状態を永続化します。これをtarget_core_rbdオプションで強制的に「1」に設定し、誰かが設定で無効にしようとした場合はエラーをスローするのが理想的です。

unmap_zeroes_data

LIOがLBPRZをSCSIイニシエータにアドバタイズするかどうかに影響します。これは、マップ解除ビットを使用したUNMAPまたはWRITE SAMEの後に、領域から0が読み込まれることを示します。

6.5 tcmu-runnerを使用したRADOS Block Deviceイメージのエクスポート

ceph-iscsiは、rbd (カーネルベース)およびuser:rbd (tcmu-runner)の両方のバックストアをサポートしており、すべての管理をバックストアから独立して透過的に実行できます。

警告
警告: 技術プレビュー

tcmu-runnerベースのiSCSI Gatewayの展開は現在のところ技術プレビューです。

カーネルベースののiSCSI Gatewayの展開と異なり、tcmu-runnerベースのiSCSI Gatewayの展開では、マルチパスI/OやSCSIの永続的な予約はサポートされません。

tcmu-runnerを使用してRADOS Block Deviceをエクスポートするには、ディスクの接続時にuser:rbdバックストアを指定することのみが必要です。

gwcli >  /disks> attach rbd/testvol backstore=user:rbd
注記
注記

tcmu-runnerを使用する場合、エクスポートされたRBDイメージでexclusive-lock機能が有効になっている必要があります。