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

块储存设备映射

您启动的每个实例都有一个关联根设备卷,它是 Amazon EBS 卷或实例存储卷。您可以使用块储存设备映射来指定实例启动时要连接的其他 EBS 卷或实例存储卷。您还可以将其他 EBS 卷连接到运行中的实例,请参阅 将 Amazon EBS 卷连接到实例。然而,将实例存储卷连接到实例的唯一办法是,在实例启动时,使用块储存设备映射来进行连接。

有关根设备卷的更多信息,请参阅 根设备卷

块储存设备映射的概念

块储存设备是一种以字节或位 (块) 为单位移动数据的存储设备。这些设备支持随机访问和广泛使用缓存 I/O。例如,包括硬盘、CD-ROM 盘和闪存盘。块储存设备可以实际连接到计算机,或者就像实际连接到计算机一样对进行远程访问。Amazon EC2 支持两种类型的块储存设备:

  • 实例存储卷 (虚拟设备,其底层硬件实际连接到该实例的主机)

  • EBS 卷 (远程存储设备)

块储存设备映射 定义了挂载到某个实例的块储存设备 (实例存储卷和 EBS 卷)。您可以指定块储存设备映射作为创建 AMI 的一部分,以便使从该 AMI 启动的所有实例均可使用该映射。或者,您还可以在启动实例时指定块储存设备映射,这样该映射会覆盖您在启动实例的 AMI 中指定的块储存设备映射。请注意,实例类型所支持的所有 NVMe 实例存储卷将在实例启动时自动添加;您无需将这些卷添加到 AMI 或实例的块储存设备映射。

块储存设备映射条目

当您创建块储存设备映射时,可以为需要挂载到该实例的每个块储存设备指定以下信息:

  • 在 Amazon EC2 内使用的设备名称。该实例的块储存设备驱动程序会在装载卷时分配实际的卷名称,指定的名称可以与 Amazon EC2 建议的不同。有关更多信息,请参阅 Windows 实例上的设备命名

  • [实例存储卷] 虚拟设备:ephemeral[0-23]。请注意,对您的实例可用的实例存储卷的数量和大小因实例类型而异。

  • [NVMe 实例存储卷] 这些卷是自动映射的;您无需指定由块储存设备映射中的实例类型支持的 NVMe 实例类型卷。

  • [EBS 卷] 用于创建块储存设备的快照的 ID (snap-xxxxxxxx)。只要您指定卷大小,此值为可选。

  • [EBS 卷] 卷的大小,以 GiB 计算。所指定的大小必须大于或等于指定快照的大小。

  • [EBS 卷] 是否在实例终止时删除卷 (truefalse)。根设备卷的默认值为 true,挂载的卷的默认值为 false。当您创建 AMI 时,其块储存设备映射会从该实例继承此设置。当您启动某个实例时,该实例会从 AMI 继承此设置。

  • [EBS 卷] 卷类型。对于通用型 SSD 卷是 gp2,对于预配置 IOPS SSD 卷是 io1,对于吞吐优化 HDD 卷是 st1,对于Cold HDD 卷是 sc1,对于磁介质卷是 standard。在 Amazon EC2 控制台中,默认值为 gp2;在 AWS 开发工具包和 AWS CLI 中,默认值为 standard

  • [EBS 卷] 该卷支持的每秒输入/输出操作 (IOPS) 次数。(不适用于 gp2st1sc1standard 卷。)

块储存设备映射实例存储注意事项

使用在其块储存设备映射中具有实例存储卷的 AMI 启动实例时,要考虑一些注意事项。

  • 有些实例类型包含的实例存储卷多于其他类型,而有些实例类型根本不包含实例存储卷。如果实例类型支持一个实例存储卷,而且 AMI 具有用于两个实例存储卷的映射,则实例会在启动时带有一个实例存储卷。

  • 实例存储卷只能在启动时进行映射。不能停止没有实例存储卷的实例 (如 t2.micro),将实例更改为支持实例存储卷的类型,然后重新启动带有实例存储卷的实例。但是,您可以从实例创建 AMI 并以支持实例存储卷的实例类型启动它,然后将这些实例存储卷映射到实例。

  • 如果您启动映射了实例存储卷的实例,然后停止实例,将它更改为具有较少实例存储卷的实例类型并重新启动它,则来自初始启动的实例存储卷映射会出现在实例元数据中。但是,实例使用的实例存储卷不能超出该实例类型支持的最大数量。

    注意

    实例停止时,实例存储卷上的所有数据都会丢失。

  • 根据启动时的实例存储容量,M3 实例可能会在启动时忽略 AMI 实例存储块储存设备映射 (除非在启动时指定它们)。您应在启动时指定实例存储块储存设备映射 (即使启动的 AMI 在 AMI 中映射了实例存储卷),以确保实例存储卷在实例启动时可用。

