

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Lustre 根挤压
<a name="root-squash"></a>

根挤压是一项管理功能，它在当前基于网络的访问控制和 POSIX 文件权限的基础上又增加了一层文件访问控制。使用 root 压缩功能，您可以限制尝试以 root 用户身份访问您的 for Lustre 文件系统的客户端 FSx 的根级别访问权限。

执行管理操作（例如管理 Lustre 文件系统的权限）需要 root 用户权限。 FSx 但是，根访问权限为用户提供了不受限制的访问权限，他们可以绕过权限检查来访问、修改或删除文件系统对象。使用根挤压功能，可以通过为文件系统指定非根用户 ID（UID）和组 ID（GID），防止对数据进行未经授权的访问或删除。访问文件系统的 root 用户将自动转换为指定的权限较低 user/group 的用户，其权限由存储管理员设置。

使用根挤压功能，还可以选择提供不受根挤压设置影响的客户端列表。这些客户端能够以根用户身份访问文件系统，且权限不受限制。

**Topics**
+ [根挤压的工作原理](#root-squash-overview)
+ [管理根挤压](#manage-root-squash)

## 根挤压的工作原理
<a name="root-squash-overview"></a>

根挤压功能的工作原理是将根用户的用户 ID (UID) 和组 ID (GID) 重新映射到 Lustre 系统管理员指定的 UID 和 GID。使用根挤压功能，还可以选择指定一组 UID/GID 重新映射不适用的客户端。

当你 FSx 为 Lustre 文件系统创建新的文件系统时，root squash 默认处于禁用状态。您可以通过为 for Lustre 文件系统配置 UID 和 GID root squash 设置来 FSx 启用根压缩。UID 和 GID 值是范围从 `0` 到 `4294967294` 的整数：
+ UID 和 GID 为非零值时启用根挤压。UID 和 GID 值可以不同，但每个值都必须是非零值。
+ UID 和 GID 的值为 `0`（零）时表示根，因此禁用根挤压。

在创建文件系统的过程中，您可以使用亚马逊 FSx 控制台在 Root Squash 属性中提供 root squ **as** h UID 和 GID 值，如所示。[创建文件系统时启用根挤压（控制台）](#create-root-squash-console)您也可以将`RootSquash`参数与 AWS CLI 或 API 一起使用，以提供 UID 和 GID 值，如所示。[创建文件系统时启用根挤压（CLI）](#create-root-squash-cli)

或者，您还可以指定不适用 root squash 的客户端列表。 NIDs 客户端 NID 是 Lustre 网络标识符，用于唯一标识客户端。可以将 NID 指定为单个地址，也可以指定为地址范围：
+ 描述单个地址时采用标准 Lustre NID 格式，即指定客户端的 IP 地址，再指定 Lustre 网络 ID（例如 `10.0.1.6@tcp`）。
+ 描述地址范围时用短划线分隔范围（例如 `10.0.[2-10].[1-255]@tcp`）。
+ 如果你没有指定任何客户端 NIDs，那么root squash 也不会有例外。

创建或更新文件系统时，您可以使用亚马逊 FSx 控制台中的 **Root Squash 异常**属性来提供客户端列表 NIDs。在 AWS CLI 或 API 中，使用`NoSquashNids`参数。有关更多信息，请参阅 [管理根挤压](#manage-root-squash) 中的过程。

## 管理根挤压
<a name="manage-root-squash"></a>

在创建文件系统期间，默认禁用根挤压。在通过亚马逊 FSx 控制台或 API 创建新的 Amazon FSx for Lustre 文件系统时 AWS CLI，你可以启用根压缩。

### 创建文件系统时启用根挤压（控制台）
<a name="create-root-squash-console"></a>

1. 打开 Amazon FSx 控制台，网址为[https://console.aws.amazon.com/fsx/](https://console.aws.amazon.com/fsx/)。

1. 按照*入门*部分的[步骤 1：创建 FSx for Lustre 文件系统](getting-started.md#getting-started-step1)中所述的步骤创建新文件系统。

1. 打开**根挤压-*可选***部分。

1. 对于 **Root Squash**，请提供 root 用户可以访问文件系统的用户和群组 IDs 。可以指定 `1`–`4294967294` 范围内的任意整数：

   1. 对于**用户 ID**，请指定根用户要使用的用户 ID。

   1. 对于**群组 ID**，请指定根用户要使用的群组 ID。

1. （可选）对于**根挤压例外**，请执行以下操作：

   1. 选择**添加客户端地址**。

   1. 在**客户端地址**字段中，指定不适用根挤压的客户端的 IP 地址。有关 IP 地址格式的信息，请参阅 [根挤压的工作原理](#root-squash-overview)。

   1. 根据需要重复此操作，以添加更多客户端 IP 地址。

1. 按照创建新文件系统时的操作完成向导。

1. 选择**审核和创建**。

1. 查看您为 Amazon FSx for Lustre 文件系统选择的设置，然后选择**创建文件系统**。

当文件系统**可用**时，将启用根挤压。

### 创建文件系统时启用根挤压（CLI）
<a name="create-root-squash-cli"></a>
+ 要创建启用了 root 压缩的 for Lustre 文件系统，请使用[https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html](https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html)带有`RootSquashConfiguration`参数的 Amazon FSx CLI 命令。 FSx 相应的 API 操作是 [CreateFileSystem](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystem.html)。

  对于 `RootSquashConfiguration` 参数，请设置以下选项：
  + `RootSquash` – 以冒号分隔的 UID:GID 值，用于指定根用户要使用的用户 ID 和组 ID。可以为每个 ID 指定 `0`–`4294967294`（0 表示根）范围内的任意整数（例如，`65534:65534`）。
  + `NoSquashNids`— 指定不适用 root squash 的客户端的Lustre网络标识符 (NIDs)。有关客户端 NID 格式的信息，请参阅[根挤压的工作原理](#root-squash-overview)。

  以下示例创建了一个启用了根压缩功能 FSx 的 for Lustre 文件系统：

  ```
  $ aws fsx create-file-system \
        --client-request-token CRT1234 \
        --file-system-type LUSTRE \
        --file-system-type-version 2.15 \
        --lustre-configuration "DeploymentType=PERSISTENT_2,PerUnitStorageThroughput=250,DataCompressionType=LZ4,\
            RootSquashConfiguration={RootSquash="65534:65534",\
            NoSquashNids=["10.216.123.47@tcp", "10.216.12.176@tcp"]}" \
        --storage-capacity 2400 \
        --subnet-ids subnet-123456 \
        --tags Key=Name,Value=Lustre-TEST-1 \
        --region us-east-2
  ```

成功创建文件系统后，Amazon 以 JSON 格式 FSx 返回文件系统描述，如以下示例所示。

```
{

    "FileSystems": [
        {
            "OwnerId": "111122223333",
            "CreationTime": 1549310341.483,
            "FileSystemId": "fs-0123456789abcdef0",
            "FileSystemType": "LUSTRE",
            "FileSystemTypeVersion": "2.15",
            "Lifecycle": "CREATING",
            "StorageCapacity": 2400,
            "VpcId": "vpc-123456",
            "SubnetIds": [
                "subnet-123456"
            ],
            "NetworkInterfaceIds": [
                "eni-039fcf55123456789"
            ],
            "DNSName": "fs-0123456789abcdef0.fsx.us-east-2.amazonaws.com",
            "ResourceARN": "arn:aws:fsx:us-east-2:123456:file-system/fs-0123456789abcdef0",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "Lustre-TEST-1"
                }
            ],
            "LustreConfiguration": {
                "DeploymentType": "PERSISTENT_2",
                "DataCompressionType": "LZ4",
                "PerUnitStorageThroughput": 250,
                "RootSquashConfiguration": {
                    "RootSquash": "65534:65534", 
                    "NoSquashNids": "10.216.123.47@tcp 10.216.29.176@tcp"
            }
        }
    ]
}
```

您也可以使用 Amazon FSx 控制台或 API 更新现有文件系统的根压缩设置。 AWS CLI例如，您可以更改 root squash UID 和 GID 值、添加或移除客户端 NIDs，或者禁用 root squash。

### 更新现有文件系统的根挤压设置（控制台）
<a name="update-root-squash-console"></a>

1. 打开 Amazon FSx 控制台，网址为[https://console.aws.amazon.com/fsx/](https://console.aws.amazon.com/fsx/)。

1. 导航到**文件系统**，然后选择要管理根挤压的 Lustre 文件系统。

1. 在**操作**中，选择**更新根挤压**。或者，在**摘要**面板中，选择文件系统的**根挤压**字段旁边的**更新**，以显示**更新根挤压设置**对话框。

1. 对于 **Root Squash**，请更新 root 用户可以用来访问文件系统的用户和群组 IDs 。可以指定 `0`–`4294967294` 范围内的任意整数。要禁用 root squash，请将两者都指定`0`（零） IDs。

   1. 对于**用户 ID**，请指定根用户要使用的用户 ID。

   1. 对于**群组 ID**，请指定根用户要使用的群组 ID。

1. 对于**根挤压例外**，请执行以下操作：

   1. 选择**添加客户端地址**。

   1. 在**客户端地址**字段中，指定不适用根挤压的客户端的 IP 地址，

   1. 根据需要重复此操作，以添加更多客户端 IP 地址。

1. 选择**更新**。
**注意**  
如果启用了根挤压但想将其禁用，请选择**禁用**，而不是执行步骤 4-6。

可以在文件系统详细信息页面的**更新**选项卡上监控更新进度。

### 更新现有文件系统的根挤压设置（CLI）
<a name="update-root-squash-cli"></a>

要更新现有 FSx For Lustre 文件系统的根压缩设置，请使用 AWS CLI 命令[update-file-system](https://docs.aws.amazon.com/cli/latest/reference/fsx/update-file-system.html)。相应的 API 操作是 [UpdateFileSystem](https://docs.aws.amazon.com/fsx/latest/APIReference/API_UdateFileSystem.html)。

设置以下参数：
+ 将 `--file-system-id` 设置为要更新的文件系统的 ID。
+ 设置 `--lustre-configuration RootSquashConfiguration` 选项，如下所示：
  + `RootSquash` – 设置以冒号分隔的 UID:GID 值，用于指定根用户要使用的用户 ID 和组 ID。可以为每个 ID 指定 `0`–`4294967294`（0 表示根）范围内的任意整数。要禁用根挤压，请将 UID:GID 值指定为 `0:0`。
  + `NoSquashNids`— 指定不适用 root squash 的客户端的Lustre网络标识符 (NIDs)。用于`[]`移除所有客户端 NIDs，这意味着 root squash 不会有任何例外。

以下命令指定启用根挤压并使用 `65534` 作为根用户的用户 ID 和组 ID 的值。

```
$ aws fsx update-file-system \
    --file-system-id fs-0123456789abcdef0 \
    --lustre-configuration RootSquashConfiguration={RootSquash="65534:65534", \
          NoSquashNids=["10.216.123.47@tcp", "10.216.12.176@tcp"]}
```

如果命令成功，Amazon FSx for Lustre 将以 JSON 格式返回响应。

您可以在 Amazon FSx 控制台文件系统详情页面的 “**摘要**” 面板或 [https://docs.aws.amazon.com/cli/latest/reference/fsx/describe-file-systems.html](https://docs.aws.amazon.com/cli/latest/reference/fsx/describe-file-systems.html)CLI 命令的响应（等效的 API 操作是 [https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html](https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html)）中查看文件系统的根压缩设置。