9 追加サービスの展開 #
9.1 iSCSIゲートウェイのインストール #
iSCSIは、クライアント(「イニシエータ」)から、リモートサーバ上のSCSIストレージデバイス(「ターゲット」)にSCSIコマンドを送信できるようにするSAN (ストレージエリアネットワーク)プロトコルです。SUSE Enterprise Storage 7.1には、Cephのストレージ管理をiSCSIプロトコル経由でMicrosoft Windows*、VMware* vSphereなどの異種クライアントから利用できるようにする機能が含まれています。マルチパスiSCSIアクセスによってこれらのクライアントの可用性とスケーラビリティが向上すると同時に、標準化されたiSCSIプロトコルがクライアントとSUSE Enterprise Storage 7.1クラスタ間に追加のセキュリティ分離層も提供します。この設定機能はceph-iscsi
という名前です。Cephストレージ管理者は、ceph-iscsi
を使用して、シンプロビジョニングおよび複製された高可用性ボリュームを定義できます。これらのボリュームでは、Ceph RBD (RADOS Block Device)により、読み込み専用スナップショット、読み書きクローン、および自動サイズ調整がサポートされます。これにより、単一のceph-iscsi
ゲートウェイホスト、またはマルチパスフェールオーバーをサポートする複数のゲートウェイホストを通じてボリュームをエクスポートできます。iSCSIプロトコルによってボリュームを他のSCSIブロックデバイスと同じように利用できるようになり、Linux、Microsoft Windows、およびVMwareホストはiSCSIプロトコルを使用してボリュームに接続できます。つまり、SUSE Enterprise Storage 7.1の顧客は、従来のSANの特徴と利点をすべて備えた完全なブロックストレージインフラストラクチャサブシステムをCeph上で効果的に実行でき、将来の増加に対応できます。
この章では、CephクラスタインフラストラクチャをiSCSI Gatewayと共に設定し、クライアントホストがiSCSIプロトコルを使ってリモート保存データをローカルストレージデバイスとして使用できるようにするための情報について詳しく説明します。
9.1.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を強くお勧めします。
9.1.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固有のバックエンドモジュールもあります。
9.1.1.2 iSCSIイニシエータ #
このセクションでは、Linux、Microsoft Windows、およびVMwareの各プラットフォームで使用されているiSCSIイニシエータについて簡単に紹介します。
9.1.1.2.1 Linux #
Linuxプラットフォームの標準のイニシエータはopen-iscsi
です。open-iscsi
はデーモンiscsid
を起動し、ユーザはこのデーモンを使用して特定のポータル上のiSCSIターゲットを検出してターゲットにログインし、iSCSIボリュームをマップできます。iscsid
はSCSIの中間層と通信して、カーネル内ブロックデバイスを作成します。これにより、カーネルはこのブロックデバイスをシステムの他のSCSIブロックデバイスと同じように扱うことができます。open-iscsi
イニシエータをデバイスマッパーマルチパス(dm-multipath
)機能と組み合わせて展開することで、高可用性iSCSIブロックデバイスを提供できます。
9.1.1.2.2 Microsoft WindowsとHyper-V #
Microsoft WindowsオペレーティングシステムのデフォルトのiSCSIイニシエータは、Microsoft iSCSIイニシエーターです。このiSCSIサービスはGUI (グラフィカルユーザインタフェース)を使用して設定でき、高可用性のためにマルチパスI/Oをサポートしています。
9.1.1.2.3 VMware #
VMware vSphereおよびESXのデフォルトのiSCSIイニシエータは、VMware ESXソフトウェアiSCSIイニシエータvmkiscsi
です。これが有効な場合、vSphere Clientから、またはvmkiscsi-tool
コマンドを使用して設定できます。その後、vSphere iSCSIストレージアダプタを介してVMFSに接続されたストレージボリュームをフォーマットし、他のVMストレージデバイスと同じように使用できます。VMwareイニシエータも、高可用性のためにマルチパスI/Oをサポートしています。
9.1.2 ceph-iscsi
に関する一般情報 #
ceph-iscsi
は、RADOS Block Deviceの利点とiSCSIのユビキタスな汎用性を組み合わせたものです。iSCSIターゲットホスト(iSCSI Gatewayとして知られている)上でceph-iscsi
を使用することで、Cephクライアントプロトコルに対応していなくても、ブロックストレージを利用する必要があるすべてのアプリケーションがCephの利点を享受できます。代わりに、ユーザはiSCSIまたは他のターゲットフロントエンドプロトコルを使用してLIOターゲットに接続できます。これにより、そのターゲットがすべてのI/OをRBDストレージ操作に変換します。
ceph-iscsi
は本質的に高可用性であり、マルチパス操作をサポートしています。したがって、ダウンストリームのイニシエータホストは、複数のiSCSI Gatewayを使用して高可用性とスケーラビリティの両方を実現できます。複数のゲートウェイで構成されるiSCSI設定で通信する場合、イニシエータはiSCSI要求を複数のゲートウェイに負荷分散できます。ゲートウェイに障害が発生したり、一時的にアクセス不可能であったり、保守のために無効になっていたりする場合、I/Oは別のゲートウェイ経由で透過的に継続されます。
9.1.3 展開に関する考慮事項 #
SUSE Enterprise Storage 7.1と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.1と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イニシエータ実装を実行します。
9.1.4 インストールと設定 #
このセクションでは、SUSE Enterprise StorageにiSCSI Gatewayをインストールして設定する手順について説明します。
9.1.4.1 CephクラスタへのiSCSI Gatewayの展開 #
Ceph iSCSI Gatewayの展開は他のCephサービスの展開と同じ手順で行われます。すなわり、cephadmを使用します。詳細については、「8.3.5項 「iSCSI Gatewayの展開」」を参照してください。
9.1.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
9.1.4.3 iSCSIを経由したRBDイメージのエクスポート #
iSCSI経由でRBDイメージをエクスポートするには、CephダッシュボードWebインタフェースか、ceph-iscsi
gwcliユーティリティのいずれかを使用できます。このセクションでは、gwcliにのみ焦点を当て、コマンドラインを使用してRBDイメージをエクスポートするiSCSIターゲットを作成する方法を示します。
次のプロパティを持つRBDイメージは、iSCSI経由ではエクスポートできません。
journaling
機能が有効化されたイメージstripe unit
が4096バイト未満のイメージ
root
ととして、iSCSI Gatewayのコンテナを入力します。
#
cephadm enter --name CONTAINER_NAME
root
として、iSCSI Gatewayのコマンドラインインタフェースを起動します。
#
gwcli
iscsi-targets
に移動して、次の名前のターゲットを作成します。iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
iSCSI Gatewayのname
とip
アドレスを指定して、ゲートウェイを作成します。
gwcli >
/iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gatewaysgwcli >
/iscsi-target...tvol/gateways> create iscsi1 192.168.124.104gwcli >
/iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
現在の設定ノードで使用可能なコマンドのリストを表示するには、help
コマンドを使用します。
testvol
という名前のRBDイメージをプールiscsi-images
に追加します。
gwcli >
/iscsi-target...tvol/gateways> cd /disksgwcli >
/disks> attach iscsi-images/testvol
RBDイメージをターゲットにマップします。
gwcli >
/disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disksgwcli >
/iscsi-target...testvol/disks> add iscsi-images/testvol
targetcli
などの下位レベルのツールを使用してローカル設定を照会することができますが、設定を変更しないでください。
ls
コマンドを使用して、設定を確認できます。一部の設定ノードは、info
コマンドもサポートしています。このコマンドを使用すると、詳細情報を表示できます。
デフォルトではACL認証が有効になっているため、このターゲットにはまだアクセスできません。認証とアクセス制御の詳細については、9.1.4.4項 「認証とアクセス制御」を確認してください。
9.1.4.4 認証とアクセス制御 #
iSCSI認証は柔軟性があり、多数の認証方法に対応しています。
9.1.4.4.1 ACL認証の無効化 #
「認証なし」とは、イニシエータが、対応するターゲット上のすべてのLUNにアクセスできることを意味します。「認証なし」を有効にするには、ACL認証を無効にします。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> auth disable_acl
9.1.4.4.2 ACL認証の使用 #
イニシエータ名ベースのACL認証の使用時には、定義されたイニシエータのみが接続を許可されます。以下を実行して、イニシエータを定義できます。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20
定義されているイニシエータは接続できますが、イニシエータに明示的に追加されたRBDイメージにのみアクセスできます。
gwcli >
/iscsi-target...:e6ca28cc9f20> disk add rbd/testvol
9.1.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:e6ca28cc9f20gwcli >
/iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
ユーザ名は8~64文字の長さが必要で、英数字と記号「.
」、「@
」、「-
」、「_
」、「:
」を使用できます。
パスワードは12~16文字の長さが必要で、英数字と記号「@
」、「-
」、「_
」、「/
」を使用できます。
必要に応じて、auth
コマンドでmutual_username
パラメータとmutual_password
パラメータを指定して、CHAP相互認証を有効にすることもできます。
9.1.4.4.4 検出認証と相互認証の設定 #
「検出認証」は、前の認証方法とは異なります。参照用の資格情報が必要です。これはオプションで、次のコマンドによって設定できます。
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> discovery_auth username=du123456 password=dp1234567890
ユーザ名は8~64文字の長さが必要で、英数字と記号「.
」、「@
」、「-
」、「_
」、「:
」のみ使用できます。
パスワードは12~16文字の長さが必要で、英数字と記号「@
」、「-
」、「_
」、「/
」を使用できます。
オプションで、discovery_auth
コマンドでmutual_username
パラメータとmutual_password
パラメータを指定することもできます。
検出認証は、次のコマンドを使用して無効にすることができます。
gwcli >
/iscsi-targets> discovery_auth nochap
9.1.4.5 高度な設定 #
高度なパラメータを使用してceph-iscsi
を設定し、設定したパラメータをその後LIO I/Oターゲットに渡すことができます。パラメータは、ターゲット
のパラメータとディスク
のパラメータに分かれています。
特に明記されていない限り、これらのパラメータをデフォルト設定から変更することは推奨しません。
9.1.4.5.1 ターゲット設定の表示 #
info
コマンドを使用して、これらの設定の値を表示できます。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvolgwcli >
/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への書き込みを防止します。
9.1.4.5.2 ディスク設定の表示 #
info
コマンドを使用して、これらの設定の値を表示できます。
gwcli >
/> cd /disks/rbd/testvolgwcli >
/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_pr
を0
に設定することをお勧めします。- 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が読み込まれることを示します。
9.1.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
機能が有効になっている必要があります。