日本語PDF

PMEMデバイスの構成

Intel Persistent Memory (PMEM)デバイスで、ipmctlユーティリティを使用して、ネームスペース管理のためにPMEMモードおよびndctlユーティリティを構成します。

PMEMデバイスは、App Directモード、メモリー・モードまたは混在モードで動作できます。OMSを使用するには、BIOSを使用して、PMEMデバイスをapp directモードで構成する必要があります。

  1. BIOSで、「EDKII」「Socket Config」「Memory Config」「Memory Map」「Volatile Mode」を選択し、1LMに設定します。
  2. rootとしてログインし、現在構成されている容量を確認します。
    $ su -
    # ipmctl show -memoryresources

    出力は、次のようなものです。

    Capacity=3029.4 GiB
    MemoryCapacity=0.0 GiB
    AppDirectCapacity=3024.0 GiB
    UnconfiguredCapacity=0.0 GiB
    InaccessibleCapacity=5.4 GiB
    ReservedCapacity=0.0 GiB

    この例では、システムの総容量は3024 GiB (3247 GB)です。

    ノート:

    GiB (ギビバイト)は、230バイトに相当する1024 MiB (メビバイト)を表す単位です。
  3. リージョンがapp directモードで構成されているかどうかを確認します。
    # ipmctl show -region

    出力は、次のようなものです。

    SocketID | ISetID             | PersistentMemoryType | Capacity  | FreeCapacity | HealthState
    ===============================================================================================
    0x0000   | 0x97407f48df982ccc | AppDirect            | 1512.0 GiB | 0.0 GiB      | Healthy
    0x0001   | 0xfb907f48d59a2ccc | AppDirect            | 1512.0 GiB | 0.0 GiB      | Healthy

    この例では、2つのPMEMデバイス(ソケットごとに1つ)があります。各PMEMデバイスまたはリージョンの容量は1512 GiBであり、AppDirectモードをサポートします。

  4. リージョンごとにndctlコマンドを実行して、ネームスペースを作成します。この例では、前の例で2つのリージョンがあるため、コマンドを2回実行します。
    # ndctl create-namespace
    # ndctl create-namespace
  5. ネームスペースが作成されているかどうかを確認します。
    # ndctl list -u

    出力は、次のようなものです。

    [
      {
        "dev":"namespace1.0",
        "mode":"fsdax",
        "map":"dev",
        "size":"1488.37 GiB (1598.13 GB)",
        "uuid":"f8ec094d-5a69-4f87-9198-fb9117f2ea8e",
        "sector_size":512,
        "align":2097152,
        "blockdev":"pmem1"
      },
      {
        "dev":"namespace0.0",
        "mode":"fsdax",
        "map":"dev",
        "size":"1488.37 GiB (1598.13 GB)",
        "uuid":"8924aa35-701f-40cc-ba08-654aa5729611",
        "sector_size":512,
        "align":2097152,
        "blockdev":"pmem0"
      }
    ]

    この例では、2つのネームスペースnamespace0.0およびnamespace1.0をそれぞれNUMA nodes 0およびnode 1で使用できるようになりました。ネームスペースnamespace0.0およびnamespace1.0のブロック・デバイス・パスは、それぞれ/dev/pmem0および/dev/pmem1です。

  6. PMEMデバイスが2 MiBの位置揃えされた物理アドレスから始まることを確認します。

    永続メモリー・ネームスペースの位置揃えを決定するには、/proc/iomemファイルを表示します。

    # cat /proc/iomem | grep namespace
      3060000000-1aa5fffffff : namespace0.0
      1da00000000-353ffffffff : namespace1.0

    16進数のアドレスが2 MiB境界で位置揃えされているかどうかを確認します。

    0x3060000000 = 198144 MiB
    
    0x1da00000000 = 1941504 MiB

    この例では、両方のアドレスが2 MiB境界で位置揃えされています。

  7. PMEMストレージ・デバイスにパーティションを2つ作成します。1つはメタデータ用の約5%の小さいパーティションで、もう1つはデータ用です。

    /dev/pmem0で、2つのパーティションpmem0p1およびpmem0p2を作成します。

    ここで、pmem0p1は小さいメタデータ・パーティションで、pmem0p2は大きいデータ・パーティションです。

    次の例では、1488.37 GiBの合計領域の5%は約75 GiBになります。次のようにデバイスをパーティション化します。

    1. partedを起動し、デバイスを選択します。
      # parted /dev/pmem0
      
      GNU Parted 3.2
      Using /dev/pmem0
      Welcome to GNU Parted! Type 'help' to view a list of commands.
    2. mkpartコマンドを使用して、最初の新しい75 GiBのパーティションを作成します。
      (parted) mkpart
      Partition type? primary/extended? p
      File system type? [ext2]? xfs
      Start? 2MiB
      End? 75GiB
    3. mkpartコマンドを使用して、2番目の新しいパーティションを作成します。
      (parted) mkpart
      Partition type? primary/extended? p
      File system type? [ext2]? xfs
      Start? 75GiB
      End? -2MiB
    4. partedを終了し、シェル・プロンプトに戻ります。
      (parted) q
      Information: You may need to update /etc/fstab.

      同様に、/dev/pmem1デバイスをパーティション化します。

  8. 2 MiBにあるデータ・パーティションの開始セクターを揃えます。

    fdisk -l コマンドを実行する際、データ・パーティションの開始セクター番号は4096の倍数である必要があります。

    /dev/pmem0および/dev/pmem1fdisk -lコマンドを実行して、セクターが正しく位置揃えされているかどうかを確認します。

    # fdisk -l /dev/pmem0
    
    Disk /dev/pmem1: 1598.1 GB, 1598128390144 bytes, 3121344512 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk label type: dos
    Disk identifier: 0xc1d8d265
    
          Device Boot      Start         End      Blocks   Id  System
    /dev/pmem0p1            4096   157286399    78641152   83  Linux
    /dev/pmem0p2       157286400  3121340415  1482027008   83  Linux
    
    # fdisk -l /dev/pmem1
    
    Disk /dev/pmem1: 1598.1 GB, 1598128390144 bytes, 3121344512 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk label type: dos
    Disk identifier: 0x0003b5eb
    
          Device Boot      Start         End      Blocks   Id  System
    /dev/pmem1p1            4096   157286399    78641152   83  Linux
    /dev/pmem1p2       157286400  3121340415  1482027008   83  Linux

    これらの例では、データ・パーティションの開始セクターは4096の倍数であり、データ・パーティションが2 MiBに位置揃えされていることを確認します。

    157286400 / 4096 = 38400