

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用快照替换 Amazon EBS 卷
<a name="ebs-restoring-volume"></a>

由于速度、便利性和成本，Amazon EBS 快照是 Amazon EC2 上的首选备份工具。当从快照中创建卷时，您重新创建了它在过去特定时间点的状态，并且所有数据完整无缺。通过将从快照中创建的卷附加到实例，您可以在不同的区域之间复制数据，创建测试环境，完全替换受损或损坏的生产卷，或检索特定文件和目录并将其传输到另一个附加的卷。有关更多信息，请参阅 [Amazon EBS 快照](ebs-snapshots.md)。

可以使用以下过程之一将 Amazon EBS 卷替换为从此卷的上一个快照创建的另一个卷。

**要求**  
您必须在实例所在的可用区中创建卷。卷必须附加到位于同一个可用区中的实例。

------
#### [ Console ]

**替换卷**

1. 从快照中创建一个卷，并记下新卷的 ID。有关更多信息，请参阅 [创建 Amazon EBS 卷](ebs-creating-volume.md)。

1. 在 Instances（实例）页面上，选择要替换卷的实例，然后记下实例 ID。

   在实例处于选中状态时，选择 **Storage**（存储）选项卡。在 **Block devices**（块储存设备）部分中，找到要替换的卷并记下该卷的设备名称，例如 `/dev/sda1`。

1. 在**存储**选项卡上，选择卷 ID，然后[卸载卷并将其与实例分离](ebs-detaching-volume.md#umount-detach-volume)。

1. 选择在步骤 1 中创建的新卷，然后选择 **Actions**（操作）、**Attach volume**（附加卷）。

   对于 **Instance**（实例）和 **Device name**（设备名称），输入您在步骤 2 中记下的实例 ID 和设备名称，然后选择 **Attach volume**（附加卷）。

1. 连接到您的实例并安装卷。有关更多信息，请参阅 [使 Amazon EBS 卷可供使用](ebs-using-volumes.md)。

------
#### [ AWS CLI ]

**替换卷**

1. 从快照创建一个新卷。将 [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html) 命令与 `--snapshot-id` 选项结合使用。对于 `--availability-zone`，指定与实例相同的可用区。记下输出中新卷的 ID。

   ```
   aws ec2 create-volume \
       --volume-type gp3 \
       --snapshot-id snap-0abcdef1234567890 \
       --availability-zone us-east-1a
   ```

1. 获取要替换的卷的设备名称。可以使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令。对于 `--instance-ids`，指定要在其上替换卷的实例的 ID。记下要替换的卷的设备名称和卷 ID。

   ```
   aws ec2 describe-instances \
       --instance-ids i-1234567890abcdef0 \
       --query Reservations[].Instances[].BlockDeviceMappings
   ```

1. 从实例中分离要替换的卷。使用 [detach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/detach-volume.html) 命令。

   ```
   aws ec2 detach-volume --volume-id vol-xxxxxxxxxxxxxxxxx
   ```

1. 将替换卷挂载到实例。使用 [attach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html) 命令。对于 `--volume-id`，指定替换卷的 ID。对于 `--instance-id`，指定要为其附加卷的实例的 ID。对于 `--device`，指定此前记下的设备名称。

   ```
   aws ec2 attach-volume \
       --volume-id vol-01234567890abcdef \
       --instance-id i-1234567890abcdef0 \
       --device /dev/sdf
   ```

1. 连接到您的实例并安装卷。有关更多信息，请参阅 [使 Amazon EBS 卷可供使用](ebs-using-volumes.md)。

------
#### [ PowerShell ]

**替换卷**

1. 从快照创建一个新卷。使用带有选项的 [New-EC2Volume](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Volume.html)cmdlet。`-SnapshotId`对于 `-AvailabilityZone`，指定与实例相同的可用区。记下输出中新卷的 ID。

   ```
   New-EC2Volume `
       -VolumeType gp3 `
       -SnapshotId snap-0abcdef1234567890 `
       -AvailabilityZone us-east-1a
   ```

1. 获取要替换的卷的设备名称。使用 [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) cmdlet。对于 `-InstanceId`，指定要在其上替换卷的实例的 ID。记下要替换的卷的设备名称和卷 ID。

   ```
   (Get-EC2Instance `
       -InstanceId i-1234567890abcdef0).Instances.BlockDeviceMappings | `
        Format-Table DeviceName, @{Name="VolumeId";Expression={$_.Ebs.VolumeId}}
   ```

1. 从实例中分离要替换的卷。使用 [Dismount-EC2Volume](https://docs.aws.amazon.com/powershell/latest/reference/items/Dismount-EC2Volume.html) cmdlet。

   ```
   DismountEC2Volume -VolumeId vol-xxxxxxxxxxxxxxxxx
   ```

1. 将替换卷挂载到实例。使用 [Add-EC2Volume](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2Volume.html) cmdlet。对于 `-VolumeId`，指定替换卷的 ID。对于 `-InstanceId`，指定要为其附加卷的实例的 ID。对于 `-Device`，指定此前记下的设备名称。

   ```
   Add-EC2Volume`
       -VolumeId vol-01234567890abcdef `
       -InstanceId i-1234567890abcdef0 `
       -Device /dev/sdf
   ```

1. 连接到您的实例并安装卷。有关更多信息，请参阅 [使 Amazon EBS 卷可供使用](ebs-using-volumes.md)。

------