块设备映射
您启动的每个实例都有一个关联根设备卷,它是 Amazon EBS 卷或实例存储卷。您可以使用块储存设备映射来指定实例启动时要连接的其他 EBS 卷或实例存储卷。您还可以将其他 EBS 卷附加到运行中的实例,请参阅 将 Amazon EBS 卷挂载到实例。然而,将实例存储卷附加到实例的唯一办法是,在实例启动时,使用块储存设备映射来附加这些卷。
有关根设备卷的更多信息,请参阅 Amazon EC2 实例根设备卷。
块储存设备映射的概念
块储存设备是一种以字节或位(块)为单位移动数据的存储设备。这些设备支持随机访问并广泛使用缓存 I/O,例如,包括硬盘、CD-ROM 驱动和闪存盘。块设备可以实际连接到计算机,或者就像实际连接到计算机一样对进行远程访问。
Amazon EC2 支持两种类型的块储存设备:
-
实例存储卷 (虚拟设备,其底层硬件实际附加到该实例的主机)
-
EBS 卷 (远程存储设备)
块储存设备映射 定义了挂载到某个实例的块储存设备(实例存储卷和 EBS 卷)。您可以指定块储存设备映射作为创建 AMI 的一部分,以便使从该 AMI 启动的所有实例均可使用该映射。或者,您还可以在启动实例时指定块储存设备映射,这样该映射会覆盖您在启动实例的 AMI 中指定的块储存设备映射。请注意,某个实例类型支持的所有 NVMe 实例存储卷将在实例启动时自动枚举并为其分配设备名称;将这些卷包含在您的块储存设备映射中不起作用。
块储存设备映射条目
当您创建块储存设备映射时,可以为需要附加到该实例的每个块储存设备指定以下信息:
-
在 Amazon EC2 内使用的设备名称。在装载卷时,实例的块储存设备驱动程序将分配实际卷名称。分配的名称可以与 Amazon EC2 建议的名称不同。有关更多信息,请参阅Windows 实例上的设备名称。
对于实例存储卷,您还可以指定以下信息:
-
虚拟设备:
ephemeral[0-23]
。请注意,对您的实例可用的实例存储卷的数量和大小因实例类型而异。
对于 NVMe 实例存储卷,以下信息也适用:
-
这些卷将自动枚举并分配设备名称;将这些卷包含在块储存设备映射中将不起作用。
对于 EBS 卷,您还可以指定以下信息:
-
用于创建块储存设备的快照的 ID (snap-xxxxxxxx)。只要您指定卷大小,此值为可选。
-
卷的大小(以 GiB 计算)。所指定的大小必须大于等于指定快照的大小。
-
是否在实例终止时删除卷(
true
或false
)。根设备卷的默认值为true
,附加的卷的默认值为false
。当您创建 AMI 时,其块储存设备映射会从该实例继承此设置。当您启动某个实例时,该实例会从 AMI 继承此设置。 -
卷类型:
gp2
和(gp3
适用于通用型 SSD)、io1
和(io2
适用于预置 IOPS SSD)、st1
(适用于吞吐量优化型 HDD)、sc1
(适用于 Cold HDD)或(standard
适用于磁介质卷)。默认值为gp2
。 -
该卷支持的每秒进行读写操作的次数 (IOPS)。(仅与
io1
和io2
卷一起使用。)
块储存设备映射实例存储注意事项
使用在其块储存设备映射中具有实例存储卷的 AMIs 启动实例时,要考虑一些注意事项。
-
有些实例类型包含的实例存储卷多于其他类型,而有些实例类型根本不包含实例存储卷。如果实例类型支持一个实例存储卷,而且 AMI 具有用于两个实例存储卷的映射,则实例会在启动时带有一个实例存储卷。
-
实例存储卷只能在启动时进行映射。不能停止没有实例存储卷的实例 (如
t2.micro
),将实例更改为支持实例存储卷的类型,然后重新启动带有实例存储卷的实例。但是,您可以从实例创建 AMI 并以支持实例存储卷的实例类型启动它,然后将这些实例存储卷映射到实例。 -
如果您启动映射了实例存储卷的实例,然后停止实例,将它更改为具有较少实例存储卷的实例类型并重新启动它,则来自初始启动的实例存储卷映射会出现在实例元数据中。但是,实例使用的实例存储卷不能超出该实例类型支持的最大数量。
注意
实例停止时,实例存储卷上的所有数据都会丢失。
-
根据启动时的实例存储容量,M3 实例可能会在启动时忽略 AMI 实例存储块储存设备映射 (除非在启动时指定它们)。您应在启动时指定实例存储块储存设备映射(即使启动的 AMI 在 AMI 中映射了实例存储卷),以确保实例存储卷在实例启动时可用。
块储存设备映射示例
此图显示了 EBS 支持的实例的块储存设备映射示例。它将 /dev/sdb
映射到 ephemeral0
并映射两个 EBS 卷,一个映射到 /dev/sdh
,另一个映射到 /dev/sdj
。它还显示了作为根设备卷的 EBS 卷,即 /dev/sda1
。

