

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

# 初始化 Amazon EBS 卷
<a name="initalize-volume"></a>

创建 Amazon EBS 卷时，无论是从 EBS 快照还是从另一个 EBS 卷（卷副本）创建，都必须先将数据块写入卷，然后才能访问它们。对于根据快照创建的卷，必须将数据块从 Amazon S3 下载到新卷。对于卷副本，必须将数据块从源卷复制到卷副本。此过程称为*卷初始化*。在此期间，正在初始化的卷可能会遇到 I/O 延迟增加和性能下降的情况。只有在下载所有存储块并将其写入卷后，才能实现卷的全部性能。

**注意**  
空卷在创建后便能实现其最大性能，不需要初始化。

默认卷初始化速率在整个初始化过程中会波动，这可能会导致完成时间无法预测。为了最大限度地减少卷初始化对性能的影响，您可以使用以下选项：

**注意**  
卷副本不支持卷初始化速率和快速快照恢复。有关更多信息，请参阅 [Volume copy initialization](ebs-copying-volume.md#copy-volume-initialization)。

**Topics**
+ [使用 Amazon EBS 卷初始化预置速率](#volume-initialization-rate)
+ [使用已启用快速快照还原的快照](#volume-initialization-fsr)
+ [手动初始化卷](#ebs-initialize)
+ [监控卷初始化](ebs-initialize-monitor.md)

## 使用 Amazon EBS 卷初始化预置速率
<a name="volume-initialization-rate"></a>

根据快照创建 Amazon EBS 卷时，您可以选择指定 Amazon EBS 卷初始化预置速率（卷初始化速率），其范围为 100 到 300 MiB/s。如果指定卷初始化速率，则快照块将在创建后以指定速率从 Amazon S3 下载并写入卷。这样，您就可以创建在可预测的时间内完全初始化并达到完全性能的卷。

当您同时创建多个卷并且需要所有卷在可预测的时间内完成初始化时，使用卷初始化速率尤其有用。

**注意**  
所有 Amazon EBS 卷类型和所有 Amazon EC2 实例类型（包括 Amazon EC2 Mac 实例）都支持 Amazon EBS 卷初始化预置费率。

您可以为以下各项指定卷初始化速率：
+ 个人卷创建请求
+ 实例启动请求中的 EBS 卷块设备映射
+ 启动模板中的 EBS 卷块设备映射
+ 根卷替换任务创建的 EBS 卷
+ Amazon EKS 集群（由 EBS CSI 驱动程序创建）和 Amazon ECS 集群上的 EBS 卷

**Topics**
+ [工作原理](#consistent-rate-how)
+ [注意事项](#consistent-rate-considerations)
+ [配额](#consistent-rate-quota)
+ [计费](#consistent-rate-billing)

### 工作原理
<a name="consistent-rate-how"></a>

当您创建具有卷初始化速率的卷时，快照块将按您指定的速率从 Amazon S3 下载到卷中。

初始化卷所需的时间取决于以下因素：
+ 快照数据的大小，而不是所创建卷的大小。
**提示**  
要查找快照的数据大小，请检查 [describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) 命令输出中的 `FullSnapshotSizeInBytes` 字段，或控制台中的**完整快照大小**字段。
+ 您指定的卷初始化速率

例如，如果您使用包含 10 GiB 数据的快照创建一个 20 GiB 的卷，并且您指定的卷初始化速率为 300 MiB/s, the volume will be fully initialized in approximately 34.1 seconds (10 GiB / 300 MiB/s = 34.1 秒）。同样，如果您同时创建 10 个具有相同快照和卷初始化速率的卷，则所有 10 个卷将在 34.1 秒内完全初始化。

### 注意事项
<a name="consistent-rate-considerations"></a>
+ 您可以将卷初始化速率指定为 100 到 300 MiB/s。
+ 当您指定卷初始化速率时，费用和完成时间取决于快照数据的大小（而不是卷的大小）以及您指定的速率。有关更多信息，请参阅 [计费](#consistent-rate-billing)。
+ 在 99% 的时间内，Amazon EBS 提供的平均速率在您指定的卷初始化率的 10% 内。
+ 如果您指定了卷初始化速率，并且使用已启用快速快照还原的快照，则 Amazon EBS 将使用指定的速率而不是快速快照还原。要改用快速快照还原，请勿指定卷初始化速率。
+ 如果由于容量限制或超出[配额](#consistent-rate-quota)，Amazon EBS 无法以指定的卷初始化速率初始化卷，则请求将失败。
+ 您无法为在 Local Zones 或 Wavelength Z AWS Outposts ones 上创建的卷指定卷初始化速率。

### 配额
<a name="consistent-rate-quota"></a>

您可以跨并发卷创建请求请求 MiB/s 的累积卷初始化速率限制为 5,000。例如，您可以发出 50 个并发卷创建请求，速率为 100 MiB/s （50 个同步请求 x 100 个 MiB/s 速率），或者发出 25 个并发请求，速率为 200 MiB/s （25 个同步请求 x 200 个 MiB/s 速率）。此限制按区域引用。如果请求超过此限制，则会失败。请等待一些正在进行中的请求完成，或者请求提高配额。有关更多信息，请参阅 [Amazon EBS 的限额](ebs-resource-quotas.md)。

### 计费
<a name="consistent-rate-billing"></a>

创建具有卷初始化速率的卷时，您将按每 GiB 快照数据或每 MiB 指定初始化速率付费。费率因区域而异。有关更多信息，请参阅 [Amazon EBS 定价](https://aws.amazon.com/ebs/pricing/)。

您将根据快照数据的大小而不是卷的大小付费。例如，如果您为一个大小为 100 GiB 但只包含 50 GiB 数据的卷创建快照，则快照的卷大小为 100 GiB，但快照数据大小为 50 GiB。如果您使用该快照创建卷并指定卷初始化速率，则您的费用将基于 50 GiB 的快照数据。

**提示**  
要查找快照的数据大小，请检查 [describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) 命令输出中的 `FullSnapshotSizeInBytes` 字段，或控制台中的**完整快照大小**字段。

公式如下：

```
rate for Region x snapshot data size x volume initialization rate
```

一旦卷进入 `active` 状态，您需要支付全额费用。失败的请求不会计费。

如果在卷初始化完成之前删除卷，则仍需要按请求的卷初始化速率付费。

## 使用已启用快速快照还原的快照
<a name="volume-initialization-fsr"></a>

如果根据启用了快速快照还原的快照创建卷，则该卷在创建时会完全初始化，并立即发挥其全部性能。有关使用快速快照还原的更多信息，请参阅 [Amazon EBS 快速快照还原](ebs-fast-snapshot-restore.md)。

## 创建后手动初始化卷
<a name="ebs-initialize"></a>

创建 Amazon EBS 卷后，您可以手动初始化该卷，以帮助最大限度地降低卷初始化对性能的影响。

创建 Amazon EBS 卷后，您可以使用以下过程手动初始化该卷。

**重要**  
在初始化已从快照创建的 Provisioned IOPS SSD 卷时，该卷的性能可能会下降到预期水平的 50% 以下，这会导致该卷在 **I/O 性能**状态检查中显示 `warning` 状态。这是预期行为，并且您可在初始化 Provisioned IOPS SSD 卷时忽略该卷上的 `warning` 状态。有关更多信息，请参阅 [Amazon EBS 卷状态检查](monitoring-volume-checks.md)。

### Linux 实例
<a name="ebs-initialize-linux"></a>

**在 Linux 上初始化从快照创建的卷**

1. 将新还原的卷附加到您的 Linux 实例。

1. 使用 **lsblk** 命令列出实例上的块储存设备。

   ```
   $ lsblk
   NAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   xvdf  202:80   0  30G  0 disk
   xvda1 202:1    0   8G  0 disk /
   ```

   在此处可以看到新卷 `/dev/xvdf` 已附加，但是未挂载（因为 `MOUNTPOINT` 列下没有列出任何路径）。

1. <a name="initialize-snapshot-step"></a>使用 **dd** 或 **fio** 实用程序对设备上的所有数据块进行读取。默认情况下，**dd** 命令将安装在 Linux 系统上，但 **fio** 要快得多，因为它允很多线程读取。
**注意**  
此步骤可能需要几分钟到几个小时，具体取决于 EC2 实例带宽、为卷配置的 IOPS 和卷的大小。

   [**dd**] 应将 `if`（输入文件）参数设置为要初始化的驱动器。应将 `of`（输出文件）参数设置为 Linux 空虚拟设备 `/dev/null`。`bs` 参数设置读取操作的数据块大小；要获得最佳性能，这应设置为 1 MB。
**重要**  
不当使用 **dd** 可能容易损坏卷的数据。请务必严格遵循下面的示例命令。只有 `if=/dev/xvdf` 参数将因您要读取的设备的名称而异。

   ```
   $ sudo dd if=/dev/xvdf of=/dev/null bs=1M
   ```

   [**fio**] 如果您在系统上安装了 **fio**，请使用以下命令初始化您的卷。应将 `--filename`（输入文件）参数设置为要初始化的驱动器。

   ```
   $ sudo fio --filename=/dev/xvdf --rw=read --bs=1M --iodepth=32 --ioengine=libaio --direct=1 --name=volume-initialize
   ```

   要在 Amazon Linux 上安装 **fio**，请使用以下命令：

   ```
   sudo yum install -y fio
   ```

   要在 Ubuntu 上安装 **fio**，请使用以下命令：

   ```
   sudo apt-get install -y fio
   ```

   操作完成时，您会看到读取操作的报告。卷现在已准备就绪，可供使用。有关更多信息，请参阅 [使 Amazon EBS 卷可供使用](ebs-using-volumes.md)。

### Windows 实例
<a name="ebs-initialize-windows"></a>

在使用上述任何一种工具前，请在您的系统上收集有关磁盘的信息，如下所述：

**收集有关系统磁盘的信息**

1. 使用 **wmic** 命令列出系统上的可用磁盘：

   ```
   wmic diskdrive get size,deviceid
   ```

   下面是示例输出：

   ```
   DeviceID            Size
   \\.\PHYSICALDRIVE2  80517265920
   \\.\PHYSICALDRIVE1  80517265920
   \\.\PHYSICALDRIVE0  128849011200
   \\.\PHYSICALDRIVE3  107372805120
   ```

1. 使用 **dd** 或 **fio** 识别要初始化的磁盘。`C:` 驱动器位于 `\\.\PHYSICALDRIVE0`。如果您不确定要使用的盘符，则可以使用 `diskmgmt.msc` 实用工具将驱动器盘符与磁盘盘符进行比较。

------
#### [ Use the dd utility ]

完成以下过程，以安装并使用 **dd** 来初始化卷。

**重要注意事项**
+ 初始化卷可能需要几分钟到几个小时，取决于 EC2 实例带宽、为卷预置的 IOPS 和卷的大小。
+ 不当使用 **dd** 可能容易损坏卷的数据。一定要准确地遵循此程序。

**安装适用于 Windows 的 dd**

适用于 Windows 程序的 **dd** 的使用体验类似于 Linux 和 Unix 系统中常用的 **dd** 程序，通过它您可以初始化已从快照创建的 Amazon EBS 卷。最新的测试版支持 `/dev/null` 虚拟设备。如果安装早期版本，则可以使用 `nul` 虚拟设备。完整的文档可在 [http://www.chrysocome.net/dd](http://www.chrysocome.net/dd) 上获得。

1. 可从 [http://www.chrysocome.net/dd](http://www.chrysocome.net/dd) 下载适用于 Windows 的最新二进制版本的 **dd**。

1. （可选）为命令行实用工具创建易于查找和记住的文件夹，例如 `C:\bin`。如果您已拥有用于命令行实用工具的指定文件夹，则可以在以下步骤中改用该文件夹。

1. 解压缩二进制程序包并将 `dd.exe` 文件复制到命令行实用工具文件夹（例如 `C:\bin`）。

1. 将命令行实用工具文件夹添加到 Path 环境变量，以便您可以从任何位置运行该文件夹中的程序。

   1. 选择**开始**，打开**计算机**的上下文（右键单击）菜单，然后选择**属性**。

   1. 依次选择**高级系统设置**和**环境变量**。

   1. 对于**系统变量**，选择变量 **Path**，然后选择**编辑**。

   1. 在**变量值**中，将一个分号和命令行实用工具文件夹的位置（**;C:\$1bin\$1)** 附加到现有值末尾）。

   1. 选择**确定**关闭**编辑系统变量**窗口。

1. 打开新的命令提示符窗口。上一步不会在您当前的“命令提示符”窗口中更新环境变量。完成上一步后打开的命令提示符窗口将更新。
<a name="prewarm_snapshot_command"></a>
**使用适用于 Windows 的 dd 来初始化卷**  
运行以下命令可读取指定设备上的所有数据块（并将输出发送到 `/dev/null` 虚拟设备）。该命令可安全初始化现有数据。

```
dd if=\\.\PHYSICALDRIVEn of=/dev/null bs=1M --progress --size
```

如果 **dd** 尝试读取卷末尾以外的空间，您可能会收到一个错误。您可以放心地忽略此错误。

如果您使用的是早期版本的 **dd** 命令，则不支持 `/dev/null` 设备。相反，您可以按如下方式使用 `nul` 设备。

```
dd if=\\.\PHYSICALDRIVEn of=nul bs=1M --progress --size
```

------
#### [ Use the fio utility ]

完成以下过程，以安装并使用 **fio** 来初始化卷。

**安装适用于 Windows 的 **fio****

适用于 Windows 的 **fio** 程序的使用体验类似于 Linux 和 Unix 系统中常用的 **fio** 程序，允许您初始化已从快照创建的 Amazon EBS 卷。有关更多信息，请参阅 [https://github.com/axboe/fio。](https://github.com/axboe/fio)

1. 可通过展开最新版本的**资产**并选择 MSI 安装程序来下载 [**fio** MSI](https://github.com/axboe/fio/releases) 安装程序。

1. 安装 **fio**。

**使用适用于 Windows 的 **fio** 初始化卷**

1. 运行类似如下的命令来初始化卷：

   ```
   fio --filename=\\.\PHYSICALDRIVEn  --rw=read --bs=1M --iodepth=32 --direct=1 --name=volume-initialize
   ```

1. 操作完成时，您即准备就绪，可使用新卷。有关更多信息，请参阅 [使 Amazon EBS 卷可供使用](ebs-using-volumes.md)。

------

# 监控 Amazon EBS 卷初始化状态
<a name="ebs-initialize-monitor"></a>

创建卷时，无论是根据快照还是从另一个卷（卷副本）创建卷，都可以监控卷初始化的状态，以确定初始化过程是否完成。您可以使用以下选项监控卷初始化：

**Topics**
+ [AWS CLI 和 Amazon EC2 控制台](#ebs-initialize-monitor-ec2)
+ [Amazon EventBridge](#ebs-initialize-monitor-ev)

## AWS CLI 和 Amazon EC2 控制台
<a name="ebs-initialize-monitor-ec2"></a>

创建卷后，您可以随时使用 AWS CLI 和 Amazon EC2 控制台检查卷初始化的状态。其提供以下信息：
+ **初始化类型**（AWS CLI 仅限）-表示使用的卷初始化类型。 `default`用于快速快照恢复和默认卷初始化、`provisioned-rate`用于卷初始化的 Amazon EBS 预配置速率以及`volume-copy`卷副本初始化。
+ **预计完成时间**（AWS CLI 仅限）— 仅适用于使用 Amazon EBS 卷初始化预配置速率创建的卷。完成卷初始化所需的估计剩余时间（以秒为单位）。
+ **进度**：卷初始化过程的进度，以百分比（0-100）表示。对于使用快速快照还原初始化的卷，进度会在创建后立即达到 100%。
+ **初始化状态**：卷初始化的总体状态（`initializing` 或 `completed`）。对于使用快速快照还原初始化的卷，状态会在创建后立即变为 `completed`。

**注意**  
更新卷初始化信息最多可能需要 5 分钟。

------
#### [ Console ]

**监控卷初始化状态**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择 **Volumes**。

1. 选择要检查其卷初始化状态的卷。

1. 网格和**详细信息**选项卡中的**初始化状态**字段按以下格式提供进度信息：*初始化状态（进度百分比）*。例如，*正在初始化（75%）*。

   可能的初始化状态包括：*正在初始化*和*已完成*。

------
#### [ AWS CLI ]

**监控卷初始化状态**  
使用[ describe-volume-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volume-status.html) AWS CLI 命令查看初始化状态。 `EstimatedTimeToCompleteInSeconds`仅针对使用 Amazon EBS 卷初始化预配置速率创建的卷返回。

例如，以下命令检查卷 `vol-11111111111111111` 的初始化状态，该卷是使用 Amazon EBS 卷初始化预置速率创建的。

```
aws ec2 describe-volume-status --volume-id vol-01111111111111111
```

下面是示例输出。

```
{
    "VolumeStatuses": [
        {
            "Actions": [],
            "AvailabilityZone": "us-east-1a",
            "Events": [],
            "VolumeID": "vol-11111111111111111",
            "VolumeStatus": {
                "Details": [
                    {
                        "Name": "io-enabled",
                        "Status": "passed"
                    },
                    {
                        "Name": "io-performance",
                        "Status": "not-applicable"
                    },
                    {
                        "Name": "initialization-state",
                        "Status": "completed"
                    }
                ],
                "Status": "ok"
            },
            "InitializationStatusDetails": {
                "InitializationType": "provisioned-rate",
                "Progress": 75,
                "EstimatedTimeToCompleteInSeconds": 850
            }
        }
    ]
}
```

------

## Amazon EventBridge
<a name="ebs-initialize-monitor-ev"></a>

Amazon EventBridge 事件将在卷初始化完成**后的**五分钟内发送到您的账户。您可以创建触发编程操作以响应这些事件的规则。

**注意**  
尽最大努力发出事件。
如果在初始化完成之前或初始化完成后 5 分钟内删除卷，则可能不会收到该事件。

有关事件的更多信息，请参阅[EBS 卷初始化事件](ebs-cloud-watch-events.md#volume-initialization-events)。

**要使用监视卷初始化的状态 EventBridge**

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

1. 选择**规则**、**创建规则**。

1. 对于**步骤 1**，请执行以下操作：

   1. 指定规则的名称和描述。

   1. 对于**事件总线**，选择接收事件的总线。如果尚未创建自定义事件总线，请保留**默认值**或参阅 [Creating an event bus](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html)。

   1. 对于**规则类型**，保留**具有事件模式的规则**。

   1. 选择**下一步**。

1. 对于**步骤 2**，请执行以下操作：

   1. 对于**事件源**，请保留**AWS 事件或 EventBridge 合作伙伴事件**。

   1. 对于**创建方法**，选择**自定义模式（JSON 编辑器）**。

   1. 对于**事件模式**，请添加以下内容：

      ```
      {
          "detail-type": ["EBS Volume Notification"],
          "source": ["aws.ec2"],
          "detail": {
              "event": ["initializeVolume"],
              "result": ["succeeded"]
          }
      }
      ```

      有关示例事件，请参阅[EBS 卷初始化事件](ebs-cloud-watch-events.md#volume-initialization-events)。

   1. 选择**下一步**。

1. 对于**步骤 3**，请执行以下操作：

   1. 对于**目标类型**，选择**AWS 服务**。

   1. 对于**选择目标**，选择 **SNS 主题**，对于**主题**，选择所需的主题。如果尚未创建任何主题，请参阅[创建主题](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)。

   1. 对于**权限**，选中**使用执行角色（推荐）**。

   1. 对于**执行角色**，选中**为此特定资源创建新角色**选项，并使用默认角色名称。

   1. 选择**下一步**。

1. 对于**步骤 4**，如果需要，请为规则指定标签，然后选择**下一步**。

1. 对于**步骤 5**，查看规则，然后选择**创建规则**。