21.6. 在 NVDIMM 上创建扇区命名空间以充当块设备

您可以在扇区模式(也称为传统模式)中配置非线性内存模块 (NVDIMM) 设备,以支持传统的基于块的存储。

您可以:

  • 将现有命名空间重新配置为扇区模式,或者
  • 如果有可用空间,创建一个新的 sector 命名空间。

先决条件

  • 一个 NVDIMM 设备被附加到您的系统。

21.6.1. 将现有的 NVDIMM 命名空间重新配置为扇区模式

您可以将非易失性双内存模块 (NVDIMM) 命名空间重新配置为扇区模式,将其用作快速块设备。

警告

重新配置命名空间会删除之前在命名空间中存储的数据。

先决条件

  • 已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl

流程

  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 --reconfig=namespace-ID --mode=sector

    例 21.1. 在扇区模式中重新配置 namespace1.0

    # ndctl create-namespace --force --reconfig=namespace1.0 --mode=sector
    {
      "dev":"namespace1.0",
      "mode":"sector",
      "size":"755.26 GiB (810.95 GB)",
      "uuid":"2509949d-1dc4-4ee0-925a-4542b28aa616",
      "sector_size":4096,
      "blockdev":"pmem1s"
    }

    重新配置的命名空间现在位于 /dev 目录下,存为 /dev/pmem1s 文件。

验证

  • 验证系统中的现有命名空间是否已重新配置:

    # ndctl list --namespace namespace1.0
    [
      {
        "dev":"namespace1.0",
        "mode":"sector",
        "size":810954706944,
        "uuid":"2509949d-1dc4-4ee0-925a-4542b28aa616",
        "sector_size":4096,
        "blockdev":"pmem1s"
      }
    ]

其他资源

  • ndctl-create-namespace (1) 手册页

21.6.2. 在扇区模式下创建新 NVDIMM 命名空间

您可以在扇区模式中创建一个非线性内存模块 (NVDIMM) 命名空间,以便在区域中存在可用空间时将其用作快速块设备。

先决条件

  • 已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl
  • NVDIMM 设备支持标签在区域中创建多个命名空间。您可以使用以下命令检查它:

    # ndctl read-labels nmem0 >/dev/null
      read 1 nmem

    这表示它读取一个 NVDIMM 设备的标签。如果值为 0,这表示您的设备不支持标签。

流程

  1. 列出系统上有可用空间的 pmem 区域。在以下示例中,在 region1region0 区域中有空间:

    # ndctl list --regions
    [
      {
        "dev":"region1",
        "size":2156073582592,
        "align":16777216,
        "available_size":2117418876928,
        "max_available_extent":2117418876928,
        "type":"pmem",
        "iset_id":-9102197055295954944,
        "badblock_count":1,
        "persistence_domain":"memory_controller"
      },
      {
        "dev":"region0",
        "size":2156073582592,
        "align":16777216,
        "available_size":2143188680704,
        "max_available_extent":2143188680704,
        "type":"pmem",
        "iset_id":736272362787276936,
        "badblock_count":3,
        "persistence_domain":"memory_controller"
      }
    ]
  2. 在任何可用区域上分配一个或多个命名空间:

    # ndctl create-namespace --mode=sector --region=regionN --size=namespace-size

    例 21.2. 在 region0 上创建 36-GiB 扇区命名空间

    # ndctl create-namespace --mode=sector --region=region0 --size=36G
    {
      "dev":"namespace0.1",
      "mode":"sector",
      "size":"35.96 GiB (38.62 GB)",
      "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817",
      "sector_size":4096,
      "blockdev":"pmem0.1s"
    }

    新命名空间现在作为 /dev/pmem0.1s 提供。

验证

  • 验证新命名空间是否在扇区模式中创建:

    # ndctl list -RN -n namespace0.1
    {
      "regions":[
        {
          "dev":"region0",
          "size":2156073582592,
          "align":16777216,
          "available_size":2104533975040,
          "max_available_extent":2104533975040,
          "type":"pmem",
          "iset_id":736272362787276936,
          "badblock_count":3,
          "persistence_domain":"memory_controller",
          "namespaces":[
            {
              "dev":"namespace0.1",
              "mode":"sector",
              "size":38615912448,
              "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817",
              "sector_size":4096,
              "blockdev":"pmem0.1s"
            }
          ]
        }
      ]
    }

其他资源

  • ndctl-create-namespace (1) 手册页