初始化 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 卷类型和所有亚马逊 EC2 实例类型(包括亚马逊 Mac 实例)都支持 Amazon EBS 卷初始化的预配置速率。 EC2

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

  • 对于个人卷创建请求

  • 对于实例启动请求中的 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 的累积卷初始化速率限制为 5,000。例如,您可以发出 50 个并发卷创建请求,速率为 100 MiB/s (50 个并发请求 x 100 个 MiB/s 速率),或者发出 25 个并发请求,速率为 200 MiB/s (25 个同步请求 x 200 个 MiB/s 速率)。此限制以每个地区为单位适用。如果请求超过此限制,则会失败。要么等待一些正在处理的请求完成,要么申请增加配额。有关更多信息,请参阅 Amazon EBS 的限额

计费

当您创建具有卷初始化速率的卷时,您需要按指定初始化速率的每 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=1M --iodepth=32 --direct=1 --name=volume-initialize
  2. 操作完成时,您即准备就绪,可使用新卷。有关更多信息,请参阅 使 Amazon EBS 卷可供使用