

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

# 复制 Amazon EBS 卷
<a name="ebs-copying-volume"></a>

卷副本是源卷的故障一致性时间点副本。它包括卷副本初始化开始时写入源卷的所有数据块。卷副本会获得其唯一的卷 ID。卷副本会立即创建，一旦 Amazon EC2 实例达到 `available` 状态，即可将其附加到该实例。使用卷副本，您可以快速将生产数据复制到测试和开发环境。

您还可以使用其他 AWS 账户与您共享的卷创建副本。要从另一个账户复制卷，必须通过 AWS Resource Access Manager (AWS RAM) 与您共享源卷。有关更多信息，请参阅 [共享音量](share-volume.md)。

## 初始化
<a name="copy-volume-initialization"></a>

卷副本在创建后进行初始化。初始化期间，数据块从源卷复制并在后台写入卷副本。初始化完成之前，卷将保持 `initializing` 状态。

**初始化期间的性能**  
复制操作不会影响源卷的性能。复制过程中，您可以继续正常使用源卷。无需等待从源卷复制数据即可立即访问复制的卷。卷副本提供对数据的即时访问，延迟为个位数毫秒。但是，实际延迟可能会因卷类型而异。初始化期间，卷副本提供的**基准性能**等于以下三个值中最低值：
+ 每秒 3,000 次 input/output 操作 (IOPS) 和 125 MiB/s
+ **源**卷的预置性能
+ **卷副本**的预置性能

当满足以下条件时，卷副本可能会超过基准性能：

1. 源卷和卷副本的配置均超过 3,000 个 IOPS 和 125 个。 MiB/s

1. 源卷具有未使用的性能容量（驱动性能低于预置的性能）。

例如，如果源卷预置了 10,000 IOPS，而您的工作负载当前仅驱动 5,000 IOPS，并且卷副本预置了 10,000 IOPS，则卷副本可以通过使用源卷未利用的 5,000 IOPS，在初始化期间实现高于 3,000 IOPS 基准性能的性能。

**初始化持续时间**  
初始化卷副本所需的时间取决于创建卷副本时写入源卷的块数据的大小。卷副本将按照以下一般准则尽最大努力进行初始化。对于前 1 TiB 数据块，卷初始化最多需要 6 个小时。对于后续每 1 TiB 数据块（最多 16 TiB），初始化每 TiB 需要 1.2 小时。对于大于 16 TiB 的写入数据，初始化需要 24 小时。

**监控初始化进度**  
您可以使用 [ describe-volume-status ](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volume-status.html) AWS CLI 命令或亚马逊监控初始化进度。 EventBridge有关更多信息，请参阅[监控 Amazon EBS 卷初始化状态](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initialize-monitor.html)。

## 加密
<a name="copy-volume-encryption"></a>

当您复制卷时，副本的加密取决于源卷的加密状态、您的账户的默认加密设置以及您在复制请求中指定的`Encrypted`和`KmsKeyId`参数。

### 未加密的源卷
<a name="copy-volume-encryption-unencrypted"></a>

如果源卷未加密且您的账户在默认情况下禁用了加密，则副本处于未加密状态。您可以通过将`Encrypted`参数设置为来加密副本`true`。如果您未指定 KMS key，则使用您账户的默认 Amazon EBS 加密密钥。

如果源卷未加密且您的账户默认启用了加密，则副本将自动加密。如果您未指定 KMS key，则使用您账户的默认 Amazon EBS 加密密钥。

### 加密的源卷
<a name="copy-volume-encryption-encrypted"></a>

如果源卷已加密，则副本始终处于加密状态。您无法从加密的源卷创建未加密的副本。

对于同账户副本，默认情况下，副本使用与源卷相同的 KMS 密钥。您可以指定不同的客户管理密钥来重新加密副本。

对于跨账户复制，副本默认使用您账户的默认 Amazon EBS 加密密钥。您可以在`KmsKeyId`参数中指定不同的客户管理密钥。如果源账户的 KMS 密钥已与您的账户共享，则可以使用该密钥对该卷副本进行加密。

### Cross-account 加密要求
<a name="copy-volume-encryption-cross-account"></a>

要复制使用客户管理的密钥加密的共享卷，卷所有者必须与您的账户共享 KMS 密钥。有关更多信息，请参阅《 AWS Key Management Service 开发者指南》中的[允许其他账户 KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)中的用户使用。

使用 Amazon EBS 的默认 AWS 托管密钥加密的卷不能在账户间共享或复制。

### 加密结果
<a name="copy-volume-encryption-outcomes"></a>


**未加密的源卷**  

| 默认加密 | 你指定一个 KMS key | 结果 | 
| --- | --- | --- | 
| 已禁用 | 否 | 副本未加密 | 
| 已禁用 | 是 | 使用指定密钥加密的复制 | 
| 已启用 | 否 | 使用您账户的默认 Amazon EBS 加密密钥进行复制 | 
| Enabled | 是 | 使用指定密钥加密的复制 | 


**加密的源卷（同账户）**  

| 你指定一个 KMS key | 结果 | 
| --- | --- | 
| 否 | 使用与源卷相同的密钥加密复制 | 
| 是 | 使用指定密钥重新加密复制 | 


**加密的源卷（跨账户）**  

| 你指定一个 KMS key | 结果 | 
| --- | --- | 
| 否 | 使用您账户的默认 Amazon EBS 加密密钥进行复制 | 
| 是 | 使用指定密钥加密的复制 | 

Cross-account 默认情况下，副本永远不会重复使用源账户的 KMS 密钥。如果您想使用源账户中的密钥，则必须与您的账户共享。

