Red Hat Training

A Red Hat training course is available for RHEL 8

第 5 章 使用 NVDIMM 持久性内存存储

作为系统管理员,您可以在连接到您的系统的非线性内存模块(NVDIMM)设备上启用和管理各种类型的存储。

有关在 NVDIMM 存储中安装 Red Hat Enterprise Linux 8,请参阅安装到 NVDIMM 设备

5.1. NVDIMM 持久内存技术

NVDIMM 持久内存(也称为存储类内存或 pmem )是内存和存储的组合。

NVDIMM 将存储的持久性与低访问延迟和高带宽动态 RAM(DRAM)相结合:

  • NVDIMM 存储是字节可寻址的,因此可使用 CPU 负载和存储说明访问它。除了访问基于块的传统存储所需的 read()write() 系统调用外,NVDIMM 还支持直接负载和存储编程模型。
  • NVDIMM 的性能特征与访问延迟非常低的 DRAM 非常低,通常以十亿纳秒为单位。
  • 当电源关闭时,保存在 NVDIMM 中的数据(如存储数据)会被保留。
  • 直接访问(DAX)技术使应用程序能够直接访问内存映射存储,无需通过系统页面缓存。这样便可为其他目的释放 DRAM。

在以下用例中 NVDIMM 很有用,比如:

数据库
NVDIMM 减少的存储访问延迟可显著提高数据库性能。
快速重启

快速重启也被称为热缓存效果。例如:文件服务器在启动后没有在内存中的文件内容。客户端连接和读取或者写入数据时,会在页面缓存中缓存这些数据。最后,缓存包括大多数热数据。重启后,该系统必须在传统存储上再次启动该进程。

如果应用程序设计正确,NVDIMM 可让应用程序在重启后保留热缓存。在本例中,不会涉及页面缓存:应用将数据直接缓存到持久内存中。

快速写缓存
在数据被存入持久介质前,文件服务器通常不会确认客户端的写入请求。使用 NVDIMM 作为快速写入缓存可让文件服务器快速确认写入请求,因为会较低延迟。

5.2. NVDIMM 交集和地区

NVDIMM 设备支持分组到交集区域。

NVDIMM 设备可以像常规 DRAM 一样分组为 interleave 组件。interleave 集与跨多个 DIMM 的 RAID 0 级别(条带)配置类似。Interleave 集也称为 区域(region)

交集具有以下优点:

  • NVDIMM 设备配置为交集时可受益于提升的性能。
  • 交集可将多个较小的 NVDIMM 设备组合成更大的逻辑设备。

NVDIMM 交集是在系统 BIOS 或 UEFI 固件中配置的。

Red Hat Enterprise Linux 为每个交集创建一个区域设备。

5.3. NVDIMM 命名空间

NVDIMM 区域被分成一个或多个命名空间。命名空间允许您根据命名空间类型,使用不同的方法访问该设备。

有些 NVDIMM 设备不支持区域中的多个命名空间:

  • 如果您的 NVDIMM 设备支持标签,您可以将区域重新划分到命名空间。
  • 如果您的 NVDIMM 设备不支持标签,则区域只能包含单个命名空间。在这种情况下,Red Hat Enterprise Linux 会创建一个覆盖整个区域的默认命名空间。

5.4. NVDIMM 访问模式

您可以将 NVDIMM 命名空间配置为使用以下模式之一:

sector

将存储显示为一个快速块设备。此模式适用于尚未修改为使用 NVDIMM 存储的旧应用程序,或用于利用完整 I/O 堆栈(包括设备映射器)的应用程序。

sector 设备可以与系统中的其它块设备相同。您可以在其中创建分区或文件系统,将其配置为软件 RAID 集的一部分,或者将其用作 dm-cache 的缓存设备。

此模式中的设备位于 /dev/pmemNs。请参阅创建命名空间后列出的 blockdev 值。

devdax,或者设备直接访问(DAX)

支持 NVDIMM 设备支持直接访问编程,如存储网络行业协会(SNIA)非Volatile Memory(NVM)编程模型规格中所述。在这种模式中,I/O 绕过内核的存储堆栈。因此无法使用设备映射器驱动程序。

