部署 Lustre File System

使用 Lustre 部署 OCI 文件存储包括以下步骤:
  • 使用 Lustre 文件系统创建 OCI 文件存储
  • 挂载文件系统
  • 配置 LNet
  • 测试读写操作

创建 Lustre 文件系统

以下步骤将介绍如何使用 Lustre 文件系统创建 OCI 文件存储。

  1. 在 OCI 控制台导航菜单中,单击存储,然后单击 Lustre file systems
  2. 单击创建
  3. 配置 Lustre 文件系统详细信息:
    • 文件系统名称:接受默认名称或输入文件系统的友好名称。
    • 挂载名称:接受默认值或输入友好名称以在挂载文件系统时使用。
    • 文件系统说明:(可选)输入文件系统的说明。
    • 区间:接受默认区间,或选择列表以更改区间。
    • 可用性域:接受默认可用性域,或选择列表以更改可用性域。
    • 标记:如果您有权创建资源,则还有权对该资源应用自由格式标记。要应用定义的标记,您必须有权使用标记名称空间。如果您不确定是否应用标记,请跳过此选项或向管理员咨询。稍后可以应用标记。
    • 集群放置组:建议选择一个集群放置组,以将文件系统和其他资源物理放置在可用性域中,以确保低延迟。创建文件系统后,无法更改群集放置组。
    • 性能层:为文件系统选择性能层。性能层控制文件系统的吞吐量。吞吐量按预配存储的每 TB 指定。创建文件系统后,无法更改性能层。
    • Capacity(容量):选择文件系统的存储容量。如果选择大于服务限制的容量,可能会提示您请求增加容量。

      文件系统的聚合吞吐量根据性能层和容量计算得出。

    • 网络:选择要在其中挂载文件系统的 VCN 和子网。默认情况下,控制台显示您正在使用的区间中的 VCN 和子网列表。更改区间以从其他区间中选择 VCN 或子网。

      选定的子网将是用于部署 Lustre 服务器的子网。确保此子网允许在端口 512-1023 之间使用客户端端口与 Lustre 服务器端端口 988 通信。

    • 使用网络安全组控制流量:启用此选项并选择网络安全组 (NSG) 作为文件系统的虚拟防火墙。选择 + 另一个网络安全组可将文件系统添加到最多五个 NSG。
    • 根压缩:这些设置控制访问文件系统的客户机的用户 ID (UID) 和组 ID (GID) 是否重新映射到 Squash UIDSquash GID

      压缩:选择。缺省值为 None ,因此缺省情况下不执行重新映射。

      压缩 UID :如果将 Squash 设置为 Root ,则 root 用户 (UID 0) 将重新映射到此值。默认值为 65534。

      压缩 GID :如果将 Squash 设置为 Root ,则根组用户 (GID 0) 将重新映射到此值。默认值为 65534。

    • 根压缩异常:要从根压缩配置中排除特定客户机,请输入其客户机地址作为有效的 IP 地址或范围。例如 10.0.2.4 或 10.0。[2-10]。[1-255]。选择 + 其他客户机地址可添加最多 10 个例外。
    • 加密密钥:默认情况下,Oracle 管理加密文件系统的密钥。如果您希望更好地控制密钥的生命周期及其使用方式,可以选择自己的 Vault 加密密钥
创建开始后,完成后端资源的预配将需要几分钟的时间。时间因文件系统的性能层和大小而异。

