

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

# Amazon EFS 如何报告文件系统和对象大小
<a name="metered-sizes"></a>

下面的章节介绍 Amazon EFS 如何报告文件系统大小、文件系统内对象的大小以及文件系统吞吐量。

## 计量 EFS 文件系统对象
<a name="metered-sizes-fs-objects"></a>

您可以在 EFS 文件系统中查看的对象包括常规文件、目录、符号链接和特殊文件（FIFOs 和套接字）。其中的每个对象按照 2 千位二进制字节 (KiB) 元数据（对于其 inode）以及一个或多个 4 KiB 数据增量进行计量。以下列表说明了不同类型的文件系统对象的计量数据大小：
+ **常规文件** – 常规文件的计量数据大小是舍入到下一个 4 KiB 增量的文件逻辑大小，但稀疏文件可能较小。

  *稀疏文件* 具有这样一种特点：在达到其逻辑大小之前，不会将数据写入文件的全部位置。对于稀疏文件，在某些情况下，使用的实际存储小于舍入到下一个 4 KiB 增量的逻辑大小。在这些情况下，Amazon EFS 将使用的实际存储报告为计量的数据大小。
+ **目录** – 目录的计量数据大小是用于目录条目和保存这些条目的数据结构的实际存储，舍入到下一个 4 KiB 增量。计量的数据大小不包含文件数据使用的实际存储。
+ **符号链接和特殊文件** – 这些对象的计量数据大小始终为 4 KiB。

当 Amazon EFS 通过 NFSv4 .1 `space_used` 属性报告对象使用的空间时，它包括该对象的当前计量数据大小，但不包括其元数据大小。您可以使用以下两个实用程序测量文件的磁盘使用情况：`du` 和 `stat` 实用程序。下例说明了如何对空文件使用 `du` 实用程序，利用 `-k` 选项以返回以千字节为单位的输出。

```
$ du -k file
4      file
```

下例说明了如何对空文件使用 `stat` 实用程序来返回文件的磁盘使用情况。

```
$ /usr/bin/stat --format="%b*%B" file | bc
4096
```

要测量目录的大小，请使用 `stat` 实用程序。找到 `Blocks` 值，然后将该值乘以块大小。下面是如何对空目录使用 `stat` 实用程序的示例：

```
$ /usr/bin/stat --format="%b*%B" . | bc 
4096
```

## EFS 文件系统的计量大小
<a name="metered-sizes-fs"></a>

EFS 文件系统的计量大小包括所有 EFS 存储类别中所有当前对象的大小之和。每个对象的大小根据计量小时（例如上午 8:00 到上午 9:00）内的对象大小的代表性取样计算得出。

空文件对文件系统计量大小贡献 6 KiB（2 KiB 元数据 \$1 4 KiB 数据）。在创建时，文件系统有一个空的根目录，因此计量大小为 6 KiB。

特定文件系统的计量大小定义这一小时内针对该文件系统对所有者账户计费的使用量。

**注意**  
计算的计量大小不表示文件系统在该小时内的任何特定时间的一致快照。相反，它表示每小时内的不同时间（也可能是前一小时）在文件系统中存在的对象的大小。这些大小的总和确定该小时的文件系统计量大小。因此，文件系统的计量大小最终与没有在文件系统中写入内容时存储的对象的计量大小一致。

可通过以下方式查看 EFS 文件系统的计量大小：
+ 使用[https://docs.aws.amazon.com/cli/latest/reference/efs/describe-file-systems.html](https://docs.aws.amazon.com/cli/latest/reference/efs/describe-file-systems.html) AWS CLI 命令和 [DescribeFileSystem](API_DescribeFileSystems.md)API 操作，响应包括以下内容：

  ```
  "SizeInBytes":{
              "Timestamp": 1403301078,
              "Value": 29313744866,
              "ValueInIA": 675432,
              "ValueInStandard": 29312741784
              "ValueInArchive": 327650
           }
  ```

  [其中，计量的大小还`ValueInStandard`用于确定 I/O 吞吐量基准和使用突增吞吐量的文件系统的突发速率。](performance.md#throughput-modes)
+ 查看`StorageBytes` CloudWatch 指标，该指标显示每个存储类中计量的数据总大小。有关 `StorageBytes` 指标的更多信息，请参阅[CloudWatch 亚马逊 EFS 的指标](efs-metrics.md)。
+ 在 Linux 中，可在 EC2 实例的终端提示符下运行 `df` 命令。

  不要在文件系统的根目录上使用 **du** 命令进行存储计量，因为响应不会反映用于计量文件系统的完整数据。

**注意**  
`ValueInStandard` 的计量大小还用于确定您的 I/O 吞吐量基准值和突发速率。有关更多信息，请参阅 [突增吞吐量](performance.md#bursting)。

### 计量不频繁访问和存档存储类
<a name="metered-sizes-IA"></a>

EFS 不频繁访问（IA）和归档存储类以 4KiB 为增量进行计量，且对于每个文件按最低 128KiB 收取账单费用。IA 和归档文件元数据（每个文件 2KiB）始终存储在标准存储类中并在标准存储类中计量。对小于 128KiB 的文件的支持仅适用于太平洋时间 2023 年 11 月 26 日中午 12:00 或之后更新的生命周期策略。IA 和归档存储的数据访问以 128KiB 为增量进行计量。

您可以使用该`StorageBytes` CloudWatch 指标来查看每个存储类中计量的数据大小。该指标还显示了在 IA 和存档存储类中，为了向上舍入小文件而消耗的总字节数。有关查看 CloudWatch 指标的更多信息，请参阅[访问 Amazon EFS 的 CloudWatch 指标](accessingmetrics.md)。有关 `StorageBytes` 指标的更多信息，请参阅[CloudWatch 亚马逊 EFS 的指标](efs-metrics.md)。

## 计量吞吐量
<a name="metering-throughput"></a>

Amazon EFS 以其他文件系统 I/O 操作速率的三分之一来计量读取请求的吞吐量。例如，如果您每秒驱动读取和写入吞吐量 30 MB (MiBps)，则读取部分计为有效吞吐量的 10 MiBps ，写入部分计为 30 MiBps，计量总吞吐量为 40。 MiBps根据消耗率调整后的总吞吐量反映在`MeteredIOBytes` CloudWatch 指标中。

### 弹性吞吐量计量
<a name="metering-elastic-throughput"></a>

为文件系统启用弹性吞吐量模式后，只需为在文件系统中读取或写入的元数据和数据量付费。使用弹性吞吐量模式的 EFS 文件系统将元数据读取计费为读取操作，将元数据写入计费为写入操作。元数据操作在前 4 KiB 之后以 1 KiB 为增量进行计量。数据操作在前 32 KiB 之后以 1 KiB 为增量进行计量。

**注意**  
虽然 Elastic 吞吐量旨在根据您的吞吐量弹性扩展，但我们建议您通过使用 CloudWatch （计量IOBytes）监控指标和使用情况警报来实施适当的治理，以此作为最佳运营实践的一部分。这有助于保持资源的最优利用率，并确保始终保持在计划的操作参数范围内。有关更多信息，请参阅 [使用 Amazon 监控指标 CloudWatch](monitoring-cloudwatch.md)。

### 预调配吞吐量计量
<a name="metering-provisioned-throughput"></a>

对于使用预置吞吐量模式的文件系统，只需为启用吞吐量的时间量付费。Amazon EFS 对启用预置吞吐量模式的文件系统每小时进行一次计量。对于预置吞吐量模式设置为少于一小时的计量，Amazon EFS 使用毫秒精度计算平均时间。