设备 DAX 通过使用 DAX 字符设备节点提供对 NVDIMM 存储的原始访问。使用 CPU 缓存清除和隔离说明,可以使 devdax 设备中的数据持久化。某些数据库和虚拟机系统管理程序可能会从此模式中受益。无法在 devdax 设备中创建文件系统。

此模式中的设备位于 /dev/daxN.M。请参阅创建命名空间后列出的 chardev 值。

fsdax,或者文件系统直接访问(DAX)

支持 NVDIMM 设备支持直接访问编程,如存储网络行业协会(SNIA)非Volatile Memory(NVM)编程模型规格中所述。在这种模式中,I/O 绕过内核的存储堆栈,因此无法使用许多设备映射器驱动程序。

您可以在文件系统 DAX 设备中创建文件系统。

此模式中的设备位于 /dev/pmemN。请参阅创建命名空间后列出的 blockdev 值。

重要

文件系统 DAX 技术仅作为技术预览提供,红帽不提供支持。

raw

显示不支持 DAX 的内存磁盘。在这个模式中,命名空间有一些限制,不应使用。

此模式中的设备位于 /dev/pmemN。请参阅创建命名空间后列出的 blockdev 值。

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

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

您可以:

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

先决条件

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

5.5.1. 安装 ndctl

此流程安装 ndctl 工具,用于配置和监控 NVDIMM 设备。

流程

  • 要安装 ndctl 工具程序,请使用以下命令:

    # yum install ndctl

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

此流程将 NVDIMM 命名空间重新配置为扇区模式,以用作快速块设备。

警告

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

先决条件

流程

  1. 将所选命名空间重新配置为扇区模式:

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

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

    namespace1.0 命名空间重新配置为使用 sector 模式:

    # ndctl create-namespace \
            --force \
            --reconfig=namespace1.0 \
            --mode=sector
    
    {
      "dev":"namespace1.0",
      "mode":"sector",
      "size":"11.99 GiB (12.87 GB)",
      "uuid":"5805480e-90e6-407e-96a4-23e1cde2ed78",
      "raw_uuid":"879d9e9f-fd43-4ed5-b64f-3bcd0781391a",
      "sector_size":4096,
      "blockdev":"pmem1s",
      "numa_node":1
    }
  2. 重新配置的命名空间现在包括在 /dev 目录中,为 /dev/pmemNs

其它资源

  • ndctl-create-namespace(1) man page

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

此流程在 NVDIMM 设备上创建新扇区命名空间,可让您将其用作传统块设备。

先决条件

流程

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

    # 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=sector \
            --region=regionN \
            --size=namespace-size

    例 5.2. 在区域上创建命名空间

    以下命令在 region4 中创建 36-GiB 扇区命名空间:

    # ndctl create-namespace \
            --mode=sector \
            --region=region4 \
            --size=36G
  3. 新命名空间现在位于 /dev 目录中为 /dev/pmemNs

其它资源

  • ndctl-create-namespace(1) man page

5.6. 在 NVDIMM 上创建设备 DAX 命名空间

您可以在设备 DAX 模式下配置 NVDIMM 设备来支持有直接访问功能的字符存储。

您可以:

  • 将现有命名空间重新配置为设备 DAX 模式,或者
  • 如果有可用空间,创建一个新设备 DAX 命名空间。

先决条件

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

5.6.1. 设备直接访问模式中的 NVDIMM

设备直接访问(设备 DAX,devdax)为应用程序提供了直接访问存储的方法,而无需文件系统。设备 DAX 的优点是它提供了一个有保证的故障粒度,可以使用 ndctl 工具的 --align 选项进行配置

对于 Intel 64 和 AMD64 构架,支持以下故障颗粒度:

  • 4 KiB
  • 2 MiB
  • 1 GiB

设备 DAX 节点只支持以下系统调用:

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

不支持 read()write() 变体,因为设备 DAX 用例与持久内存编程相关联。

5.6.2. 安装 ndctl

此流程安装 ndctl 工具,用于配置和监控 NVDIMM 设备。

流程

  • 要安装 ndctl 工具程序,请使用以下命令:

    # yum install ndctl

