

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

# 使用 Lustre 存储配额
<a name="lustre-quotas"></a>

您可以在 FSx for Lustre 文件系统上为用户、组和项目创建存储配额。您可以利用存储配额，限制用户、组或项目能够占用的磁盘空间量和文件数量。存储配额会自动跟踪用户级别、组级别和项目级别的使用情况，因此无论您是否选择设置存储限制，都可以监控使用情况。

Amazon FSx 强制执行配额，并阻止超过配额的用户写入存储空间。当用户超过其配额时，必须删除足够的文件，使其低于配额限制，这样才能再次写入文件系统。

**Topics**
+ [配额执行](#quotas-enforcement)
+ [配额的类型](#quota-types)
+ [配额限制和宽限期](#quota-limits)
+ [设置和查看配额](#setting-quotas)
+ [配额和 Amazon S3 关联存储桶](#quotas-s3)
+ [配额和恢复备份](#quotas-backups)

## 配额执行
<a name="quotas-enforcement"></a>

在所有 FSx for Lustre 文件系统上自动启用用户、组和项目配额强制执行。您无法禁用配额强制执行。

## 配额的类型
<a name="quota-types"></a>

拥有 Amazon 账户根用户凭证的系统管理员可以创建以下类型的配额：
+ 适用于个人用户的*用户配额*。特定用户的用户配额可能与其他用户的配额不同。
+ 适用于属于特定组的所有用户的*组配额*。
+ *项目配额*适用于与项目关联的所有文件或目录。项目可以包含位于文件系统中的多个目录或不同目录下的单个文件。
**注意**  
FSx for Lustre 文件系统中只有 Lustre 版本 2.15 支持项目配额。
+ 限制用户、组或项目可以占用的磁盘空间量的*块配额*。您可以以千字节为单位配置存储大小。
+ 限制用户、组或项目可以创建的文件或目录数量的*索引节点配额*。您可以将最大索引节点数配置为整数。

**注意**  
不支持默认配额。

如果您为特定用户和组设置了配额，并且该用户是该组的成员，则该用户的数据使用量同时适用这两个配额。此外，它也受到两个配额的限制。一旦达到任一配额限制，便会阻止用户写入文件系统。

**注意**  
为根用户设置的配额不会强制执行。同样，以根用户身份使用 `sudo` 命令写入数据会绕过配额的强制执行。

## 配额限制和宽限期
<a name="quota-limits"></a>

Amazon FSx 会将用户、组和项目配额作为硬限制或具有可配置宽限期的软限制强制执行。

硬限制是绝对限制。如果用户超出其硬限制，则块或索引节点分配失败，并显示超出磁盘配额消息。达到配额硬限制的用户必须删除足够的文件或目录，直至其低于配额限制，然后才能再次写入文件系统。设置宽限期后，只要低于硬限制，则用户可以在宽限期内超出软限制。

对于软限制，您可以配置宽限期（以秒为单位）。软限制必须小于硬限制。

您可以为索引节点和块配额设置不同的宽限期。您还可以为用户配额、组配额和项目配额设置不同的宽限期。当用户、组和项目配额具有不同的宽限期时，在任何配额宽限期过后，软限制都将转换为硬限制。

当用户超出软限制时，Amazon FSx 允许他们继续超出其配额，直至宽限期过后或达到硬限制。宽限期结束后，软限制将转换为硬限制，用户将被禁止进行任何进一步的写入操作，直至其存储使用量恢复为低于规定的块配额或索引节点配额限制。宽限期开始时，用户不会收到通知或警告。

## 设置和查看配额
<a name="setting-quotas"></a>

您可以在 Linux 终端中使用 Lustre文件系统 `lfs` 命令设置存储配额。`lfs setquota` 命令设置配额限制，`lfs quota` 命令显示配额信息。

有关 Lustre 配额命令的更多信息，请参阅 [Lustre 文档网站](http://lustre.org/documentation/)上的 *Lustre 操作手册*。

### 设置用户、组和项目配额
<a name="setting-user-quotas"></a>

用于设置用户、组或项目配额的 `setquota` 命令语法如下。

```
lfs setquota {-u|--user|-g|--group|-p|--project} username|groupname|projectid
             [-b block_softlimit] [-B block_hardlimit]
             [-i inode_softlimit] [-I inode_hardlimit]
             /mount_point
```

其中：
+ `-u` 或 `--user` 指定要为其设置配额的用户。
+ `-g` 或 `--group` 指定要为其设置配额的组。
+ `-p` 或 `--project` 指定要为其设置配额的项目。
+ `-b` 设置具有软限制的块配额。`-B` 设置具有硬限制的块配额。*block\$1softlimit* 和 *block\$1hardlimit* 均以千字节表示，最小值为 1024 KB。
+ `-i` 设置具有软限制的索引节点配额。`-I` 设置具有硬限制的索引节点配额。*inode\$1softlimit* 和 *inode\$1hardlimit* 均以索引节点数量表示，最小值为 1024 个索引节点。
+ *mount\$1point* 是挂载文件系统的目录。

**用户配额示例：**以下命令为挂载到 `/mnt/fsx` 的文件系统上的 `user1` 设置了 5000KB 的软块限制、8000KB 的硬块限制、2000 个软索引节点限制和 3000 个硬索引节点限制配额。

```
sudo lfs setquota -u user1 -b 5000 -B 8000 -i 2000 -I 3000 /mnt/fsx
```

**组配额示例：**以下命令为挂载到 `/mnt/fsx` 的文件系统上名为 `group1` 的组设置了 100000 KB 的硬块限制。

```
sudo lfs setquota -g group1 -B 100000 /mnt/fsx
```

**项目配额示例：**首先，请确保您已使用 `project` 命令将所需文件和目录与项目关联。例如，以下命令将 `/mnt/fsxfs/dir1` 目录的所有文件和子目录与项目 ID 为 `100` 的项目关联。

```
sudo lfs project -p 100 -r -s /mnt/fsxfs/dir1
```

然后使用 `setquota` 命令设置项目配额。以下命令为挂载到 `/mnt/fsx` 的文件系统上的项目 `250` 设置了 307200 KB 的软块限制、309200 KB 的硬块限制、10000 个软索引节点限制和 11000 个硬索引节点限制配额。

```
sudo lfs setquota -p 250 -b 307200 -B 309200 -i 10000 -I 11000 /mnt/fsx
```

### 设置宽限期
<a name="setting-grace"></a>

默认宽限期为一周。您可以使用以下语法调整用户、组或项目的默认宽限期。

```
lfs setquota -t {-u|-g|-p}
             [-b block_grace]
             [-i inode_grace]
             /mount_point
```

其中：
+ `-t` 表示将设置宽限期。
+ `-u` 为所有用户设置宽限期。
+ `-g` 为所有组设置宽限期。
+ `-p` 为所有项目设置宽限期。
+ `-b` 为块配额设置宽限期。`-i` 为索引节点配额设置宽限期。*block\$1grace* 和 *inode\$1grace* 均以整数秒或 `XXwXXdXXhXXmXXs` 格式表示。
+ *mount\$1point* 是挂载文件系统的目录。

以下命令为用户块配额设置 1000 秒的宽限期，为用户索引节点配额设置 1 周零 4 天的宽限期。

```
sudo lfs setquota -t -u -b 1000 -i 1w4d /mnt/fsx
```

### 查看配额
<a name="viewing-quotas"></a>

`quota` 命令显示有关用户配额、组配额、项目配额和宽限期的信息。


| 查看配额命令 | 已显示配额信息 | 
| --- | --- | 
|  `lfs quota /mount_point`  |  有关运行命令的用户和用户主组的一般配额信息（磁盘使用情况和限制）。  | 
|  `lfs quota -u username /mount_point`  |  特定用户的一般配额信息。具有 Amazon 账户根用户凭证的用户可以针对任何用户运行此命令，但非根用户无法运行此命令来获取有关其他用户的配额信息。  | 
|  `lfs quota -u username -v /mount_point`  |  特定用户的一般配额信息以及每个对象存储目标（OST）和元数据目标（MDT）的详细配额统计信息。具有 Amazon 账户根用户凭证的用户可以针对任何用户运行此命令，但非根用户无法运行此命令来获取有关其他用户的配额信息。  | 
|  `lfs quota -g groupname /mount_point`  |  特定群组的一般配额信息。  | 
|  `lfs quota -p projectid /mount_point`  |  特定项目的一般配额信息。  | 
| `lfs quota -t -u /mount_point` | 用户配额的块和索引节点宽限时间。 | 
| `lfs quota -t -g /mount_point` | 组配额的块和索引节点宽限时间。 | 
| `lfs quota -t -p /mount_point` | 项目配额的块和索引节点宽限时间。 | 

## 配额和 Amazon S3 关联存储桶
<a name="quotas-s3"></a>



您可以将 FSx for Lustre 文件系统关联到 Amazon S3 数据存储库。有关更多信息，请参阅 [将文件系统链接到 Amazon S3 存储桶](create-dra-linked-data-repo.md)。

您可以在关联的 S3 存储桶中选择特定的文件夹或前缀作为文件系统的导入路径。指定 Amazon S3 中的文件夹并从 S3 导入文件系统时，只有该文件夹中的数据才适用配额。整个存储桶的数据不计入配额限制。

关联 S3 存储桶中的文件元数据将导入到结构与从 Amazon S3 导入的文件夹匹配的文件夹中。这些文件计入拥有这些文件的用户和组的索引节点配额。

当用户执行 `hsm_restore` 或延迟加载文件时，该文件的完整大小将计入与文件所有者关联的块配额。例如，如果用户 A 延迟加载用户 B 拥有的文件，则存储量和索引节点使用量将计入用户 B 的配额。同样，当用户使用 Amazon FSx API 发布文件时，数据将从拥有该文件的用户或组的块配额中释放出来。

由于 HSM 恢复和延迟加载是通过根访问权限执行的，因此它们会绕过配额强制执行。导入数据后，将根据在 S3 中设置的所有权计入用户或组，这可能会导致用户或组超出其块限制。如果发生这种情况，他们需要先释放文件才能再次写入文件系统。

同样，启用自动导入功能的文件系统将自动为添加到 S3 中的对象创建新的索引节点。这些新索引节点是使用根访问权限创建的，在创建时会绕过配额强制执行。这些新索引节点将根据 S3 中对象的所有者计入用户和组。如果这些用户和组因自动导入活动而超出其索引节点配额，则他们必须删除文件以释放更多容量，直至低于配额限制。

## 配额和恢复备份
<a name="quotas-backups"></a>

恢复备份时，原始文件系统的配额设置将在恢复的文件系统中实施。例如，如果在文件系统 A 中设置了配额，而文件系统 B 是通过文件系统 A 的备份创建的，则文件系统 A 的配额将在文件系统 B 中强制执行。