初始化 Amazon EBS 卷
新 EBS 卷一旦可用便能实现其最高性能,而不需要初始化(以前称为预热)。
但是,从快照还原的卷上的存储数据块必须先从 Amazon S3 取下并写入到卷,然后您才能访问这些数据块。此预操作需要时间且可能会显著增加 I/O 操作的延迟。对于大部分应用程序,可将此成本分摊到卷的整个使用期限。卷的性能将在所有数据块已下载并写入卷后进行还原。要在生产环境中避免这种初始性能冲击,您可以执行初始化以在使用之前读取卷上的所有数据块。
重要
在初始化已从快照还原的 io1
卷时,该卷的性能可能会下降到预期水平的 50% 以下,这会导致该卷在 I/O Performance (I/O 性能) 状态检查中显示 warning
状态。这是预期行为,并且您可在初始化 io1
卷时忽略该卷上的 warning
状态。
对于已从快照还原的卷,请使用 dd或 fio 实用程序读取卷上的所有数据块。卷上的所有现有数据都会保留。
在 Linux 上初始化从快照还原的卷
-
将新还原的卷附加到您的 Linux 实例。
-
使用 lsblk 命令列出实例上的块储存设备。
[ec2-user ~]$
lsblk
使用 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=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