初始化 Amazon EBS 卷 - Amazon EBS

初始化 Amazon EBS 卷

空的 EBS 卷一经创建便能实现其最高性能,而不需要初始化(以前称为预热)。

对于任何卷类型的卷,必须先从 Amazon S3 下载存储块并将其写入到卷中,然后才能访问这些块。该预备操作需要一些时间才能完成,并且可能会导致首次访问每个块时的 I/O 操作延迟大大提高。在下载所有块并将其写入到卷后,才会实现卷性能。

重要

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

对于大部分应用程序,可将此初始化成本分摊到卷的整个使用期限。为了避免最初在生产环境中出现这种性能下降,您可以使用以下其中一种方案:

  • 强制立即初始化整个卷。有关更多信息,请参阅 Linux 实例(Linux 实例)或 Windows 实例(Windows 实例)。

  • 在快照上启用快速快照还原,以确保从中创建的 EBS 卷在创建时已完全初始化,并立即提供所有预置的性能。有关更多信息,请参阅 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 卷可供使用