5.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

    例 5.3. 将命名空间配置为设备 DAX

    以下命令为支持 DAX 的数据存储重新配置 namespace0.0。它与 2MiB 错误粒度一致,可确保一次 2-MiB 页中的操作系统错误:

    # ndctl create-namespace \
            --force \
            --mode=devdax \
            --align=2M \
            --reconfig=namespace0.0
  3. 命名空间现在包括在 /dev/daxN.M 路径中。

其它资源

  • ndctl-create-namespace(1) man page

5.6.4. 在设备 DAX 模式下创建新 NVDIMM 命名空间

此流程在 NVDIMM 设备上创建新设备 DAX 命名空间,可让您在命名空间中存储数据。

先决条件

流程

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

    # 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

    例 5.4. 在区域上创建命名空间

    以下命令在 region4 中创建 36-GiB 设备 DAX 命名空间。它与 2MiB 错误粒度一致,可确保一次 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 路径中。

其它资源

  • ndctl-create-namespace(1) man page

5.7. 在 NVDIMM 上创建文件系统 DAX 命名空间

您可以在文件系统 DAX 模式中配置 NVDIMM 设备来支持有直接访问功能的文件系统。

您可以:

  • 将现有命名空间重新配置为文件系统 DAX 模式,或者
  • 如果有可用空间,请创建新文件系统 DAX 命名空间。
重要

文件系统 DAX 技术仅作为技术预览提供,红帽不提供支持。

先决条件

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

5.7.1. 文件系统直接访问模式中的 NVDIMM

当以文件系统直接访问(文件系统 DAX, fsdax)模式配置 NVDIMM 设备时,可以在其上创建文件系统。

任何在这个文件系统中的文件上执行 mmap() 操作的应用程序都会直接访问其存储。这启用了 NVDIMM 的直接访问编程模型。文件系统必须使用 -o dax 选项挂载才能进行直接映射。

按页元数据分配

这个模式需要在系统 DRAM 或者 NVDIMM 设备本身中分配每个页面的元数据。每个 4 KiB 页的这个数据结构的开销是 64 字节:

  • 在小设备中,开销非常小,足以满足 DRAM 的要求。例如,16-GiB 命名空间只需要 256 MiB 作为页面结构。因为 NVDIMM 设备通常比较小且昂贵,所以最好将页面跟踪数据结构保存在 DRAM 中。
  • 在大小为 TB 或更大的 NVDIMM 设备中,存储页面跟踪数据结构所需的内存量可能会超过系统中 DRAM 的数量。一个 NVDIMM TiB 只需要 16 GiB 用于页面结构。因此,在这种情况下,最好在 NVDIMM 本身中存储数据结构。

您可以在配置命名空间时使用 --map 选项配置每个页面元数据的存储位置:

  • 要在系统 RAM 中分配,请使用 --map=mem
  • 要分配 NVDIMM,请使用 --map=dev
fsdax 中的分区和文件系统

当在 fsdax 设备中创建分区时,分区必须按页界限一致。在 Intel 64 和 AMD64 构架中,启动和结束分区至少需要 4 KiB 校对。2 MiB 是首选的校对。

在 Red Hat Enterprise Linux 8 中,作为技术预览可在 NVDIMM 上创建 XFS 和 ext4 文件系统。

5.7.2. 安装 ndctl

此流程安装 ndctl 工具,用于配置和监控 NVDIMM 设备。

流程

  • 要安装 ndctl 工具程序,请使用以下命令:

    # yum install ndctl

5.7.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=fsdax \
            --reconfig=namespace-ID

    例 5.5. 将命名空间配置为文件系统 DAX

    要将 namespace0.0 用于支持 DAX 的文件系统,请使用以下命令:

    # ndctl create-namespace \
            --force \
            --mode=fsdax \
            --reconfig=namespace0.0
    
    {
      "dev":"namespace0.0",
      "mode":"fsdax",
      "size":"32.00 GiB (34.36 GB)",
      "uuid":"ab91cc8f-4c3e-482e-a86f-78d177ac655d",
      "blockdev":"pmem0",
      "numa_node":0
    }
  3. 命名空间现在包括在 /dev/pmemN 路径中。

其它资源

  • ndctl-create-namespace(1) man page

5.7.4. 在文件系统 DAX 模式下创建新 NVDIMM 命名空间

此流程在 NVDIMM 设备上创建新文件系统 DAX 命名空间,可让您在命名空间中存储文件。

先决条件

