我正在尝试将 lustre 模块加载到运行 Linux 4.15.0-1040-aws 和 18.04 Ubuntu 磁盘映像(18.04 AMI )的 Linux 实例中。
我已经从 Ubuntu 18.04 下载并安装了 (即 dpkg -i) 18.04 的 lustre 客户端 debs - Lustre 2.12.2:
- lustre-client-modules-4.15.0-45-generic_2.12.2-1_amd64.deb
- lustre-client-utils_2.12.2-1_amd64.deb
.ko模块文件安装在/lib/modules/4.15.0-45-generic/updates/fs/中,但默认情况下它们不会被modprobe拾取,因为它们在我的内核的默认查找路径之外:/lib/modules/4.15.0-1040-aws。
有没有办法加载它们,或者我的内核是否需要完全匹配 deb 提供的内容?用户是否应该为modprobe编写自定义的光泽.conf文件?
编辑
我认为答案可能是内核需要精确匹配模块——这可能需要重新编译模块源代码。我最终设法在 linux 4.14.123-111.109.amzn2.x86_64 上安装了 lustre 客户端,但它运行在"Amazon Linux 2"映像(不是 ubuntu 18.04)上,我不得不使用命令amazon-linux-extras install -y lustre2.10
.
我最初没有意识到的另一件事是,亚马逊的Lustre FSx仅与Lustre客户端2.10.5和2.10.6兼容(请参阅本页顶部的注释),以防万一。棘手。
客户端内核模块需要针对系统上运行的特定内核进行编译,或者在 RHEL 内核的情况下至少编译来自同一主要版本的内核(例如 RHEL7.5 内核 3.10.0-862.x)。 有几个指南可以从源代码构建 Lustre 客户端,例如请参阅构建 Lustre - TLDR 指南或为新内核重建 Lustre 客户端 RPM。
Lustre 2.12.x 客户端通常能够挂载运行 Lustre 2.10.x 的服务器,只要为特定内核重建模块以便可以加载它们。 Lustre 使用更复杂的机制(不仅仅是版本号)在连接时在客户端和服务器之间交换功能兼容性,普通的 Lustre 客户端/服务器允许不同版本之间的连接,即使无法使用较新的功能也是如此。
我无法评论 AWS FSx 实施是否限制客户端运行特定版本。 通过对服务器代码进行修补,可以将客户端限制为需要特定版本(除了支持的功能列表外,客户端和服务器还在连接时交换其 Lustre 发行版),但在标准 Lustre 2.10.x 或 2.12.x 版本中,版本号不用于除信息目的以外的任何目的。
您可以通过在客户端上运行"lctl get_param {mdc,osc}.*.import
"来检查每个服务器的客户端和服务器版本以及相互支持的功能(connect_flags
),或者通过在 2.11 及更高版本的服务器上运行"lctl get_param {mdt,obdfilter}.*.exports.*.export
"来检查每个客户端(如果您可以登录到服务器,而使用 AWS FSx 通常无法登录)。