[Lustre] nodemap的介绍与使用

1. 简介

nodemap 功能支持不同主机上的用户 UID 和 GID 映射到 MGS 服务所在的主机系统上,也就是将所有客户端中所有的用户全部映射到 lustre 系统中。当不同主机之间存在多个相同 UID 和 GID 的用户时,通过映射,可以保证每个用户只能访问自己的文件。

将客户端上的用户映射到 MGS 服务所在的主机上时,映射后 UID 和 GID 在 MGS 节点上可以存在也可以不存在。如果不存在,在 MGS 节点上看到的文件属性信息将以映射后的 UID 和 GID 呈现。

当开启 nodemap 功能时,只有加入了 nodemap 中的客户端并且该客户端中做了 UID 和 GID 映射的用户才能访问 lustre 文件系统,该客户端中的其他未做 UID 和 GID 映射的用户是没有权限访问 lustre 文件系统。对于 root 这种特权的用户,必须要开启当前 nodemap 的 admin 和 trusted 属性,才有权限访问文件系统。默认情况下 admin 和 trusted 属性值是 0,也就是 root 用户没有权限访问 lustre 文件系统。

nodemap 功能相关的设置只能在 MGS 服务所在的节点上操作。nodemap 功能必须通过lctl nodemap_activate 1命令开启。如果在 nodemap 功能生效期间对 nodemap 做修改,修改不会立即生效,需要等 10s。如果想要立即生效,可以重新挂载客户端即可。

2. 实战

为了所有的操作都能正常执行,lustre 文件系统要求提供一个特殊的 nodemap,该 nodemap 必须覆盖所有的服务节点,同时该 nodemap 必须要开启 admin 和 trusted 属性。

2.1. 服务端

2.1.1. 添加 nodemap

lctl nodemap_add serversmap

2.1.2. 添加 NID

lctl nodemap_add_range --name serversmap --range 192.168.3.[11-13]@tcp

2.1.3. 修改属性

lctl nodemap_modify --name serversmap --property admin --value 1
lctl nodemap_modify --name serversmap --property trusted --value 1

2.2. 客户端

2.2.1. 添加 nodemap

lctl nodemap_add clientsmap

2.2.2. 添加 NID

lctl nodemap_add_range --name clientsmap --range 192.168.3.242@tcp

2.2.3. 添加 idmap

lctl nodemap_add_idmap --name clientsmap --idtype uid --idmap 1000:1001
lctl nodemap_add_idmap --name clientsmap --idtype gid --idmap 1000:1001

2.3. 激活 nodemap

lctl nodemap_activate 1

3. 操作

3.1. nodemap 相关操作

3.1.1. 查看所有的 nodemap

lctl nodemap_info

3.1.2. 查看 nodemap 所有属性

lctl get_param nodemap.clientsmap.*

clientsmap是 nodemap 的名字。

3.1.3. 删除 nodemap

lctl nodemap_del clientsmap

clientsmap是 nodemap 的名字。

3.1.4. 向 nodemap 中添加 NID

lctl nodemap_add_range --name clientsmap --range 192.168.3.243@tcp

clientsmap是 nodemap 的名字。