如果您的组织使用自定义内核或需要特定的环境配置,则标准 Lustre 软件包可能不兼容。
在这些情况下,Managed Lustre 支持动态内核模块支持 (DKMS)。DKMS 是一个框架,用于管理源代码位于主内核树之外的 Linux 内核模块。其核心功能是在安装新内核时自动重建并安装这些模块,从而确保兼容性,而无需手动干预。
虽然预构建的内核模块仍然是大多数用户的推荐安装方式,但 DKMS 为使用自定义 Linux 内核的用户提供了一种替代方案。
注意事项
将动态内核模块支持 (DKMS) 用于受管 Lustre 客户端专门面向需要与自定义内核兼容并准备好自行管理客户端问题的资深用户。与预构建模块不同,DKMS 需要安装完整的编译器工具链和特定的内核头文件,这会增加系统的安全攻击面和磁盘占用空间。此外,由于模块是按需编译的,因此用户必须考虑到客户端虚拟机的启动时间会明显延长,并且在内核更新期间可能会出现编译失败。
支持的平台
Managed Lustre 支持以下 DKMS 客户端软件包:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS,仅适用于 Arm 虚拟机。
要求
如需使用 DKMS,您的系统必须包含:
编译内核模块所需的所有编译器软件包。具体取决于发行版。
特定内核的头文件。对于自定义内核,您必须手动将 DKMS 服务指向头文件位置。
安全强化型虚拟机不支持 DKMS。
安装 DKMS 和标头
在安装受管理的 Lustre DKMS 软件包之前,您必须先安装 dkms 软件包以及适用于您系统的正确 Linux 内核标头。内核头文件的版本必须与您运行的内核版本完全一致。
对于标准 Ubuntu 内核
如果您使用的是 Ubuntu 提供的标准内核,通常可以通过运行以下命令来安装必需的软件包:
sudo apt update
sudo apt install dkms linux-headers-$(uname -r)
对于非标准或自定义内核
如果您使用的是自定义内核,则需要自行获取并安装正确的内核头文件。
为自定义内核安装头文件的流程因其来源而异。您可能需要:
- 请参阅操作系统供应商的文档:供应商可能会提供用于内核头文件的特定软件包或代码库。
- 基于源代码构建:如果您自行编译了内核,可能需要基于内核源代码树构建并安装标头。
自定义标头位置
DKMS 希望在 /usr/src/linux-headers-$(uname -r) 目录中找到内核头文件。它会运行 uname -r 命令来获取内核版本字符串并构建路径。例如:/usr/src/linux-headers-5.15.0-101-generic。
如果您的内核头文件未安装在预期位置,您必须通过创建从自定义头文件目录到 DKMS 预期位置的符号链接,手动将 DKMS 服务指向该位置。
例如,如果您的标头位于 /opt/custom-kernel/headers/ 中,请运行以下命令:
sudo ln -s /opt/custom-kernel/headers/ /usr/src/linux-headers-$(uname -r)
您有责任确保正确安装内核标头,并确保 DKMS 可以访问这些标头。如果找不到头文件,DKMS 软件包将无法构建 Lustre 内核模块。
安装 Managed Lustre DKMS 软件包
如需安装受管理的 Lustre DKMS 软件包,请按以下步骤操作。
配置对代码库的访问权限
DKMS 客户端软件包托管在 Artifact Registry 的 lustre-client-modules-dkms 项目中。
如需将虚拟机配置为从 Artifact Registry 安装,请按照以下说明操作。
Ubuntu 22.04 LTS
安装 Apt 代码库签名密钥:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/google-cloud.gpg curl -fsSL https://us-apt.pkg.dev/doc/repo-signing-key.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/lustre-client.gpg配置虚拟机以访问 Artifact Registry 软件包:
echo 'deb [signed-by=/usr/share/keyrings/google-cloud.gpg] http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' \ | sudo tee /etc/apt/sources.list.d/artifact-registry.list更新 Apt 并安装
apt-transport-artifact-registry软件包:sudo apt update && sudo apt install apt-transport-artifact-registry配置 Apt 以从代码库中提取软件包:
echo "deb [signed-by=/usr/share/keyrings/lustre-client.gpg] ar+https://us-apt.pkg.dev/projects/lustre-client-modules-dkms lustre-client-ubuntu-jammy main" \ | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list更新代码库来源:
sudo apt update如果该命令返回错误,请确保您的 Compute Engine 虚拟机在创建时所用的访问权限范围允许对所有 Cloud API 的全面访问权限。如需了解详情,请参阅授予对 Compute Engine 实例的访问权限。
如需详细了解这些命令,请参阅 Artifact Registry 文档:将虚拟机配置为安装 Debian 软件包。
Ubuntu 24.04 LTS
安装 Apt 代码库签名密钥:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/google-cloud.gpg curl -fsSL https://us-apt.pkg.dev/doc/repo-signing-key.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/lustre-client.gpg配置虚拟机以访问 Artifact Registry 软件包:
echo 'deb [signed-by=/usr/share/keyrings/google-cloud.gpg] http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' \ | sudo tee /etc/apt/sources.list.d/artifact-registry.list更新 Apt 并安装
apt-transport-artifact-registry软件包:sudo apt update && sudo apt install apt-transport-artifact-registry配置 Apt 以从代码库中提取软件包:
echo "deb [signed-by=/usr/share/keyrings/lustre-client.gpg] ar+https://us-apt.pkg.dev/projects/lustre-client-modules-dkms lustre-client-ubuntu-noble main" \ | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list更新代码库来源:
sudo apt update如果该命令返回错误,请确保您的 Compute Engine 虚拟机在创建时所用的访问权限范围允许对所有 Cloud API 的全面访问权限。如需了解详情,请参阅授予对 Compute Engine 实例的访问权限。
如需详细了解这些命令,请参阅 Artifact Registry 文档:将虚拟机配置为安装 Debian 软件包。
安装 Lustre 客户端软件包
按照说明安装 Lustre 客户端软件包。
Ubuntu 22.04 LTS
运行以下命令。
sudo apt install lustre-client-modules-dkms/lustre-client-ubuntu-jammy
sudo apt install lustre-client-utils/lustre-client-ubuntu-jammy
Ubuntu 24.04 LTS
运行以下命令。
sudo apt install lustre-client-modules-dkms/lustre-client-ubuntu-noble
sudo apt install lustre-client-utils/lustre-client-ubuntu-noble
此步骤会编译客户端软件包,可能需要一段时间。
装载和访问 Managed Lustre 实例
按照装载 Managed Lustre 实例中的说明操作。