20 附录A.LINUX安装NDCTL和DAXCTL
ndctl实用程序用于管理Linux内核中的libnvdimm(非易失性内存设备)子系统和管理命名空间namespaces。daxctl实用程序为您创建的任何设备dax命名空间namespaces并提供枚举和设置命令。只有直接使用设备dax命名空间时,才需要daxctl。在第10章中,我们给出了一个“system-ram”dax类型的用例,它可以使用持久内存容量来动态扩展Linux中可用的易失性内存容量。第10章还展示了除了使用DRAM之外,libmemkind如何使用设备dax命名空间来扩展易失性内存。对于大多数开发人员来说,默认和推荐的名称空间是filesystem-dax(fsdax)。仅限Linux的实用程序(ndctl和daxctl)都是开放源代码的,并意图打造为与持久性内存供应商无关的工具。Microsoft Windows集成了图形实用程序和PowerShell命令来管理持久内存。
如果从源代码编译,则需要libndctl和libdaxctl来实现几个持久内存开发工具包(PMDK)的特性。如果ndctl不可用,PMDK可能不会构建所有组件和功能,但它仍将成功编译和安装。在本附录中,我们将描述如何仅使用Linux包存储库安装ndctl和daxctl。要从源代码编译ndctl,请参阅ndctl GitHub存储库中的README(https://github.com/pmem/ndctl)或者https://docs.pmem.io。
20.1 安装先决条件
使用包安装ndctl和daxctl会自动在系统上安装任何缺失的依赖项包。安装包时,通常会列出依赖项的完整列表。您可以查询包存储库以列出依赖项或使用联机包,如https://pkgs.org来找到操作系统的包并列出包的详细信息。例如,图A-1显示了Fedora 30上的ndctl v64.1所需的包(https://fedora.pkgs.org/30/fedora-x86_64/ndctl-64.1-1.fc30.x86_64.rpm.html)。
![](http://4i-bird.com/wp-content/uploads/2020/12/image-85.png)
20.2 用LINUX发布包库安装NDCTL 和DAXCTL
ndctl和daxctl实用程序作为运行时二进制文件提供,可以选择安装开发头文件,这些文件可用于将其功能集成到应用程序中,或者在从源代码编译PMDK时使用。要创建调试二进制文件,需要从源代码编译ndctl和daxctl。请参阅项目页上的README https://github.com/pmem/ndctl或者https://docs.pmem.io用于详细说明。
20.2.1 查找包仓库内的包
操作系统的默认包管理器实用程序将允许您使用正则表达式查询包存储库以标识要安装的包。表A-1显示了如何使用命令行实用程序搜索多个发行版的包存储库。如果您喜欢使用GUI,可以使用您喜爱的桌面实用程序来执行此处描述的相同搜索和安装操作。
![](http://4i-bird.com/wp-content/uploads/2020/12/image-86.png)
此外,您还可以使用在线包搜索工具,如网址:https://pkgs.org允许您跨多个发行版搜索包。图A-2显示了搜索“libpmem”时许多发行版的结果。
![](http://4i-bird.com/wp-content/uploads/2020/12/image-87.png)
20.2.2 从包库安装NDCTL和DAXCTL
下面是一些流行的Linux发行版的说明。跳到操作系统部分。如果您的操作系统未在此列出,则它可能与此处列出的软件包系列共享,因此您可以使用相同的说明。如果您的操作系统不符合这两个条件,请参阅ndctl项目主页https://github.com/pmem/ndctl或者https://docs.pmem.io用于安装说明。
注意,操作系统中可用的ndctl和daxctl版本可能与最新的项目版本不匹配。如果需要比操作系统提供的版本更新的版本,请考虑从源代码编译项目。我们在这本书中没有描述从源代码编译和安装。有关说明,请参见https://docs.pmem.io/getting-started-guide/installing-ndctl#installing-ndctl-from-sourceon-linux和https://github.com/pmem/ndctl
20.2.3 在Fedora 22及以后版本上安装PMDK
要安装各个单独的包,可以执行:
$ sudo dnf install <package>
例如,只安装ndctl运行时工具和库,使用:
$ sudo dnf install ndctl
安装所有包,使用:
运行时:
$ sudo dnf install ndctl daxctl
开发库:
$ sudo dnf install ndctl-devel
20.2.4 在 RHEL/CentOS 7.5及以上版本安装PMDK
要安装各个单独的包,可以执行:
$ sudo yum install <package>
例如,只安装ndctl运行时工具和库,使用:
$ sudo yum install ndctl
安装所有包,使用:
运行时:
$ yum install ndctl daxctl
开发库:
$ yum install ndctl-devel
20.2.5 在SLES 12/ OpenSUSE 及以上安装PMDK
要安装各个单独的包,可以执行:
$ sudo zypper install <package>
例如,只安装ndctl运行时工具和库,使用:
$ sudo zypper install ndctl
安装所有包,使用:
运行时:
$ zypper install ndctl daxctl
开发库:
$ zypper install libndctl-devel
20.2.6 在Ubuntu 18.04及以上安装PMDK
要安装各个单独的包,可以执行:
$ sudo zypper install <package>
例如,只安装ndctl运行时工具和库,使用:
$ sudo zypper install ndctl
安装所有包,使用:
运行时:
$ sudo apt-get install ndctl daxctl
开发库:
$ sudo apt-get install libndctl-dev