

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 EFA 用戶端
<a name="configure-efa-clients"></a>

使用下列程序來設定 Lustre 用戶端，以透過 Elastic Fabric Adapter (EFA) 存取 FSx for Lustre 檔案系統。

執行下列作業系統的 Lustre 用戶端支援 EFA：
+ Amazon Linux 2023 (AL2023)
+ Red Hat Enterprise Linux (RHEL) 9.5 或更新版本
+ 核心版本 6.8\$1 的 Ubuntu 22.04 或更新版本

下列 Lustre 用戶端支援 EFA。如需詳細資訊，請參閱[安裝Lustre用戶端](install-lustre-client.md)。

支援 EFA 的 Nitro v4 （或更新版本） EC2 執行個體支援 EFA，但 trn2 執行個體系列除外。請參閱《*Amazon EC2 使用者指南*》中的[支援的執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types)。

**Topics**
+ [步驟 1：安裝必要的驅動程式](#install-required-drivers)
+ [步驟 2：設定 Lustre 用戶端的 EFA](#install-efa-on-client)
+ [步驟 3：EFA 介面](#add-efa-interfaces)

## 步驟 1：安裝必要的驅動程式
<a name="install-required-drivers"></a>

**注意**  
如果您使用的是[深度學習 AMI](https://docs.aws.amazon.com/dlami/latest/devguide/what-is-dlami.html)，則可以在預先安裝 Lustre 用戶端、EFA 驅動程式和 NVIDIA GPUDirect Storage (GDS) 驅動程式時略過此步驟。

### 安裝 Lustre 用戶端和 EFA 驅動程式
<a name="install-lustre-client-efa-driver"></a>

**快速安裝 Lustre 用戶端和 EFA 驅動程式**

1. 下載並解壓縮包含安裝指令碼的檔案：

   ```
   curl -O https://docs.aws.amazon.com/fsx/latest/LustreGuide/samples/install-fsx-lustre-client.zip
   unzip install-fsx-lustre-client.zip
   ```

1. 變更為 `install-fsx-lustre-client` 資料夾並執行安裝指令碼：

   ```
   cd install-fsx-lustre-client
   sudo ./bin/install-fsx-lustre-client.sh --install-lustre --install-efa
   ```

   指令碼會自動執行下列動作：
   + 安裝 Lustre 用戶端
   + 安裝 EFA 驅動程式
   + 驗證 Lustre 用戶端和 EFA 驅動程式安裝

   如需可與`install-fsx-lustre-client.sh`指令碼搭配使用的選項和使用範例清單，請參閱 zip `README.md` 檔案中的 檔案。

### 安裝 GMS 驅動程式 （選用）
<a name="install-gds-driver"></a>

只有在您計劃將 NVIDIA GPUDirect Storage (GDS) 與 FSx for Lustre 搭配使用時，才需要此步驟。

使用要求：
+ Amazon EC2 P5, P5e, P5en 或 P6-B200 執行個體
+ NVIDIA GMS 驅動程式 2.24.2 版或更新版本

**在用戶端執行個體上安裝 NVIDIA GPUDirect Storage 驅動程式**

1. 複製 NVIDIA GMS 儲存庫：

   ```
   git clone https://github.com/NVIDIA/gds-nvidia-fs.git
   ```

1. 建置並安裝驅動程式：

   ```
   cd gds-nvidia-fs/src/
   export NVFS_MAX_PEER_DEVS=128
   export NVFS_MAX_PCI_DEPTH=16
   sudo -E make
   sudo insmod nvidia-fs.ko
   ```

## 步驟 2：設定 Lustre 用戶端的 EFA
<a name="install-efa-on-client"></a>

若要使用 EFA 介面存取 FSx for Lustre 檔案系統，您必須安裝 Lustre EFA 模組並設定 EFA 介面。

### 快速設定
<a name="quick-setup"></a>

**快速設定 Lustre 用戶端**

1. 連線到您的 Amazon EC2 執行個體。

1. 下載並解壓縮包含組態指令碼的檔案：

   ```
   curl -O https://docs.aws.amazon.com/fsx/latest/LustreGuide/samples/configure-efa-fsx-lustre-client.zip
   unzip configure-efa-fsx-lustre-client.zip
   ```

1. 變更為 `configure-efa-fsx-lustre-client` 資料夾並執行安裝指令碼：

   ```
   cd configure-efa-fsx-lustre-client
   # for regular IO
   sudo ./setup.sh
   
   # for NVIDIA GPUDirect Storage (GDS) IO
   sudo ./setup.sh --optimized-for-gds
   ```

   指令碼會自動執行下列動作：
   + 匯入 Lustre 模組
   + 設定 TCP 和 EFA 介面
   + 建立系統化服務，以在重新啟動時自動設定

   如需可與`setup.sh`指令碼搭配使用的選項和使用範例清單，請參閱 zip `README.md` 檔案中的 檔案。

### 手動管理系統化服務
<a name="manage-systemd-service"></a>

系統化服務檔案建立於 /etc/systemd/system/configure-efa-fsx-lustre-client.service。以下是一些實用的 systemd 相關命令：

```
# Check status
sudo systemctl status configure-efa-fsx-lustre-client.service

# View logs
sudo journalctl -u configure-efa-fsx-lustre-client.service
# View warnings/errors from dmesg
sudo dmesg
```

如需詳細資訊，請參閱 zip `README.md` 檔案中的 檔案。

### 自動掛載組態 （選用）
<a name="auto-mount-configuration"></a>

如需在開機時自動掛載 Amazon FSx for Lustre 檔案系統的資訊，請參閱 [自動掛載 Amazon FSx 檔案系統](mount-fs-auto-mount-onreboot.md)。

## 步驟 3：EFA 介面
<a name="add-efa-interfaces"></a>

每個 FSx for Lustre 檔案系統在所有用戶端執行個體中都有 1024 個 EFA 連線的上限。

`configure-efa-fsx-lustre-client.sh` 指令碼會根據執行個體類型自動設定 EFA 介面。


| 執行個體類型 | 預設 EFA 介面數量 | 
| --- | --- | 
| p6e-gb200.36xlarge | 8 | 
| p6-b200.48xlarge | 8 | 
| p5en.48xlarge | 8 | 
| p5e.48xlarge | 8 | 
| p5.48xlarge | 8 | 
| 具有多個網路卡的其他執行個體 | 2 | 
| 具有單一網路卡的其他執行個體 | 1 | 

連線至 FSx for Lustre 檔案系統時，用戶端執行個體上每個設定的 EFA 介面都會計入 1024 EFA 連線限制的一個連線。

### 手動管理 EFA 介面
<a name="manage-interfaces-manually"></a>

具有更多 EFA 介面的執行個體通常支援更高的輸送量。只要保持在 EFA 連線總限制內，您就可以自訂介面數量，以最佳化特定工作負載的效能。

您可以使用下列命令手動管理 EFA 介面：

1. 檢視可用的 EFA 介面：

   ```
   for interface in /sys/class/infiniband/*; do
       if [ ! -e "$interface/device/driver" ]; then continue; fi
       driver=$(basename "$(realpath "$interface/device/driver")")
       if [ "$driver" != "efa" ]; then continue; fi
       echo $(basename $interface)
   done
   ```

1. 檢視目前設定的界面：

   ```
   sudo lnetctl net show
   ```

1. 新增 EFA 介面：

   ```
   sudo lnetctl net add --net efa --if device_name --peer-credits 32
   ```

   將 *device\$1name* 取代為步驟 1 中清單中的實際裝置名稱。

1. 移除 EFA 介面：

   ```
   sudo lnetctl net del --net efa --if device_name
   ```

   將 *device\$1name* 取代為步驟 2 中清單中的實際裝置名稱。