流程

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

    # 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=fsdax \
            --region=regionN \
            --size=namespace-size

    例 5.6. 在区域上创建命名空间

    以下命令在 region4 中创建 36-GiB 文件系统 DAX 命名空间:

    # ndctl create-namespace \
            --mode=fsdax \
            --region=region4 \
            --size=36G
    
    {
      "dev":"namespace4.0",
      "mode":"fsdax",
      "size":"35.44 GiB (38.05 GB)",
      "uuid":"9c5330b5-dc90-4f7a-bccd-5b558fa881fe",
      "blockdev":"pmem4",
      "numa_node":0
    }
  3. 命名空间现在包括在 /dev/pmemN 路径中。

其它资源

  • ndctl-create-namespace(1) man page

5.7.5. 在文件系统 DAX 设备中创建文件系统

这个过程在文件系统 DAX 设备中创建文件系统,并挂载文件系统。

流程

  1. 另外,还可在文件系统 DAX 设备中创建分区。请参阅 第 3.3 节 “创建分区”

    默认情况下,parted 工具在 1 MiB 边界对齐分区。对于第一个分区,指定 2 MiB 作为分区的起点。如果分区的大小是 2 MiB 的倍数,则所有其他分区也都一致。

  2. 在分区或者 NVDIMM 设备中创建 XFS 或者 ext4 文件系统。

    对于 XFS,禁用共享 copy-on-write 数据扩展,因为它们与 dax 挂载选项不兼容。另外,为了增加大页面映射的可能性,请设置条带单元和分条宽度。

    # mkfs.xfs -m reflink=0 -d su=2m,sw=1 fsdax-partition-or-device
  3. 使用 -o dax 挂载选项挂载文件系统:

    # mount -o dax fsdax-partition-or-device mount-point
  4. 应用程序现在可以使用持久内存并在挂载点目录中创建文件,打开文件,并使用 mmap 操作映射文件以进行直接访问。

其它资源

  • mkfs.xfs(8) man page

5.8. NVDIMM 持久内存故障排除

您可以在 NVDIMM 设备中检测并修复不同类型的错误。

先决条件

  • NVDIMM 设备已连接到您的系统并进行了配置。

5.8.1. 安装 ndctl

此流程安装 ndctl 工具,用于配置和监控 NVDIMM 设备。

流程

  • 要安装 ndctl 工具程序,请使用以下命令:

    # yum install ndctl

5.8.2. 使用 S.M.A.R.T 监控 NVDIMM 健康状况。

有些 NVDIMM 设备支持自助服务、分析和报告技术(S.M.A.R.T.)界面来获取健康信息。

重要

定期监控 NVDIMM 健康状况以防止数据丢失。如果 S.M.A.R.T. 报告 NVDIMM 设备的健康状况出现问题,则替换它,如 第 5.8.3 节 “检测和替换断开问题的 NVDIMM 设备” 所述。

先决条件

  • 在有些系统中,必须载入 acpi_ipmi 驱动程序才能检索健康信息:

    # modprobe acpi_ipmi

流程

  • 要访问健康信息,请使用以下命令:

    # ndctl list --dimms --health
    
    ...
        {
          "dev":"nmem0",
          "id":"802c-01-1513-b3009166",
          "handle":1,
          "phys_id":22,
          "health":
          {
            "health_state":"ok",
            "temperature_celsius":25.000000,
            "spares_percentage":99,
            "alarm_temperature":false,
            "alarm_spares":false,
            "temperature_threshold":50.000000,
            "spares_threshold":20,
            "life_used_percentage":1,
            "shutdown_state":"clean"
          }
         }
    ...

其它资源

  • ndctl-list(1) man page

5.8.3. 检测和替换断开问题的 NVDIMM 设备

如果您在系统日志或者 S.M.A.R.T. 中发现与 NVDIMM 相关的错误消息,这可能意味着 NVDIMM 设备失败。在这种情况下,需要:

  1. 检测哪个 NVDIMM 设备失败
  2. 备份保存的数据
  3. 物理替换该设备