请注意,此块储存设备映射示例是在本主题中的示命令和 API 中例使用的。您可以在为 AMI 指定块储存设备映射和在启动实例时更新块储存设备映射中找到创建块储存设备映射的示例命令和 API。
如何使设备在操作系统可用
Amazon EC2 使用设备名称(如 /dev/sdh
和 xvdh
)来描述块储存设备。Amazon EC2 使用块储存设备映射来指定要附加到 EC2 实例的块储存设备。当块储存设备附加到实例后,您必须先将其装载到操作系统,然后才可以访问此存储设备。当块储存设备从实例分离后,就被操作系统卸载下来,而您也不能再访问该存储设备。
通过 Windows 实例,可在第一次启动实例时,将在块储存设备映射中指定的设备名称映射到相应的块储存设备,然后 Ec2Config 服务会初始化并装载这些硬盘。根设备卷装载为 C:\
。实例存储卷装载为 Z:\
、Y:\
等。安装 EBS 卷时,可使用任何可用盘符进行装载。然而,您可以配置 Ec 如何给 EBS 卷分配盘符;要了解更多信息,请参阅 使用 EC2Config 服务配置 Windows 实例2Config Service。
AMI 块储存设备映射
各个 AMI 都拥有块储存设备映射,指定实例启动时要附加的块储存设备。Amazon 提供的 AMI 仅包含根设备。要向 AMI 添加更多块储存设备,必须创建自己的 AMI。
为 AMI 指定块储存设备映射
创建 AMI 时,您可以使用两种方法来指定除根卷以外的卷。如果您在从该实例创建 AMI 前已将卷附加到运行中的实例,则 AMI 的块储存设备映射将包括这些相同的卷。对于 EBS 卷,这些现存的数据会保存在一个新的快照中,而且是块储存设备映射指定的新快照。而实例存储卷的数据无法保存。
对于 EBS 支持的 AMI,您可以使用块储存设备映射来添加 EBS 卷和实例存储卷。对于实例存储支持的 AMI,您只能添加实例存储卷,方法是在注册镜像时修改镜像清单文件中的块储存设备映射条目。
注意
对于 M3 实例,您必须在启动实例时,在块储存设备映射中指定适用于实例的实例存储卷。当您启动 M3 实例时,如果在块储存设备映射中为 AMI 指定的实例存储卷未指定为块储存设备映射的一部分,则该卷可能会被忽略。
使用控制台向 AMI 添加卷
-
打开 Amazon EC2 控制台。
-
在导航窗格中,选择实例。
-
选择一个实例,再依次选择 Actions(操作)Image and templates(映像和模板)、Create image(创建映像)。
-
输入映像的名称和描述。
-
实例卷将显示在 Instance volumes(实例卷)下。要添加另一个卷,请选择 Add volume(添加卷)。
-
对于 Volume Type(卷类型),选择卷类型。对于 Device(设备),请选择设备名称。对于 EBS 卷,您可以指定其他详细信息,例如快照、卷大小、卷类型、IOPS 和加密状态。
-
选择创建映像。
使用命令行向 AMI 添加卷
使用 create-image Amazon CLI 命令可为由 EBS 支持的 AMI 指定块储存设备映射。使用 register-image Amazon CLI 命令可为由实例存储支持的 AMI 指定块储存设备映射。
使用 --block-device-mappings
参数指定块储存设备映射。以 JSON 编码的参数可以直接在命令行上提供,也可以通过引用文件提供:
--block-device-mappings [mapping
, ...]
--block-device-mappings [file://mapping.json
]
要添加实例存储卷,请使用以下映射。
{ "DeviceName": "xvdb", "VirtualName": "ephemeral0" }
要添加空的 100 GiB gp2
卷,请使用以下映射。
{ "DeviceName": "xvdg", "Ebs": { "VolumeSize": 100 } }
要添加基于快照的 EBS 卷,请使用以下映射。
{ "DeviceName": "xvdh", "Ebs": { "SnapshotId": "snap-xxxxxxxx" } }
要对设备省略映射,请使用以下映射。
{ "DeviceName": "xvdj", "NoDevice": "" }
或者,您可以将 -BlockDeviceMapping
参数与以下命令 (Amazon Tools for Windows PowerShell) 结合使用:
查看 AMI 块储存设备映射中的 EBS 卷
您可以轻松列举块储存设备映射中适用于 AMI 的 EBS 卷。
使用控制台查看 AMI 的 EBS 卷
-
打开 Amazon EC2 控制台。
-
在导航窗格中,选择 AMIs。
-
从 Filter 列表中选择 EBS images 以获取 EBS 支持的 AMI 的列表。
-
选择所需的 AMI,然后查看 Details (详细信息) 选项卡。至少,以下信息适用于根设备:
-
Root Device Type (根设备类型)
ebs
() -
Root Device Name (例如,
/dev/sda1
) -
Block Devices (数据块储存设备) (例如,
/dev/sda1=snap-1234567890abcdef0:8:true
)
如果使用块储存设备映射创建的 AMI 带有额外 卷,则 Block Devices (块储存设备) 字段会显示针对这些额外 EBS 卷的映射。(此屏幕不显示实例存储卷。)
-
使用命令行查看 AMI 的 EBS 卷
使用 describe-images (Amazon CLI) 命令或 Get-EC2Image (Amazon Tools for Windows PowerShell) 命令来枚举 AMI 块储存设备映射中的 EBS 卷。
实例块储存设备映射
默认情况下,您启动的实例包含所有在 AMI 的块储存设备映射中指定的存储设备 (您是从该 AMI 启动实例的)。您可以在启动实例时,为实例指定要对块储存设备映射执行的更改,而这些更新会覆盖 AMI 的块储存设备映射或与其合并。
限制
-
对于根卷,您只能修改下列内容:卷大小、卷类型和 Delete on Termination 标志。
-
修改 EBS 卷时,无法减小其大小。因此,您必须指定大小等于或大于 AMI 的块储存设备映射中指定的快照大小的快照。
在启动实例时更新块储存设备映射
您可以在启动实例时向其添加 EBS 卷和实例存储卷。请注意,针对实例更新块储存设备映射不会对启动实例的 AMI 的块储存设备映射造成永久性更改。
使用控制台向实例添加卷
-
打开 Amazon EC2 控制台。
-
在控制面板中,选择 Launch Instance。
-
在 Choose an Amazon Machine Image (AMI) 页面上,选择要使用的 AMI 并选择 Select。
-
遵循向导完成 Choose an Instance Type (选择一个实例类型) 和 Configure Instance Details (配置实例详细信息) 页面。
-
在 Add Storage (添加存储) 页面中,您可以按以下方法修改根卷、EBS 卷和实例存储卷:
-
若要更改根卷的大小,请查找 Type (类型) 列下的 Root (根) 卷,然后更改其 Size (大小) 字段。
-
要隐藏用于启动实例的 AMI 块储存设备映射所指定的 EBS 卷,请找到该卷并单击其对应的 Delete (删除) 图标。
-
要添加 EBS 卷,请选择 Add New Volume(添加新卷),从 Type(类型)列表中选择 EBS,并填写 [Device(设备)、Snapshot(快照)等] 字段。
-
要隐藏用于启动实例的 AMI 块储存设备映射所指定的实例存储卷,请找到该卷并选择其对应的 Delete 图标。
-
要添加实例存储卷,请选择 Add New Volume,从 Type 列表中选择 Instance Store,然后从 Device 中选择设备名称。
-
-
完成其余向导页面,然后选择 Launch。
使用 Amazon CLI 将卷添加到实例中
使用带 Amazon CLI 选项的 run-instances --block-device-mappings
命令可在启动时为实例指定块储存设备映射。
例如,假定 EBS 支持的 AMI 指定了以下块储存设备映射:
-
xvdb=ephemeral0
-
xvdh=snap-1234567890abcdef0
-
xvdj=:100
要防止 xvdj
连接到从该 AMI 启动的实例,请使用以下映射。
{ "DeviceName": "xvdj", "NoDevice": "" }
要将 xvdh
的大小增加到 300 GiB,请指定以下映射。请注意,您不必为 xvdh
指定快照 ID,因为指定设备名称就足以识别卷。
{ "DeviceName": "xvdh", "Ebs": { "VolumeSize": 300 } }
要在实例启动时增加根卷的大小,请先调用带有 AMI ID 的 describe-images 以验证根卷的设备名称。例如,"RootDeviceName":
"/dev/xvda"
。要覆盖根卷的大小,请指定 AMI 所使用的根设备的设备名称和新的卷大小。
{ "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 100 } }
要附加额外的实例存储卷 xvdc
,请指定以下映射。如果实例类型不支持多个实例存储卷,此映射将无效。如果实例支持 NVMe 实例存储卷,则将自动枚举这些卷并为其分配 NVMe 设备名称。
{ "DeviceName": "xvdc", "VirtualName": "ephemeral1" }
使用 Amazon Tools for Windows PowerShell 将卷添加到实例中
将 -BlockDeviceMapping
参数与 New-EC2Instance 命令 (Amazon Tools for Windows PowerShell) 结合使用。
更新正在运行的实例的块储存设备映射
您可以使用 modify-instance-attribute Amazon CLI 命令更新正在运行的实例的块储存设备映射。在更改此属性之前,您不需要停止该实例。
aws ec2 modify-instance-attribute --instance-id i-
1a2b3c4d
--block-device-mappings file://mapping.json
例如,要在实例终止时保留根卷,请在 mapping.json
中指定以下内容。
[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]
或者,您可以将 -BlockDeviceMapping
参数与 Edit-EC2InstanceAttribute 命令 (Amazon Tools for Windows PowerShell) 结合使用。
查看实例块储存设备映射中的 EBS 卷
您可以轻松枚举映射到实例的 EBS 卷。
注意
对于在 2009-10-31 API 发行之前启动的实例,Amazon 不会显示块储存设备映射。您必须先分离并重新附加卷,Amazon 才能显示块储存设备映射。
使用控制台查看实例的 EBS 卷
-
打开 Amazon EC2 控制台。
-
在导航窗格中,选择实例。
-
在搜索栏中,输入 Root device type(根设备类型),然后选择 EBS。此操作会显示 EBS 支持的实例列表。
-
选择所需的实例,然后查看 Storage(存储)选项卡中显示的详细信息。至少,以下信息适用于根设备:
-
Root device type(例如 EBS )
-
Root Device Name(例如,
/dev/xvda
) -
Block devices(例如,
/dev/xvda
、xvdf
和xvdj
)
如果使用块储存设备映射启动了带有其他 EBS 卷的实例,则它们将显示在 Block devices(块储存设备)下。此选项卡上不会显示任何实例存储卷。
-
-
要显示有关 EBS 卷的其他信息,请选择其卷 ID 以转到卷页面。有关更多信息,请参阅查看关于 Amazon EBS 卷的信息。
使用命令行查看实例的 EBS 卷
使用 describe-instances (Amazon CLI) 命令或 Get-EC2Instance (Amazon Tools for Windows PowerShell) 命令来枚举实例的块储存设备映射中的 EBS 卷。
查看实例存储卷的实例块储存设备映射
当您查看实例的块储存设备映射时,可以只查看 EBS 卷,但是不能查看实例存储卷。您用于查看实例的实例存储卷的方法取决于卷类型。
NVMe 实例存储卷
您可以使用磁盘管理或 PowerShell 列出 EBS 和实例存储 NVMe 卷。有关更多信息,请参阅列出 nVMe 卷。
HDD 或 SSD 实例存储卷
您可以使用实例元数据在块储存设备映射中查询 HDD 或 SSD 实例存储卷。未包含 NVMe 实例储存卷。
所有针对实例元数据的请求的基本 URI 均为 http://169.254.169.254/latest/
。有关更多信息,请参阅实例元数据和用户数据。
首先,连接到运行中的实例。从该实例中,使用此查询获取其块储存设备映射。
PS C:\>
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/
该响应包含实例的块储存设备名称。举例来说,由实例存储支持的 m1.small
实例的输出如下所示。
ami
ephemeral0
root
swap
ami
设备是实例所看到的根设备。实例存储卷命名为 ephemeral[0-23]
。swap
设备用于存储页面文件。如果您还映射了一些 EBS 卷,它们会依次显示为 ebs1
、ebs2
等。
要了解块储存设备映射中的单个块储存设备的详细信息,可将其名称添加到上述查询,如下所示。
PS C:\>
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
实例类型将决定对实例可用的实例存储卷的数量。如果块储存设备映射中的实例存储卷数超过了对实例可用的实例存储卷数,则其他卷将被忽略。要查看实例的实例存储卷,请打开“Windows 磁盘管理”。要了解每种实例类型支持的实例存储卷数,请参阅实例存储卷。