配置模拟持久内存后未生成/dev/pmem设备的技术求助
排查/dev/pmem0未生成的步骤
以下是针对你遇到的持久内存模拟后未生成/dev/pmem0设备的排查方案:
验证驱动加载完整性
执行lsmod | grep -E 'pmem|nd_pmem',确认pmem和nd_pmem模块已加载。如果缺失,手动加载:modprobe pmem && modprobe nd_pmem。检查内存区域对齐合法性
你的内核命令行参数memmap=0x800000!0x1cc74058中,起始地址0x1cc74058未对齐到2MB(0x200000)边界,这会导致pmem驱动无法识别该区域。修改起始地址为最近的2MB对齐地址,比如0x1cc00000,对应参数改为memmap=0x800000!0x1cc00000,重启后验证内核日志中的内存区域是否对齐。安装并使用ndctl工具扫描配置
- 安装ndctl工具包(对应发行版的包管理器,如
apt install ndctl或dnf install ndctl)。 - 执行
ndctl list -NR,查看系统是否识别到标记为persistent的内存区域。如果显示未配置的区域,执行ndctl create-namespace --mode=fsdax来创建命名空间,完成后通常会自动生成/dev/pmem0设备。
- 安装ndctl工具包(对应发行版的包管理器,如
确认内核编译配置
检查内核是否开启了持久内存相关配置:zcat /proc/config.gz | grep -E 'CONFIG_BLK_DEV_PMEM|CONFIG_NVDIMM|CONFIG_DAX'确保上述配置均为
=y或=m,如果是=n则需要重新编译内核开启对应选项。排查内核日志中的错误信息
执行dmesg | grep -i pmem和dmesg | grep -i nvdimm,查找是否有诸如对齐错误、区域无效、驱动初始化失败等日志,这些信息能直接定位问题根源。
内容的提问来源于stack exchange,提问作者Seth Robertson
相关产品推荐
相关产品推荐

