如果您的组织使用自定义内核,或者需要特定的环境 配置,则 标准 Lustre 软件包可能不 兼容。
在这些情况下,Managed Lustre 支持 动态内核模块支持 (DKMS)。DKMS 是一个框架,用于管理源代码位于主内核树之外的 Linux 内核模块。其核心功能是在安装新内核时自动重新构建和安装这些模块,确保兼容性,而无需手动干预。
虽然预构建的内核模块仍然是大多数用户的推荐安装路径,但 DKMS 为使用自定义 Linux 内核的用户提供了一种替代方案。
注意事项
将动态内核模块支持 (DKMS) 用于 Managed Lustre 客户端专门面向需要与自定义内核兼容并准备自行管理客户端问题的资深用户。与预构建的模块不同,DKMS 需要安装完整的编译器工具链和特定的内核标头,这会增加系统的安全攻击面和磁盘占用空间。此外,由于模块是按需编译的,因此用户必须考虑客户端虚拟机启动时间明显延长,以及在内核更新期间可能出现编译失败的情况。
支持的平台
Managed Lustre 支持以下平台的 DKMS 客户端软件包:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS,仅适用于 Arm 虚拟机。
要求
如需使用 DKMS,您的系统必须包含:
编译内核模块所需的所有编译器软件包。这取决于发行版。
特定内核的标头。对于自定义内核,您必须手动将 DKMS 服务指向标头位置。
安全强化型虚拟机不支持 DKMS。
安装 DKMS 和标头
在安装 Managed 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 软件包
如需安装 Managed 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 实例中的说明进行操作。