装载 Lustre File System

  1. 导航到 Lustre 文件系统详细信息并从控制台中查找 mount 命令。
  2. 从安装了 Lustre 客户机模块的 Linux 客户机,可以挂载文件系统。在此客户机中,安装了 Lustre DKMS 模块。
    [root@lustre-ol8-client ~]# rpm -qa | grep lustre
    lustre-client-2.15.5_oci1-1.el8.x86_64
    lustre-client-dkms-2.15.5_oci1-1.el8.noarch

    在某些具有由 Oracle Cloud Agent 管理的 RDMA 网络的 GPU 主机的环境中,添加 LNet 接口会注入一条规则,阻止通过默认接口(主机的第一个接口)进行主机通信。这可能会导致使用本地 IP 进行内部通信的环境出现问题,尤其是在 OKE 环境中。直接系统是,对本地 IP 的 ping 不起作用。要解决此问题,请使用以下解决方法禁用 LNet 添加其他路由和规则。

    在添加 LNet 接口之前执行此操作。如果未显式添加 LNet 接口,请在挂载文件系统之前应用此操作。

    echo 'options ksocklnd skip_mr_route_setup=1' >/etc/modprobe.d/lnet.conf && rmmod lnet; modprobe -v lnet
  3. 卸载 Lustre 模块(如果已装入)以获得一个干净的开始。如果已挂载文件系统,则卸载模块将不起作用。如果 lustre_rmmod 未卸载所有模块,请重新引导系统以重新开始。
    [root@lustre-ol8-client ~]# lustre_rmmod 
  4. 挂载 Lustre 文件系统。如果应该为 Lustre 配置特定接口,请在尝试装入模块之前使用 lnetctl 配置。这将在下一节中进行说明。
    [root@lustre-ol8-client ~]# modprobe lustre
    [root@lustre-ol8-client ~]# mount -t lustre 10.0.3.8@tcp:/lustrefs /mnt/mymountpoint

    如果挂载失败并显示错误消息 No such file or directory. Is the MGS specification correct?,则可能由于多个接口或主机中的其他网络情况而无法自动配置 LNet(Lustre network,光纤网络)。发生这种情况时,需要手动配置 LNet。

    错误类似于:

    mount.lustre: mount 10.0.3.8@tcp:/lustrefs at /mnt/mymountpoint failed: No such file or directory
    Is the MGS specification correct?
    Is the filesystem name correct?
    If upgrading, is the copied client log valid? (see upgrade docs)

配置 LNet (Lustre Networking)

仅当挂载文件系统的步骤失败并且 Lustre 的正确接口未显示在 lnetctl net show 中时,才需要执行以下步骤。如果 lnetctl net show 显示了 Lustre 的正确接口,则不需要这些步骤。
  1. 查找接口名称。系统中可能有多个接口。选择靠近 Lustre 文件系统的相应接口。使用 ip route 命令可显示系统中的网络,并查找更适合访问 Lustre 文件系统的接口。这将是发生主要数据传输的接口。此处使用的接口为 enp0s5
    [root@lustre-ol8-client ~]# ip addr
    输出类似于:
    ...
    2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000
        link/ether 02:00:17:12:91:e9 brd ff:ff:ff:ff:ff:ff
        inet 10.0.3.42/24 brd 10.0.3.255 scope global dynamic enp0s5
           valid_lft 84865sec preferred_lft 84865sec
        inet6 fe80::17ff:fe12:91e9/64 scope link
           valid_lft forever preferred_lft forever
  2. 运行以下命令:
    [root@lustre-ol8-client opc]# modprobe lnet
    [root@lustre-ol8-client opc]# lnetctl lnet configure
    [root@lustre-ol8-client opc]# lnetctl net add --net tcp --if enp0s5
    [root@lustre-ol8-client opc]# lnetctl net show
    输出类似于:
    net:
        - net type: lo
          local NI(s):
            - nid: 0@lo
              status: up
        - net type: tcp
          local NI(s):
            - nid: 10.0.3.42@tcp  <<<<<<<<<
              status: up
              interfaces:
                  0: enp0s5   <<<<<<<<

