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予約とも呼ばれていました。このメカニズムでは、イニシエータはSCSI Reserveコマンドを使用して予約を設定します。この予約は、所有ホストがSCSI Releaseコマンドを発行するか、SCSIバスをリセットすることで解除できます。したがって、エラー リカバリのためにSCSIバス リセットが実行されると、予約が解放されます。
- SCSI-3 Primary Commands仕様では、永続的予約と呼ばれる最新の予約方法が規定されています。永続的予約により、エラー リカバリのためにバスがリセットされた場合でも、予約が保持されるようになります。これらは、SCSI Persistent Reserve OutコマンドおよびPersistent Reserve Inコマンドを使用して設定されます。SPC-2はReserve and Releaseと永続的予約の両方をサポートしていますが、これら2つのメカニズムは相互に排他的です。
- デバイスに従来の予約が設定されている場合、従来のReleaseが実行されるまで、それ以降のすべての永続的予約要求は失敗します。新しいSPC-3仕様では、従来のReserve and Releaseメカニズムを廃止し、永続的予約を推奨しています。
- 予約の詳細については、SCSI プロトコル 仕様を参照してください。
SCSI-3永続的予約はどのように機能しますか?
- SCSI-3の永続的予約機能は、複数のノードがデバイスにアクセスすると同時に、他のノードからのアクセスをブロックすることをサポートします。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予約を使用して、ダイナミックドライブ共有環境でテープ ドライブを予約するようにストレージシステムを構成できます。
- 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テイクオーバー状態にあるかどうかに関わらず使用されます。これらの予約は再起動後も継続されます。
- 予約を所有するノードは、読み書き機能を含め、ディスクに対する完全な制御権を持ちます。
- SCSI-3の永続的予約は30秒ごとに再主張されます。
ホストからSCSI-2予約の競合を解決する
どのようにlun reset およびtarget resetコマンドはSCSI-2予約に影響しますか
- ホストベースのソフトウェアを使用するのが、SCSI予約を解除する最良の方法です。通常、LUNは単一のホストにマッピングされます。しかし、ホストクラスタの場合、 通常、同じLUNがすべてのクラスタノードにマッピングされます。
- 場合によっては、ホストが自身が開始したものではない予約を解除する必要が生じる可能性があります。 これは、
lun resetおよびtarget resetSCSIコマンドを使用して行われます。
ストレージシステムがlun resetまたはtarget resetcommandを受信したとき、どのように応答しますか?
- リセットを受信すると、次のメッセージが記録されます。
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)
target reset コマンドを発行する際、特定の LUN を使用する必要がありますか?
target resetコマンドは特定のLUNを指定せずにイニシエータから送信できますが、lun resetは特定のLUNを指定する必要があります。
| 警告:ターゲットリセットを実行すると、このコマンドを発行したイニシエータにマッピングされているすべてのLUN上のすべてのコマンドが中止されます。 また、中止命令を発動したイニシエータがアクセスするLUNに対して、他のイニシエータから発動されたコマンドも中止します。 |
例:

SCSI target reset or lun reset コマンドはSCSI-2予約をクリアしますか?
はい
lun reset またはtarget reset コマンドはSCSI-3永続的予約に影響を与えますか?
いいえ
SCSIlun reset コマンドは、 このLUNを認識できる任意のホスト上の任意のイニシエータから発行できますか?
はい。ただし、 lun reset コマンドは特定のLUNに対して発行される必要があります。
SCSIlun resetは、特定のLUNにログインしている他のイニシエータに影響を与えますか?
はい。特定のLUNにマッピングされたすべてのイニシエータが、LUN RESET通知を受け取ります。
SCSIターゲットリセットコマンドは、 ターゲットLUNにログインしているすべてのイニシエータのすべてのLUNに影響しますか?
NetApp SCSIターゲットでのターゲットリセットは、ターゲットリセットコマンドを送信しているイニシエータにマッピングされている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ストレージシステムからです。