流程

  1. 要检测出问题的设备,请使用以下命令:

    # ndctl list --dimms --regions --health --media-errors --human

    badblocks 字段显示哪些 NVDIMM 有问题。在 dev 字段中记录它的名称。

    例 5.7. NVDIMM 设备的健康状态

    在以下示例中,名为 nmem0 的 NVDIMM 有问题:

    # ndctl list --dimms --regions --health --media-errors --human
    
    ...
      "regions":[
        {
          "dev":"region0",
          "size":"250.00 GiB (268.44 GB)",
          "available_size":0,
          "type":"pmem",
          "numa_node":0,
          "iset_id":"0xXXXXXXXXXXXXXXXX",
          "mappings":[
            {
              "dimm":"nmem1",
              "offset":"0x10000000",
              "length":"0x1f40000000",
              "position":1
            },
            {
              "dimm":"nmem0",
              "offset":"0x10000000",
              "length":"0x1f40000000",
              "position":0
            }
          ],
          "badblock_count":1,
          "badblocks":[
            {
              "offset":65536,
              "length":1,
              "dimms":[
                "nmem0"
              ]
            }
          ],
          "persistence_domain":"memory_controller"
        }
      ]
    }
  2. 使用以下命令查找有问题的 NVDIMM 的 phys_id 属性:

    # ndctl list --dimms --human

    在前面的例子中,您知道 nmem0 是有问题的 NVDIMM。因此,找到 nmem0phys_id 属性。

    例 5.8. NVDIMM 的 phys_id 属性

    在以下示例中,phys_id0x10:

    # ndctl list --dimms --human
    
    [
      {
        "dev":"nmem1",
        "id":"XXXX-XX-XXXX-XXXXXXXX",
        "handle":"0x120",
        "phys_id":"0x1c"
      },
      {
        "dev":"nmem0",
        "id":"XXXX-XX-XXXX-XXXXXXXX",
        "handle":"0x20",
        "phys_id":"0x10",
        "flag_failed_flush":true,
        "flag_smart_event":true
      }
    ]
  3. 使用以下命令查找有问题的 NVDIMM 的内存插槽:

    # dmidecode

    在输出中,找到 Handle 标识符与有问题的 NVDIMM 的 phys_id 属性匹配的条目。Locator 字段列出了无法正常工作的 NVDIMM 使用的内存插槽。

    例 5.9. NVDIMM 内存插槽列表

    在以下示例中,nmem0 设备与 0x0010 标识符匹配,并使用 DIMM-XXX-YYYY 内存插槽:

    # dmidecode
    
    ...
    Handle 0x0010, DMI type 17, 40 bytes
    Memory Device
            Array Handle: 0x0004
            Error Information Handle: Not Provided
            Total Width: 72 bits
            Data Width: 64 bits
            Size: 125 GB
            Form Factor: DIMM
            Set: 1
            Locator: DIMM-XXX-YYYY
            Bank Locator: Bank0
            Type: Other
            Type Detail: Non-Volatile Registered (Buffered)
    ...
  4. 备份 NVDIMM 上的命名空间中的所有数据。如果您在替换 NVDIMM 前没有备份数据,当您从系统中删除 NVDIMM 时数据将会丢失。

    警告

    在某些情况下,比如 NVDIMM 完全无法正常工作,备份可能会失败。

    要防止这种情况,使用 S.M.A.R.T 定期监控 NVDIMM 设备,如 第 5.8.2 节 “使用 S.M.A.R.T 监控 NVDIMM 健康状况。” 所述,并在出现问题前替换失败的 NVDIMM。

    使用以下命令列出 NVDIMM 上的命名空间:

    # ndctl list --namespaces --dimm=DIMM-ID-number

    例 5.10. NVDIMM 命名空间列表

    在以下示例中, nmem0 设备包含需要备份的 namespace0.0namespace0.2 命名空间:

    # ndctl list --namespaces --dimm=0
    
    [
      {
        "dev":"namespace0.2",
        "mode":"sector",
        "size":67042312192,
        "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "sector_size":4096,
        "blockdev":"pmem0.2s",
        "numa_node":0
      },
      {
        "dev":"namespace0.0",
        "mode":"sector",
        "size":67042312192,
        "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "sector_size":4096,
        "blockdev":"pmem0s",
        "numa_node":0
      }
    ]
  5. 以物理方式替换失效的 NVDIMM。

其它资源

  • ndctl-list(1) man page
  • dmidecode(8) man page