8.10. NFS で pNFS SCSI レイアウトを有効にする

NFS サーバーとクライアントを構成して、データにアクセスするために pNFS SCSI レイアウトを使用できます。pNFS SCSI は、ファイルへの長時間のシングルクライアントアクセスを伴うユースケースで有益です。

前提条件

  • クライアントとサーバーの両方が SCSI コマンドを同じブロックデバイスに送信できるようにする必要があります。つまり、ブロックデバイスは共有 SCSI バス上にある必要があります。
  • ブロックデバイスに XFS ファイルシステムが含まれている必要があります。
  • SCSI デバイスは、SCSI-3 Primary Commands 仕様で説明されている SCSI Persistent Reservations に対応する必要があります。

8.10.1. pNFS SCSI レイアウト

SCSI レイアウトは、pNFS ブロックレイアウトの作業に基づいています。レイアウトは SCSI デバイス全体で定義されます。これには、SCSI 永続予約に対応できる論理ユニット (LU) として、一連の固定サイズブロックが含まれます。LU デバイスは、SCSI デバイス ID により識別されます。
pNFS SCSI は、ファイルへの長時間の単一クライアントアクセスを伴うユースケースで良好に機能します。例としては、クラスターを収容するメールサーバーまたは仮想マシンが挙げられます。

クライアントとサーバーとの間の操作

NFS クライアントがファイルの読み取りまたは書き込みを行うと、クライアントは LAYOUTGET 操作を実行します。サーバーは、SCSI デバイス上のファイルの場所で応答します。クライアントは、使用する SCSI デバイスを決定するために、GETDEVICEINFO の追加操作の実行が必要になる場合があります。この操作が正しく機能すると、クライアントが READ 操作および WRITE 操作をサーバーに送信する代わりに、SCSI デバイスに直接 I/O 要求を発行できます。
クライアント間のエラーまたは競合により、サーバーがレイアウトを取り消すか、クライアントにレイアウトを発行しない可能性があります。この場合、クライアントは、I/O 要求を SCSI デバイスに直接送信する代わりに、サーバーに READ 操作および WRITE 操作を発行するようにフォールバックします。
操作を監視するには、「pNFS SCSI レイアウト機能の監視」を参照してください。

デバイスの予約

pNFS SCSI は、予約の割り当てを介してフェンシングを処理します。サーバーはクライアントにレイアウトを発行する前に、SCSI デバイスを予約して、登録済みのクライアントのみがデバイスにアクセスできるようにします。クライアントがその SCSI デバイスにコマンドを発行できるが、デバイスに登録されていない場合、そのデバイスでのクライアントからの多くの操作は失敗します。たとえば、サーバーがクライアントにそのデバイスのレイアウトを与えていない場合は、クライアントの blkid コマンドは XFS ファイルシステムの UUID の表示に失敗します。
サーバーは、自身の永続的な予約を削除しません。これにより、クライアントとサーバーを再起動しても、デバイス上のファイルシステム内のデータが保護されます。SCSI デバイスの用途を変えるには、NFS サーバー上の永続的な予約を手動で削除することが必要になる場合があります。

8.10.2. pNFS と互換性のある SCSI デバイスの確認

この手順では、SCSI デバイスが pNFS SCSI レイアウトをサポートしているかどうかを確認します。

前提条件

  • sg3_utils パッケージをインストールします。
    # yum install sg3_utils

手順8.4 pNFS と互換性のある SCSI デバイスの確認

  • サーバーとクライアントの両方で、適切な SCSI デバイスのサポートを確認します。
    # sg_persist --in --report-capabilities --verbose path-to-scsi-device
    Persist Through Power Loss Active (電力損失が発生しても持続する) (PTPL_A) ビットが設定されていることを確認します。

    例8.8 pNFS SCSI に対応する SCSI デバイス

    以下は、pNFS SCSI に対応する SCSI デバイスの sg_persist 出力の例です。PTPL_A ビットは 1 を報告します。
        inquiry cdb: 12 00 00 00 24 00
        Persistent Reservation In cmd: 5e 02 00 00 00 00 00 20 00 00
      LIO-ORG   block11           4.0
      Peripheral device type: disk
    Report capabilities response:
      Compatible Reservation Handling(CRH): 1
      Specify Initiator Ports Capable(SIP_C): 1
      All Target Ports Capable(ATP_C): 1
      Persist Through Power Loss Capable(PTPL_C): 1
      Type Mask Valid(TMV): 1
      Allow Commands: 1
      Persist Through Power Loss Active(PTPL_A): 1
        Support indicated in Type mask:
          Write Exclusive, all registrants: 1
          Exclusive Access, registrants only: 1
          Write Exclusive, registrants only: 1
          Exclusive Access: 1
          Write Exclusive: 1
          Exclusive Access, all registrants: 1

関連情報

  • man ページの sg_persist(8)

8.10.3. サーバーでの pNFS SCSI の設定

この手順では、pNFS SCSI レイアウトをエクスポートするように NFS サーバーを構成します。

手順8.5 サーバーでの pNFS SCSI の設定

  1. サーバーで、SCSI デバイスに作成された XFS ファイルシステムをマウントします。
  2. NFS バージョン 4.1 以降をエクスポートするように NFS サーバーを構成します。/etc/nfs.conf ファイルの [nfsd] セクションで次のオプションを設定します。
    [nfsd]
    
    vers4.1=y
  3. pnfs オプションを使用して、NFS 経由で XFS ファイルシステムをエクスポートするように NFS サーバーを構成します。

    例8.9 pNFS SCSI をエクスポートするための /etc/exports のエントリー

    /etc/exports 設定ファイルの次のエントリーは、/exported/directory/ にマウントされたファイルシステムを、pNFS SCSI レイアウトとして allowed.example.com クライアントにエクスポートします。
    /exported/directory allowed.example.com(pnfs)

