Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

初始化 Amazon EBS 卷

新 EBS 卷一旦可用便能实现其最高性能,而不需要初始化 (以前称为预热)。但是,从快照还原的卷上的存储数据块必须先进行初始化 (从 Amazon S3 取下并写入到卷),然后您才能访问该数据块。此预备操作需要花费时间,并可能会造成首次访问每个数据块时的 I/O 操作的延迟大大提高。对于大部分应用程序,可将此成本分摊到卷的整个使用期限。访问数据完毕后,性能随之恢复。

您可以通过在使用之前对卷上的所有数据块进行读取,在生产环境中避免这种性能冲击;此过程称为初始化。对于从快照创建的新卷,您应该在使用该卷前读取所有包含数据的块。

重要

在初始化已从快照还原的 io1 卷时,该卷的性能可能会下降到预期水平的 50% 以下,这会导致该卷在 I/O Performance 状态检查中显示 warning 状态。这是预期行为,并且您可在初始化 io1 卷时忽略该卷上的 warning 状态。有关更多信息,请参阅 使用状态检查来监控卷

在 Linux 上初始化 Amazon EBS 卷

新 EBS 卷一旦可用便能实现其最高性能,而不需要初始化 (以前称为预热)。对于已从快照还原的卷,请使用 ddfio 实用程序读取卷上的所有数据块。卷上的所有现有数据都会保留。

在 Linux 上初始化从快照还原的卷

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

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

    [ec2-user ~]$ 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 参数将因您要读取的设备的名称而异。

    [ec2-user ~]$ sudo dd if=/dev/xvdf of=/dev/null bs=1M

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

    [ec2-user ~]$ sudo fio --filename=/dev/xvdf --rw=read --bs=128k --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 卷可用