块储存设备映射示例

此图显示了 EBS 支持的实例的块储存设备映射示例。它将 /dev/sdb 映射到 ephemeral0 并映射两个 EBS 卷,一个映射到 /dev/sdh,另一个映射到 /dev/sdj。它还显示了作为根设备卷的 EBS 卷,即 /dev/sda1

 实例、实例存储卷以及 EBS 卷之间的关系。

请注意,此块储存设备映射示例是在本主题中的示命令和 API 中例使用的。您可以在为 AMI 指定块储存设备映射在启动实例时更新快设备映射中找到创建块储存设备映射的示例命令和 API。

如何使设备在操作系统可用

Amazon EC2 使用设备名称 (如 /dev/sdhxvdh) 来描述块储存设备。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 添加卷

  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 Instances

  3. 选择一个实例,再依次选择 ActionsImageCreate Image

  4. Create Image 对话框中,选择 Add New Volume

  5. Type (类型) 列表中选择一种卷类型并从 Device (设备) 列表中选择一个设备名称。对于 卷,您可以选择指定快照、卷大小和 EBS 卷类型。

  6. 选择 Create Image

使用命令行向 AMI 添加卷

使用 create-image AWS CLI 命令可为由 EBS 支持的 AMI 指定块储存设备映射。使用 register-image AWS CLI 命令可为由实例存储支持的 AMI 指定块储存设备映射。

使用以下参数指定块储存设备映射:

--block-device-mappings [mapping, ...]

要添加实例存储卷,请使用以下映射:

Copy
{ "DeviceName": "xvdb", "VirtualName": "ephemeral0" }

要添加空的 100 GiB 磁介质卷,请使用以下映射:

Copy
{ "DeviceName": "xvdg", "Ebs": { "VolumeSize": 100 } }

要添加基于快照的 EBS 卷,请使用以下映射:

Copy
{ "DeviceName": "xvdh", "Ebs": { "SnapshotId": "snap-xxxxxxxx" } }

要对设备省略映射,请使用以下映射:

Copy
{ "DeviceName": "xvdj", "NoDevice": "" }

或者,您可以使用 -BlockDeviceMapping 参数和以下命令 (适用于 Windows PowerShell 的 AWS 工具):

查看 AMI 块储存设备映射中的 EBS 卷

您可以轻松列举块储存设备映射中适用于 AMI 的 EBS 卷。

使用控制台查看 AMI 的 EBS 卷

  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 AMIs

  3. Filter 列表中选择 EBS images 以获取 EBS 支持的 AMI 的列表。

  4. 选择所需的 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 (AWS CLI) 命令或 Get-EC2Image (适用于 Windows PowerShell 的 AWS 工具) 命令来枚举 AMI 块储存设备映射中的 EBS 卷。

实例块储存设备映射

在默认情况下,您启动的实例包含所有在 AMI 的块储存设备映射中指定的存储设备 (您是从该 AMI 启动实例的)。您可以在启动实例时,为实例指定要对块储存设备映射执行的更改,而这些更新会覆盖 AMI 的块储存设备映射或与其合并。

限制

  • 对于根卷,您只能修改下列内容:卷大小、卷类型和 Delete on Termination 标志。

  • 修改 EBS 卷时,无法减小其大小。因此,您必须指定大小等于或大于 AMI 的块储存设备映射中指定的快照大小的快照。

在启动实例时更新快设备映射

您可以在启动实例时向其添加 EBS 卷和实例存储卷。请注意,针对实例更新块储存设备映射不会对启动实例的 AMI 的块储存设备映射造成永久性更改。

使用控制台向实例添加卷

  1. 打开 Amazon EC2 控制台。

  2. 在控制面板中,选择 Launch Instance

  3. Choose an Amazon Machine Image (AMI) 页面上,选择要使用的 AMI 并选择 Select

  4. 遵循向导完成 Choose an Instance Type (选择一个实例类型)Configure Instance Details (配置实例详细信息) 页面。

  5. Add Storage (添加存储) 页面中,您可以按以下方法修改根卷、EBS 卷和实例存储卷:

    • 若要更改根卷的大小,请查找 Type (类型) 列下的 Root (根) 卷,然后更改其 Size (大小) 字段。

    • 要隐藏用于启动实例的 AMI 块储存设备映射所指定的 EBS 卷,请找到该卷并单击其对应的 Delete (删除) 图标。

    • 要添加 EBS 卷,请选择 Add New Volume,从 Type 列表中选择 EBS,并填写 (DeviceSnapshot 等)字段。

    • 要隐藏用于启动实例的 AMI 块储存设备映射所指定的实例存储卷,请找到该卷并选择其对应的 Delete 图标。

    • 要添加实例存储卷,请选择 Add New Volume,从 Type 列表中选择 Instance Store,然后从 Device 中选择设备名称。

  6. 完成其余向导页面,然后选择 Launch