関連情報

8.10.4. クライアントでの pNFS SCSI の設定

この手順では、pNFS SCSI レイアウトをマウントするように NFS クライアントを構成します。

前提条件

手順8.6 クライアントでの pNFS SCSI の設定

  • クライアントで、NFS バージョン 4.1 以降を使用して、エクスポートされた XFS ファイルシステムをマウントします。
    # mount -t nfs -o nfsvers=4.1 host:/remote/export /local/directory
    NFS なしで XFS ファイルシステムを直接マウントしないでください。

関連情報

8.10.5. サーバーでの pNFS SCSI 予約の解放

この手順では、NFS サーバーが SCSI デバイスに保持している永続的な予約を解放します。これにより、pNFS SCSI をエクスポートする必要がなくなったときに SCSI デバイスを再利用できます。
サーバーから予約を削除する必要があります。別の IT Nexus から削除することはできません。

前提条件

  • sg3_utils パッケージをインストールします。
    # yum install sg3_utils

手順8.7 サーバーでの pNFS SCSI 予約の解放

  1. サーバーにある予約をクエリーします。
    # sg_persist --read-reservation path-to-scsi-device

    例8.10 /dev/sda で予約のクエリー

    # sg_persist --read-reservation /dev/sda
    
      LIO-ORG   block_1           4.0
      Peripheral device type: disk
      PR generation=0x8, Reservation follows:
        Key=0x100000000000000
        scope: LU_SCOPE,  type: Exclusive Access, registrants only
  2. サーバーの既存の登録を削除します。
    # sg_persist --out \
                 --release \
                 --param-rk=reservation-key \
                 --prout-type=6 \
                 path-to-scsi-device

    例8.11 /dev/sda の予約の削除

    # sg_persist --out \
                 --release \
                 --param-rk=0x100000000000000 \
                 --prout-type=6 \
                 /dev/sda
    
      LIO-ORG   block_1           4.0
      Peripheral device type: disk

関連情報

  • man ページの sg_persist(8)

8.10.6. pNFS SCSI レイアウト機能の監視

pNFS クライアントとサーバーが適切な pNFS SCSI 操作を交換するか、通常の NFS 操作にフォールバックするかを監視できます。

前提条件

  • pNFS SCSI クライアントおよびサーバーが構成されます。

8.10.6.1. nfsstat を使用したサーバーからの pNFS SCSI 操作の確認

この手順では、nfsstat ユーティリティーを使用して、サーバーからの pNFS SCSI 操作を監視します。

手順8.8 nfsstat を使用したサーバーからの pNFS SCSI 操作の確認

  1. サーバーから提供される操作を監視します。
    # watch --differences \
            "nfsstat --server | egrep --after-context=1 read\|write\|layout"
    
    Every 2.0s: nfsstat --server | egrep --after-context=1 read\|write\|layout
    
    putrootfh    read         readdir      readlink     remove	 rename
    2         0% 0         0% 1         0% 0         0% 0         0% 0         0%
    --
    setcltidconf verify	  write        rellockowner bc_ctl	 bind_conn
    0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
    --
    getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence
    0         0% 29        1% 49        1% 5         0% 0         0% 2435     86%
  2. クライアントとサーバーは、次の場合に pNFS SCSI 操作を使用します。
    • カウンター layoutgetlayoutreturn、および layoutcommit の増分。これは、サーバーがレイアウトを提供していることを意味します。
    • サーバーのカウンター read および write は増加しません。これは、クライアントが SCSI デバイスに対して直接 I/O 要求を実行していることを意味します。

8.10.6.2. mountstats を使用したクライアントからの pNFS SCSI 操作の確認

この手順では、/proc/self/mountstats ファイルを使用して、クライアントからの pNFS SCSI 操作を監視します。

手順8.9 mountstats を使用したクライアントからの pNFS SCSI 操作の確認

  1. 各マウントの操作カウンターの一覧を表示します。
    # cat /proc/self/mountstats \
          | awk /scsi_lun_0/,/^$/ \
          | egrep device\|READ\|WRITE\|LAYOUT
    
    device 192.168.122.73:/exports/scsi_lun_0 mounted on /mnt/rhel7/scsi_lun_0 with fstype nfs4 statvers=1.1
        nfsv4:  bm0=0xfdffbfff,bm1=0x40f9be3e,bm2=0x803,acl=0x3,sessions,pnfs=LAYOUT_SCSI
                READ: 0 0 0 0 0 0 0 0
               WRITE: 0 0 0 0 0 0 0 0
            READLINK: 0 0 0 0 0 0 0 0
             READDIR: 0 0 0 0 0 0 0 0
           LAYOUTGET: 49 49 0 11172 9604 2 19448 19454
        LAYOUTCOMMIT: 28 28 0 7776 4808 0 24719 24722
        LAYOUTRETURN: 0 0 0 0 0 0 0 0
         LAYOUTSTATS: 0 0 0 0 0 0 0 0
  2. その結果では、以下のようになります。
    • LAYOUT 統計は、クライアントとサーバーが pNFS SCSI 操作を使用する要求を示します。
    • READ および WRITE の統計は、クライアントとサーバーが NFS 操作にフォールバックする要求を示します。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。