SCSI予約とSCSI永続的予約とは何ですか。
環境
- ONTAP 9
- clustered Data ONTAP 8
- Data ONTAP 7 以前
- FlexPod
質問と回答
SCSI予約とSCSI-3永続的予約とは何ですか
- SCSI予約は、ディスクやテープ ドライブなどの共有SCSIデバイスへのアクセスを制御するために使用されます。
- イニシエータは、他のイニシエータがLUNに変更を加えるのを防ぐために、LUNに予約を設定します。これはファイルロックの概念と似ています。SCSI予約は常にホストイニシエータによって設定されます。理想的には、同じイニシエータが影響を受けたLUNでSCSIリリースを実行します。
- SCSI予約の仕組みはSCSIプロトコルで規定されています。これらのプロトコルで規定されているように、予約はデバイスへのアクセスを制御するために使用されます。
- 元々のSCSI予約メカニズムはSCSI Reserve and Release、またはSCSI-2 Reservationsと呼ばれていました。このメカニズムでは、イニシエータがSCSI Reserveコマンドを使用して予約を設定します。この予約は、所有しているホストがSCSI Releaseコマンドを発行するか、SCSIバスリセットによって解除できます。したがって、エラーリカバリのためにSCSIバスリセットが実行されると、予約は解除されます。
- SCSI-3 Primary Commands仕様は、永続的予約として知られる最新の予約アプローチを提供します。永続的予約は、バスがエラーリカバリのためにリセットされても予約が維持される機能を追加します。これらはSCSI Persistent Reserve OutおよびPersistent Reserve INコマンドを使用して設定されます。SPC-2はReserve and Releaseと永続的予約の両方をサポートしていますが、これら2つのメカニズムは相互に排他的です。
- クラシック予約がデバイスに設定されている場合、クラシックリリースが実行されるまで、すべての後続の永続的予約要求は失敗します。新しいSPC-3仕様では、従来のReserve and Releaseメカニズムは廃止され、永続的予約が推奨されています。
- SCSIプロトコル仕様には、予約に関する詳細が記載されています。
SCSI-3永続的予約はどのように機能しますか?
- SCSI-3永続的予約は、複数のノードが1台のデバイスにアクセスしながら、同時に他のノードへのアクセスをブロックすることをサポートします。SCSI-3永続的予約は、ホストからディスクへの複数のパスもサポートしますが、SCSI-2予約はサポートせず、LUNへの単一パスでのみ動作します。
- SCSI-3永続的予約は、登録と予約の概念を使用します。参加するシステムは、LUNにキーを登録します。各システムは独自のキーを登録します。この後、登録済みのシステムは予約を確立できます。この方法では、書き込みアクセスのブロックはデバイスから登録を削除するだけで簡単に行えます。他のシステムを排除したいシステムは、他の登録済みイニシエータを登録、クリア、またはプリエンプトできます。この方法は、スプリットブレイン状態を効果的に回避します。
- 永続的予約は、I_Tネクサスと呼ばれる複数のイニシエータとターゲットの関係を追跡することで、複数のクライアント(イニシエータ)がターゲットと通信できるようにします。I_Tネクサスは、SCSIターゲット内の特定のLUNに対する特定のSCSIイニシエータポートとSCSIターゲットポートの関係です。
- 永続的予約を設定する最初のステップは、リザベーションキーの登録です。リザベーションキーは各I_Tネクサスに固有であり、リザベーションを制御するためにI_Tネクサスデバイスの認証を可能にするための必要な情報が含まれています。
永続的予約には2つのコマンドがあります。
persistent reserve in
:イニシエータが、既存の予約と登録に関するターゲット上の情報を読み取るために使用します。persistent reserve out
:イニシエータが、予約の登録、設定、変更、およびエラー回復のための予約の解除に使用します。
SCSI永続的予約コマンドでは、予約や解放などの特定の機能を実行するために、Service Actionsと呼ばれるサブコマンドも使用します。次の例は、persistent reserve out
Service Actionsを使用して永続的予約を設定する方法です。
ターゲットからイニシエータにreservation conflict
応答が送信されると、競合するイニシエータはreserve
要求を再試行する必要があります。ホストイニシエータのOSは、reserve
要求を再試行する間隔を制御します。競合しているホストは、次のいずれかのイベントが発生するまで、ターゲットからreservation conflict
ステータスを取得し続けます。
- 制御ホストが
release
コマンドを送信します。 - SCSIバスデバイスリセットが任意のイニシエータから発行されます。
注:SCSI-3 永続的予約は、ターゲットデバイスの電源サイクルをまたいで保持される場合があります。この動作は、予約reserve
要求がAPTPLフラグを使用してターゲットに送信される時に、イニシエータによって決定されます。
SCSI予約は、NetAppストレージシステムでいくつかの理由で使用されます:
- SAN環境では、NetAppファブリック接続型ストレージシステムは、イニシエータによって要求されたLUNに対して、クラシックリリース/リザーブおよび永続的予約を設定し、順守します。
- テープ バックアップ環境では、ストレージシステムはSCSI予約を使用してDynamic Drive Sharing環境でテープ ドライブを予約するように設定できます。
- Data ONTAP 7.1.1より前のリリースでは、SCSI予約 / リリース予約は
options tape.persistent_reservations [on | off]
コマンドで制御されていました。 - Data ONTAP 7.1.1以降では、SCSI予約 / リリースまたはSCSI永続的予約のいずれかを設定できるようになりました。
options tape.persistent_reservations
コマンドは廃止され、options tape.reservations [scsi | persistent]
コマンドに置き換えられました。
- Data ONTAP 7.1.1より前のリリースでは、SCSI予約 / リリース予約は
- NetApp ハイアベイラビリティ(HA)ストレージコントローラは、SCSI予約を使用してディスクアクセスを制御します。
- ハードウェアディスク所有権を使用するHAペアの場合、SCSI予約はcfテイクオーバー時にのみ使用されます。
- ソフトウェアディスク所有権を使用するHAペアでは、システムがcfテイクオーバー中かどうかに関係なく、SCSI予約が使用されます。
- ディスク シェルフの電源サイクルを通じて永続的ではありません。このため、ディスク シェルフの電源が失われたりドライブがリセットされた場合に備えて、テイクオーバーしたノードが定期的に予約を再アサートします。
- 予約が存在することは確認できますが、どのノードが予約を設定したかを特定することはできません。
- SANOWN(Software Disk Ownership)を使用するアクティブ-アクティブ クラスタパートナーは、SCSI-3永続的予約を使用してディスク所有権を制御します。
- HAペアがcf takeover状態かどうかに関係なく、これらの予約は使用されます。これらの予約はリブート後も永続的です。
- 予約を所有するノードは、読み取りおよび書き込み機能を含めてディスクを完全に制御できます。
- SCSI-3永続的予約は30秒ごとに再アサートされます。
ホストからSCSI-2予約の競合を解決する
どのようにlun reset
およびtarget reset
コマンドはSCSI-2予約に影響しますか
- ホストベースのソフトウェアを使用することが、SCSI予約をクリアする最良の方法です。通常、LUNは1つのホストにマッピングされます。ただし、ホストクラスタの場合、同じLUNが通常すべてのクラスタノードにマッピングされます。
- 場合によっては、ホストが開始していない予約をクリアする必要があることがあります。 これは、
lun reset
およびtarget reset
SCSIコマンドを使用して行います。
ストレージシステムがlun reset
またはtarget reset
commandを受信したとき、どのように応答しますか?
- リセットを受信すると、次のメッセージが記録されます。
Mon Jan 5 18:19:40 CST [storage1: scsitarget.ispfct.lunReset:notice]: FCP Target 5a: LUN 0 was Reset by the Initiator at Port Id: 0x74001f (WWPN 5001438002210a3e)
Mon Jan 5 18:18:01 CST [storage1: scsitarget.ispfct.targetReset:notice]: FCP Target 6a: Target was Reset by the Initiator at Port Id: 0x1d3600 (WWPN 500508b200b65d52)
コマンドを実行するときに特定のLUNを使用する必要がありますか? target reset
target reset
コマンドは、特定のLUNをアドレス指定しなくてもイニシエータから送信できますが、lun reset
は特定のLUNをアドレス指定する必要があります。
警告: ターゲットをリセットすると、このコマンドを発行したイニシエータにマッピングされているすべてのLUN上のすべてのコマンドが中止されます。 また、中止を開始したイニシエータがアクセスするLUNへの他のイニシエータからのコマンドも中止されます。 |
例:
SCSItarget reset or lun reset
コマンドでSCSI-2予約はクリアされますか
回答
lun reset
またはtarget reset
コマンドはSCSI-3永続的予約に影響しますか
いいえ
SCSI lun reset
コマンドは、このLUNを認識しているホストのどのイニシエータからでも発行できますか
○ただし、lun reset
コマンドは特定のLUNに対して指定する必要があります。
SCSI lun reset
は、特定のLUNにログインしている他のイニシエータに影響しますか
○特定のLUNにマッピングされているすべてのイニシエータはLUN RESET
通知を受信します。
SCSI target resetコマンドは、ターゲットLUNにログインしているすべてのイニシエータのすべてのLUNに影響しますか?
ターゲット リセットをNetApp SCSIターゲットで実行すると、target resetコマンドを送信しているイニシエータにマッピングされているLUNのみがリセットされます。
SnapDriveのSCSI予約の競合に関連するエラー
- LUNにSnapDriveを使用して接続しようとすると、これらのエラーが表示されることがあります:
Unable to locate a LUN to perform requested operation.
The LUN has SCSI reservation but has not been mapped.
- WindowsホストのComputer Management>Disk Managementで、ディスクが
Unknown/Unreadable
と表示されることもあります。 - これは、SCSI予約をクリアすることで解決できます。
これらの予約をクリアするには、ホストベースのソフトウェアを使用することを推奨します。
この方法がうまくいかない場合は、NetApp Global Support のエスカレーションエンジニアが、必要に応じてストレージシステムから対応できます。
SCSI-3永続的予約の競合をNetAppストレージシステムで解決する場合 - 予約をクリアする前に、NetAppサポートにお問い合わせください。NetAppストレージシステムからです。