使用命令行向实例添加卷

使用 run-instances AWS CLI 命令可为实例指定块储存设备映射。

使用以下参数指定块储存设备映射:

--block-device-mappings [mapping, ...]

例如,假定 EBS 支持的 AMI 指定了以下块储存设备映射:

  • xvdb=ephemeral0

  • xvdh=snap-1234567890abcdef0

  • xvdj=:100

要防止 xvdj 连接到从该 AMI 启动的实例,请使用以下映射:

Copy
{ "DeviceName": "xvdj", "NoDevice": "" }

要将 xvdh 的大小增加到 300 GiB,请指定以下映射。请注意,您不必为 xvdh 指定快照 ID,因为指定设备名称就足以识别卷。

Copy
{ "DeviceName": "xvdh", "Ebs": { "VolumeSize": 300 } }

要连接到附加的实例存储卷 xvdc,请指定以下映射。如果实例类型不支持多个实例存储卷,此映射将无效。

Copy
{ "DeviceName": "xvdc", "VirtualName": "ephemeral1" }

或者,您可以使用 -BlockDeviceMapping 参数和 New-EC2Instance 命令 (适用于 Windows PowerShell 的 AWS 工具)。

更新正在运行的实例的块储存设备映射

您可以使用 modify-instance-attribute AWS CLI 命令更新正在运行的实例的块储存设备映射。请注意,在更改此属性之前,您不需要停止该实例。

Copy
aws ec2 modify-instance-attribute --instance-id i-1a2b3c4d --block-device-mappings file://mapping.json

例如,要在实例终止时保留根卷,请在 mapping.json 中指定以下内容:

Copy
[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]

或者,您可以使用 -BlockDeviceMapping 参数和 Edit-EC2InstanceAttribute 命令 (适用于 Windows PowerShell 的 AWS 工具)。

查看实例块储存设备映射中的 EBS 卷

您可以轻松枚举映射到实例的 EBS 卷。

注意

对于在 2009-10-31 API 发行之前启动的实例,AWS 不会显示块储存设备映射。您必须先断开并重新连接该卷,AWS 才能显示块相应的设备映射。

使用控制台查看实例的 EBS 卷

  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 Instances

  3. 在搜索栏中,键入 Root Device Type,然后选择 EBS。此操作会显示 EBS 支持的实例列表。

  4. 选择所需的实例,然后查看 Description 选项卡中显示的详细信息。至少,以下信息适用于根设备:

    • Root device type (ebs)

    • Root device (例如,/dev/sda1)

    • Block devices (例如,/dev/sda1xvdhxvdj)

    如果使用块储存设备映射启动的实例有附加 EBS 卷,则 Block devices 字段会将这些附加卷也显示为根设备。(请记住,此对话框不显示实例存储卷。)

     适用于实例的块储存设备。
  5. 要显示有关块储存设备的其他信息,请选择 Block devices 旁边的条目。此操作会显示块储存设备的以下信息:

    • EBS ID (vol-xxxxxxxx)

    • 根设备类型 (ebs)

    • 连接时间 (yyyy-mmThh:mm:ss.ssTZD)

    • 块储存设备状态 (attaching, attached, detaching, detached)

    • 终止时删除 (Yes, No)

使用命令行查看实例的 EBS 卷

使用 describe-instances (AWS CLI) 命令或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令来枚举实例的块储存设备映射中的 EBS 卷。

查看实例存储卷的实例块储存设备映射

当您查看实例的块储存设备映射时,可以只查看 EBS 卷,但是不能查看实例存储卷。您可以使用实例元数据来查询完整的块储存设备映射。所有针对实例元数据的请求的基本 URI 均为 http://169.254.169.254/latest/

首先,连接到运行中的实例。从该实例中,使用此查询获取其块储存设备映射。

Copy
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 卷,它们会依次显示为 ebs1ebs2 等。

要了解块储存设备映射中的单个块储存设备的详细信息,可将其名称添加到上述查询,如下所示。

Copy
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0

有关更多信息,请参阅 实例元数据和用户数据