初始化 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 上初始化从快照创建的卷
-
将新还原的卷附加到您的 Linux 实例。
-
使用 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
列下没有列出任何路径)。 -
使用 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 卷可供使用。
在使用上述任何一种工具前,请在您的系统上收集有关磁盘的信息,如下所述:
收集有关系统磁盘的信息
-
使用 wmic 命令列出系统上的可用磁盘:
wmic diskdrive get size,deviceid
下面是示例输出:
DeviceID Size \\.\PHYSICALDRIVE2 80517265920 \\.\PHYSICALDRIVE1 80517265920 \\.\PHYSICALDRIVE0 128849011200 \\.\PHYSICALDRIVE3 107372805120
-
使用 dd 或 fio 识别要初始化的磁盘。
C:
驱动器位于\\.\PHYSICALDRIVE0
。如果您不确定要使用的盘符,则可以使用diskmgmt.msc
实用工具将驱动器盘符与磁盘盘符进行比较。