## 注意事项
<a name="copy-volume-consids"></a>
+ 卷副本可捕获源卷的故障一致的时间点状态。它仅包括在请求复制时已写入卷的数据。它不包括应用程序或操作系统缓存的数据。要实现应用程序一致性副本，请在创建副本之前暂停对卷的写入或暂停应用程序。对于数据库，使用适当的机制刷新脏页并冻结 I/O （例如`fsfreeze`在 Linux 或 Windows 上的 VSS 上）。在复制请求返回后，您可以恢复写入。
+ 一次只能从源卷创建一个卷副本。只有当前一个卷副本完全初始化后，才能创建同一源卷的后续副本。
+ 每个区域最多可以有 5 个正在进行中的卷副本。如果超过此配额，您会收到 `CopyVolumesLimitExceeded` 错误。如果需要，您可以[请求增加配额](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。
+ 卷副本必须在与源卷相同的可用区中创建。
+ 卷副本的大小必须等于或大于源卷的大小。
+ 在创建或初始化卷副本期间，无法复制该卷副本。
+ 要创建卷副本，源卷必须处于 `available` 或 `in-use` 状态，卷修改必须处于 `completed` 或 `optimizing` 状态。
+ 卷副本受与常规 Amazon EBS 卷相同的账户、区域存储和 IOPS 配额的约束。有关更多信息，请参阅 [Amazon EBS 配额](https://docs.aws.amazon.com/general/latest/gr/ebs-service.html#limits_ebs)。
+ 如果在复制操作进行期间删除源卷，则复制操作仍会完成。
+ 分配给源卷的标签不会分配给卷副本。
+ 您无法根据 Outposts 或 Wavelength 区域中的卷创建副本。

## 定价
<a name="copy-volume-pricing"></a>

当您创建源卷的副本时，您需要为复制操作付费。复制操作费用基于创建副本时写入源卷的数据块的大小。新创建的卷的收费方式与任何其他 Amazon EBS 卷的收费方式相同。有关更多信息，请参阅 [Amazon EBS 定价](https://aws.amazon.com/ebs/pricing/)。

## 复制卷
<a name="copy-volume-copy"></a>

使用以下方法之一复制 Amazon EBS 卷。

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

**复制卷**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择 **Volumes**。

1. 选择要复制的卷，然后选择**操作**、**复制卷**。

1. 对于**卷类型**，选择副本的卷类型。默认卷类型为 **gp3**。

1. 在 “**大小” 中**，输入卷副本的大小，单位为 GiBs。大小必须等于或大于源卷的大小。

1. （*`io1``io2`、且`gp3`仅限*）对于 ** IOPS**，输入卷复制的每秒最大 input/output 操作数 (IOPS)。

1. （*`gp3`仅限*）对于**吞吐量**，输入卷副本的吞吐量，在中 MiB/s。

1. （*`io1``io2`仅限*）要启用 Amazon EBS 的卷拷贝 Multi-Attach，请选择 “**启用 Multi-Attach**”。

1. 对于**加密**，默认值取决于源流量和您的账户设置。对于同账户副本，副本继承源卷的加密密钥。对于跨账户复制，将使用您账户的默认 Amazon EBS 加密密钥。您可以选择不同的客户管理密钥。

1. （*可选*）要为卷副本分配自定义标签，请在**标签**部分中选择**添加标签**，然后输入标签键和值对。

1. 选择**复制卷**。

1. 复制的卷进入 `creating` 状态，然后在不久之后过渡到 `available`。然后，您可以将其附加到同一可用区中的 Amazon EC2 实例。

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

**复制卷**  
使用 [copy-volumes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/copy-volumes.html) 命令。

以下示例创建了`gp3`卷类型、大小`vol-01234567890abcdef`为 `100` GiB、吞吐量为的卷副本。`250` MiB/s

```
aws ec2 copy-volumes \
--source-volume-id {{vol-01234567890abcdef}} \
--volume-type {{gp3}} \
--size {{100}} \
--throughput {{250}}
```

**在复制期间加密未加密的卷**  
使用带有`--encrypted`和`--kms-key-id`参数的 copy-volumes 命令。

```
aws ec2 copy-volumes \
--source-volume-id {{vol-01234567890abcdef}} \
--encrypted \
--kms-key-id {{alias/my-key}}
```

**使用不同的客户管理密钥重新加密**  
使用带`--kms-key-id`参数的 copy-volumes 命令来指定不同的密钥。

```
aws ec2 copy-volumes \
--source-volume-id {{vol-01234567890abcdef}} \
--kms-key-id {{arn:aws:kms:us-east-1:222222222222:key/abcd1234-a123-456a-a12b-a123b4cd56ef}}
```

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

**复制卷**  
使用 [Copy-EC2Volume](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Volume.html) cmdlet。

以下示例创建了`gp3`卷类型、大小`vol-01234567890abcdef`为 `100` GiB、吞吐量为的卷副本。`250` MiB/s

```
Copy-EC2Volume `
-SourceVolumeId {{vol-01234567890abcdef}} `
-VolumeType {{gp3}} `
-Size {{100}} `
-Throughput {{250}}
```

**在复制期间加密未加密的卷**  
使用带有`-Encrypted`和 Copy-EC2Volume `-KmsKeyId`参数的 cmdlet。

```
Copy-EC2Volume `
-SourceVolumeId {{vol-01234567890abcdef}} `
-Encrypted $true `
-KmsKeyId {{"alias/my-key"}}
```

**使用不同的客户管理密钥重新加密**  
使用带`-KmsKeyId`参数的 Copy-EC2Volume cmdlet 来指定不同的密钥。

```
Copy-EC2Volume `
-SourceVolumeId {{vol-01234567890abcdef}} `
-KmsKeyId {{"arn:aws:kms:us-east-1:222222222222:key/abcd1234-a123-456a-a12b-a123b4cd56ef"}}
```

------