4.6. NVDIMM でのデバイス DAX 名前空間の作成

デバイスの DAX モードで NVDIMM デバイスを設定すると、ダイレクトアクセス機能を備えたキャラクターストレージに対応できます。

次のいずれかになります。

  • 既存の名前空間をデバイスの DAX モードに再設定
  • 利用可能な領域がある場合は、新しいデバイスの DAX 名前空間を作成

前提条件

  • NVDIMM デバイスがシステムに接続されている。

4.6.1. デバイスのダイレクトアクセスモードの NVDIMM

デバイスダイレクトアクセス (デバイス DAX である devdax) は、ファイルシステムの関与なしで、アプリケーションがストレージに直接アクセスできる手段を提供します。デバイス DAX の利点は、ndctl ユーティリティーの --align オプションを使用して設定できる、保証されたフォールトの粒度を提供することです。

Intel 64 アーキテクチャおよび AMD64 アーキテクチャでは、以下のフォールト粒度に対応しています。

  • 4 KiB
  • 2 MiB
  • 1 GiB

デバイス DAX ノードは、以下のシステム呼び出しにのみ対応しています。

  • open()
  • close()
  • mmap()

デバイス DAX のユースケースは永続メモリープログラミングに関連付けられているため、read() バリアントおよび write() バリアントには対応していません。

4.6.2. ndctl のインストール

この手順では、NVDIMM デバイスの設定および監視に使用する ndctl ユーティリティーをインストールします。

手順

  • ndctl ユーティリティーをインストールするには、次のコマンドを使用します。

    # yum install ndctl

4.6.3. 既存の NVDIMM 名前空間をデバイス DAX モードに再構成

以下の手順では、NVDIMM デバイスで名前空間を DAX モードに再構成し、名前空間にデータを保存できるようにします。

警告

名前空間を再設定すると、名前空間に保存しておいたすべてのデータが削除されます。

前提条件

手順

  1. システムにある名前空間の一覧を表示します。

    # ndctl list --namespaces --idle
    
    [
      {
        "dev":"namespace1.0",
        "mode":"raw",
        "size":34359738368,
        "state":"disabled",
        "numa_node":1
      },
      {
        "dev":"namespace0.0",
        "mode":"raw",
        "size":34359738368,
        "state":"disabled",
        "numa_node":0
      }
    ]
  2. 名前空間を再設定します。

    # ndctl create-namespace \
            --force \
            --mode=devdax \
            --reconfig=namespace-ID

    例4.3 名前空間をデバイス DAX として再設定

    次のコマンドは、DAX に対応するデータストレージ用に namespace0.0 を再設定します。オペレーティングシステムが一度に 2 MiB ページでフォールトされるように、2 MiB フォールトの粒度に合わせて調整されます。

    # ndctl create-namespace \
            --force \
            --mode=devdax \
            --align=2M \
            --reconfig=namespace0.0
  3. 名前空間は、/dev/daxN.M パスで利用できます。

関連情報

  • man ページの ndctl-create-namespace(1)

4.6.4. デバイス DAX モードでの新しい NVDIMM 名前空間の作成

以下の手順では、NVDIMM デバイスに新たなデバイス DAX 名前空間を作成し、この名前空間にデータを保存できるようにします。

前提条件

  • ndctl ユーティリティーがインストールされている。「ndctl のインストール」を参照してください。
  • NVDIMM デバイスがラベルに対応している。

手順

  1. 利用可能な領域があるシステムの pmem リージョンの一覧を表示します。以下の例では、region5 リージョンと region4 リージョンの領域が利用できます。

    # ndctl list --regions
    
    [
      {
        "dev":"region5",
        "size":270582939648,
        "available_size":270582939648,
        "type":"pmem",
        "iset_id":-7337419320239190016
      },
      {
        "dev":"region4",
        "size":270582939648,
        "available_size":270582939648,
        "type":"pmem",
        "iset_id":-137289417188962304
      }
    ]
  2. いずれのリージョンでも、複数の名前空間を割り当てます。

    # ndctl create-namespace \
            --mode=devdax \
            --region=regionN \
            --size=namespace-size

    例4.4 リージョンへの名前空間の作成

    次のコマンドは、region4 に 36-GiB のデバイス DAX 名前空間を作成します。オペレーティングシステムが一度に 2 MiB ページでフォールトされるように、2 MiB フォールトの粒度に合わせて調整されます。

    # ndctl create-namespace \
            --mode=devdax \
            --region=region4 \
            --align=2M \
            --size=36G
    
    {
      "dev":"namespace1.2",
      "mode":"devdax",
      "map":"dev",
      "size":"35.44 GiB (38.05 GB)",
      "uuid":"5ae01b9c-1ebf-4fb6-bc0c-6085f73d31ee",
      "raw_uuid":"4c8be2b0-0842-4bcb-8a26-4bbd3b44add2",
      "daxregion":{
        "id":1,
        "size":"35.44 GiB (38.05 GB)",
        "align":2097152,
        "devices":[
          {
            "chardev":"dax1.2",
            "size":"35.44 GiB (38.05 GB)"
          }
        ]
      },
      "numa_node":1
    }
  3. 名前空間は、/dev/daxN.M パスで利用できます。

関連情報

  • man ページの ndctl-create-namespace(1)

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