挂载文件系统

  1. 运行命令:
    [root@lustre-ol8-client opc]# mount -t lustre 10.0.3.8@tcp:/lustrefs /mnt/mymountpoint
    [root@lustre-ol8-client opc]# df -h /mnt/mymountpoint
    输出类似于:
    Filesystem Size Used Avail Use% Mounted on
    10.0.3.8@tcp:/lustrefs 31T 17M 30T 1% /mnt/mymountpoint
  2. 运行命令:
    [root@lustre-ol8-client opc]# lfs df -h /mnt/mymountpoint
    输出类似于:
    UUID bytes Used Available Use% Mounted on
    lustrefs-MDT0000_UUID 563.4G 33.8M 513.4G 1% /mnt/mymountpoint[MDT:0]
    lustrefs-MDT0001_UUID 563.4G 33.7M 513.4G 1% /mnt/mymountpoint[MDT:1]
    lustrefs-OST0000_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:0]
    lustrefs-OST0001_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:1]
    lustrefs-OST0002_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:2]
    lustrefs-OST0003_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:3]
    lustrefs-OST0004_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:4]
    lustrefs-OST0005_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:5]
    lustrefs-OST0006_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:6]
    lustrefs-OST0007_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:7]
    lustrefs-OST0008_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:8]
    lustrefs-OST0009_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:9]
    lustrefs-OST000a_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:10]
    lustrefs-OST000b_UUID 2.6T 1.4M 2.4T 1% /mnt/mymountpoint[OST:11]
    
    filesystem_summary: 30.9T 16.4M 29.3T 1% /mnt/mymountpoint

测试读取和写入操作

带 Lustre 服务指标的文件存储可帮助您衡量文件系统的性能、容量和运行状况。您可以使用度量数据来诊断和排除问题。

我们将通过运行 dd 命令来测试读写,然后导航到度量页以查看度量仪表盘。

  1. 运行类似于以下内容的 dd 命令:
    [root@hpc-client-0 test]# dd if=/dev/zero of=10G_file  bs=1M count=10240 oflag=direct ;sleep 120 ; dd of=/dev/null if=10G_file  bs=1M count=10240 iflag=direct
    输出类似于:
    10240+0 records in
    10240+0 records out
    10737418240 bytes (11 GB, 10 GiB) copied, 40.6989 s, 264 MB/s
    10240+0 records in
    10240+0 records out
    10737418240 bytes (11 GB, 10 GiB) copied, 39.2326 s, 274 MB/s
    在此示例中,块大小为 1MB。
  2. 要在控制台中查看一组默认度量图表,请单击导航菜单,然后单击存储
  3. Lustre 下,选择 File Systems with Lustre
  4. 选择要查看其度量的文件系统。
  5. 在详细信息页上,在资源下,选择度量
度量页显示当前文件系统的默认图表集。使用 Lustre 的文件存储提供以下度量:
  • ReadThroughput:以每分钟读取的字节数表示。
  • WriteThroughput:以每分钟读取的字节数表示。
  • DataReadOperations:每分钟的读取操作数。
  • DataWriteOperation:每分钟的写入操作数。
  • MetadataOperations:元数据操作数。14 个不同的元数据操作可用维,例如 getattr,setattr,mknod,link,unlink,mkdir 等。
  • FileSystemCapacity:文件系统的总容量和可用容量。
  • FileSystemInodeCapacity:文件系统的总 inode 和可用 inode。

可以使用 OCI 度量浏览器 oci_lustrefilesystem 名称空间浏览这些度量,如下面的屏幕截图所示。


下面是 lustre-metrics-explorer.png 的说明
插图 lustre-metrics-explorer.png 的说明

下面是如何在度量浏览器或其他仪表盘(如 Grafana)中使用监视查询语言 (Monitoring Query Language,MQL) 中的查询的示例。

要获取读取吞吐量,请执行以下操作:

ReadThroughput[1m]{resourceId = "your_filesystem_ocid", targetType = "OST", clientName ="all@all"}.grouping().sum()/60

注意:

使用 60 是因为此处的间隔为 1 分钟。同样,您也可以将 MQL 用于其他度量。