初始化 Amazon EBS 卷 - Amazon EBS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

初始化 Amazon EBS 卷

当您从快照创建卷时,必须从 Amazon S3 下载快照中的存储块并将其写入卷,然后您才能访问它们。此过程称为卷初始化。在此期间,卷的 I/O 延迟可能会增加,性能可能会降低。只有将所有存储块下载并写入卷后,才能实现全卷性能。

注意

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

默认的卷初始化率在整个初始化过程中会波动,这可能会使完成时间变得不可预测。

为了最大限度地减少与卷初始化相关的性能影响,您可以使用以下选项:

使用 Amazon EBS 预配置速率进行卷初始化

当您根据快照创建 Amazon EBS 卷时,您可以选择为卷初始化指定 Amazon EBS 预配置速率(卷初始化速率),范围在 100 到 300 MiB/s 之间。如果您指定卷初始化速率,则快照块将在创建后从 Amazon S3 下载并以指定的速率写入该卷。这使您能够创建在可预测的时间内完全初始化并完全达到性能的卷。

当您同时创建多个卷并且需要在可预测的时间内初始化所有卷时,使用卷初始化率特别有用。

您可以指定卷初始化速率:

  • 对于个人卷创建请求

  • 对于实例启动请求中的 EBS 卷块设备映射

  • 对于启动模板中的 EBS 卷块设备映射

  • 对于由根卷替换任务创建的 EBS 卷

  • 适用于亚马逊 EKS 集群(由 EBS CSI 驱动程序创建)和 Amazon ECS 集群上的 EBS 卷

工作方式

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

初始化卷所花费的时间取决于以下因素:

  • 快照数据的大小,而不是正在创建的卷的大小。

    提示

    要查找快照的数据大小,请查看 desc ribe- snapshots 命令输出中的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 秒内完全初始化。

注意事项

  • 您可以将卷初始化速率指定为 100 到 300 MiB/s 之间。

  • 指定卷初始化速率时,费用和完成时间基于快照数据的大小(而不是卷的大小)和您指定的速率。有关更多信息,请参阅 计费

  • 在 99% 的时间内,Amazon EBS 提供的平均速率在您指定的卷初始化率的 10% 以内。

  • 如果您指定卷初始化速率并使用支持快速快照还原的快照,Amazon EBS 将使用指定的速率而不是快速快照还原。要改用快速快照还原,请不要指定卷初始化速率。

  • 如果 Amazon EBS 由于容量限制或已超出配额而无法以指定的卷初始化速率初始化卷,则请求将失败。

  • 您无法为在 Local Zones 或 Wavelength Z Amazon Outposts ones 上创建的卷指定卷初始化速率。

限额

MiB/s on the cumulative volume initialization rate that you can request across concurrent volume creation requests. For example, you can make 50 concurrent volume creation requests with a rate of 100 MiB/s (50 simultaneous requests * 100 MiB/s rate), or 25 concurrent requests with a rate of 200 MiB/s (25 simultaneous requests * 200 MiB/s速率上限为 5,000)。此限制以每个地区为单位适用。如果请求超过此限制,则会失败。要么等待一些正在处理的请求完成,要么申请增加配额。有关更多信息,请参阅 Amazon EBS 的限额

监控

当您创建具有卷初始化速率的卷时,Amazon EventBridge 事件将在初始化完成后的五分钟内发送到您的账户。有关更多信息,请参阅 EBS 卷初始化事件

如果您在初始化完成之前或初始化完成后的 5 分钟内删除该卷,则可能不会收到该事件。

计费

当您创建具有卷初始化速率的卷时,您需要按指定初始化速率的每 GiB 快照数据按每 MiB 的费率收费。费率因地区而异。有关更多信息,请参阅 Amazon EBS 定价

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

提示

要查找快照的数据大小,请查看 desc ribe- snapshots 命令输出中的FullSnapshotSizeInBytes字段或控制台中的完整快照大小字段。

公式如下:

rate for Region x snapshot data size x volume initialization rate

音量进入active状态后,您将立即收到全额账单。失败的请求不计费。

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

使用已启用的快照进行快速快照恢复

如果您使用启用了快速快照恢复功能的快照创建卷,则该卷将在创建时完全初始化,并立即提供其全部性能。有关使用快速快照还原的更多信息,请参阅Amazon EBS 快速快照还原

创建后手动初始化卷

您可以在创建 Amazon EBS 卷后手动初始化,以帮助最大限度地减少卷初始化对性能的影响。

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

重要

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

在 Linux 上初始化从快照创建的卷
  1. 将新还原的卷附加到您的 Linux 实例。

  2. 使用 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 列下没有列出任何路径)。

  3. 使用 ddfio 实用程序对设备上的所有数据块进行读取。默认情况下,dd 命令将安装在 Linux 系统上,但 fio 要快得多,因为它允很多线程读取。

    注意

    此步骤可能需要几分钟到几小时的时间,具体取决于您的 EC2实例带宽、为卷预配置的 IOPS 以及卷的大小。

    [dd] 应将 if(输入文件)参数设置为要初始化的驱动器。应将 of(输出文件)参数设置为 Linux 空虚拟设备 /dev/nullbs 参数设置读取操作的数据块大小;要获得最佳性能,这应设置为 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 卷可供使用

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

收集有关系统磁盘的信息
  1. 使用 wmic 命令列出系统上的可用磁盘:

    wmic diskdrive get size,deviceid

    下面是示例输出:

    DeviceID Size \\.\PHYSICALDRIVE2 80517265920 \\.\PHYSICALDRIVE1 80517265920 \\.\PHYSICALDRIVE0 128849011200 \\.\PHYSICALDRIVE3 107372805120
  2. 使用 ddfio 识别要初始化的磁盘。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 上获得。

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

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

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

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

    1. 选择开始,打开计算机的上下文(右键单击)菜单,然后选择属性

    2. 依次选择高级系统设置环境变量

    3. 对于系统变量,选择变量 Path,然后选择编辑

    4. 变量值中,将一个分号和命令行实用工具文件夹的位置(;C:\bin\) 附加到现有值末尾)。

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

  5. 打开新的命令提示符窗口。上一步不会在您当前的“命令提示符”窗口中更新环境变量。完成上一步后打开的命令提示符窗口将更新。

使用适用于 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。

  1. 可通过展开最新版本的资产并选择 MSI 安装程序来下载 fio MSI 安装程序。

  2. 安装 fio

使用适用于 Windows 的 fio 初始化卷
  1. 运行类似如下的命令来初始化卷:

    fio --filename=\\.\PHYSICALDRIVEn --rw=read --bs=128k --iodepth=32 --direct=1 --name=volume-initialize
  2. 操作完成时,您即准备就绪,可使用新卷。有关更多信息,请参阅 使 Amazon EBS 卷可供使用