

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

# 服务管理队列的永久存储
<a name="volumes"></a>

AWS 截止日期云（Deadline Cloud）永久存储为服务管理队列（SMF）工作人员提供专用的亚马逊弹性区块存储（亚马逊 EBS）gp3 卷，与根启动卷分开。这些卷可在工作人员生命周期事件中保存数据。借助永久存储，在例行维护或扩展操作期间更换工作人员时，conda 软件包安装、应用程序缓存和资产文件仍然可用。

## 永久存储的工作原理
<a name="volumes-how-it-works"></a>

当您在服务管理的队列上启用永久存储时，Deadline Cloud 会自动为您的员工管理 Amazon EBS 卷的生命周期：

1. 当工作人员启动时，Deadline Cloud 会在同一可用区中创建或重复使用可用的 Amazon EBS 卷，并将该卷连接到该工作人员。

1. Deadline Cloud 格式化卷（如果是新的），并将其挂载到您在队列配置中指定的路径上。

1. 当工作人员终止或被替换时，Deadline Cloud 会分离该卷并将其供未来工作人员在同一队列和可用区中重复使用。

由于卷可在同一个队列和可用区内重复使用，因此后续工作人员将受益于先前写入该卷的数据。该卷提供专用带宽和 IOPS，工作人员之间不会发生争用。

**注意**  
永久存储仅适用于服务管理的队列。对于客户管理的队列，您可以管理自己的存储基础架构。

## 永久存储的好处
<a name="volumes-benefits"></a>

永久存储为服务管理的队列工作负载提供以下好处：
+ **更快的作业启动 ** — Conda 软件包的安装、编译的着色器和经过处理的资源在工作器更换过程中持续存在，从而消除了重复的下载和安装。
+ **专用性能 ** — 每位工作人员都有自己的 Amazon EBS 卷以及专用 IOPS 和吞吐量，从而避免了共享网络存储空间的争用。
+ **自动管理 ** — Deadline Cloud 无需手动干预即可处理卷的创建、附件、格式化、装载和清理。
+ **运行时集成 ** — 支持的运行时使用器（例如 conda 队列环境和虚拟文件系统 (VFS) 不可变缓存）在可用时会自动使用永久存储，无需更改作业配置。
+ **成本控制 ** — 配置生存时间 (TTL) 以自动清理未使用的卷并降低空闲期间的存储成本。

## 何时使用永久存储
<a name="volumes-use-cases"></a>

在以下情况下，可以考虑为您的服务管理队列启用永久存储：
+ 您的工作使用需要大量下载和安装时间的 conda 软件包。
+ 您的渲染工作负载会编译可在后续渲染中重复使用的着色器或处理资源。
+ 您可以使用 Perforce 或其他版本控制系统，在这些系统中，工作空间同步状态会减少后续更新中的数据传输。
+ 您的任务使用虚拟文件系统 (VFS)，并且将受益于永久不可变的资产缓存。
+ 您需要专用的存储性能，而无需管理共享网络文件系统的运营开销。
+ 您可以通过主机配置脚本在工作器上安装自定义渲染器或其他软件，并希望将这些安装缓存到永久卷中。

## 为队列配置永久存储
<a name="volumes-configure"></a>

在创建新的服务管理队列或更新现有队列时，您可以配置永久存储。

### 配置永久存储（控制台）
<a name="volumes-configure-console"></a>

在开始之前，您必须拥有一个包含至少一个服务管理队列的现有农场，或者做好创建新队列的准备。

**为队列配置永久存储**

1. 登录 AWS 管理控制台并打开 Deadl [ ine Cloud 控制台](https://console.aws.amazon.com/deadlinecloud/home)。

1. 在导航窗格中，选择**农场**，然后选择您的农场。

1. 选择 “队**列**” 选项卡，然后选择 “**创建队列”**，或者选择现有的服务管理队列并选择 ** “编辑”。**

1. 在 “**存储功能” 下**，对于**存储模式**，选择 “**永久存储” **。

1. 配置启动卷的**根存储**设置（大小、IOPS 和吞吐量）。

1. 在 “**永久存储” 下**，配置以下设置：
   + **大小 ** — 永久音量的大小。有效范围为 1—65,536 GiB。验证默认大小是否适合您的渲染工作负载，并考虑增加使用更大资源或缓存的工作流程的体积大小。
   + **装载路径 ** — 将卷挂载到工作器上的绝对路径（`/mnt/persistent`例如，对于Linux）。对于Windows工作人员，请指定驱动器号，例如`D:`。
   + **吞吐量 **-卷的预置吞吐量。有效范围为 125— MiB/s 2,000。
   + **最大空闲时间 ** — 可用卷在删除之前可以闲置多长时间。从下拉列表中选择一个值（例如，12 小时）。
   + **IOPS ** — 为卷预置的 IOPS。有效范围为 3,000—80,000 IOPS。IOPS 的吞吐量必须至少为 4 倍。

1. 完成剩余的队列配置步骤，然后选择**创建队列**或**保存更改**。

### 配置永久存储 (AWS CLI)
<a name="volumes-configure-cli"></a>

要使用 AWS Command Line Interface (AWS CLI) 配置永久存储，请在调用`CreateFleet`或`serviceManagedEc2FleetConfiguration`时将该`persistentVolumeConfiguration`对象包括在中`UpdateFleet`。

该`persistentVolumeConfiguration`对象接受以下参数。有关有效范围和默认值，请参阅 Deadl * ine Cloud API 参考[CreateFleet](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateFleet.html)中的内容*。


| 参数 | Type | 必需 | 说明 | 
| --- | --- | --- | --- | 
| sizeGiB | 整数 | 否 | 永久音量的大小，以 GiB 为单位。 | 
| iops | 整数 | 否 | 为 gp3 卷预置的 IOPS。 | 
| throughputMiB | 整数 | 否 | gp3 卷的 MiB/s 预置吞吐量。 | 
| mountPath | 字符串 | 是 | 工作器上的安装位置。对于Linux，指定绝对路径（例如，/mnt/persistent）。对于Windows，指定驱动器号（例如，D:）。 | 
| lastUsedTtlHours | 整数 | 否 | 自动清理之前上次使用卷后的小时数。 | 

以下 AWS CLI 示例创建了一个启用了永久存储的服务管理队列：

```
aws deadline create-fleet \
    --farm-id {{farm-0123456789abcdef0}} \
    --display-name "Rendering Fleet" \
    --max-worker-count 20 \
    --configuration '{
      "serviceManagedEc2FleetConfiguration": {
        "instanceCapabilities": {
          "vCpuCount": {"min": 4, "max": 16},
          "memoryMiB": {"min": 16384, "max": 65536},
          "osFamily": "LINUX",
          "rootEbsVolume": {"sizeGiB": 250}
        },
        "instanceMarketOptions": {"type": "spot"},
        "persistentVolumeConfiguration": {
          "sizeGiB": 2048,
          "iops": 16000,
          "throughputMiB": 500,
          "mountPath": "/mnt/persistent",
          "lastUsedTtlHours": 168
        }
      }
    }'
```

要向现有队列添加永久存储，请在`update-fleet`调用中包含相同的`persistentVolumeConfiguration`对象。要禁用永久存储，请在`UpdateFleet`调用中从舰队配置中省略该`persistentVolumeConfiguration`对象。当现有卷不再连接到工作人员时，Deadline Cloud 会自动清理这些卷。

## 运行时集成
<a name="volumes-runtime"></a>

当永久存储成功安装到工作服务器上时，Deadline Cloud 会将`DEADLINE_PERSISTENT_MOUNT`环境变量设置为配置的挂载路径。此环境变量可用于在工作器上运行的所有作业进程，包括主机配置脚本和作业模板操作。当环境变量存在时，以下运行时使用者会自动使用永久存储：
+ **Conda 队列环境 ** — 软件包安装存储在永久卷上，因此后续工作人员会重复使用先前安装的软件包，而不是重新下载和安装它们。
+ **虚拟文件系统 (VFS) 不可变缓存 ** — VFS 将其不可变资产缓存存储在永久卷上，因此之前下载的资产无需从亚马逊简单存储服务 (Amazon S3) 重新下载即可使用。

您还可以在自己的 Open Job Description 作业模板和脚本中引用`DEADLINE_PERSISTENT_MOUNT`环境变量，以存储应在工作人员生命周期事件中持续存在的数据。以下示例显示了将输出写入永久存储的步骤：

```
steps:
  - name: ProcessAssets
    script:
      actions:
        onRun:
          command: bash
          args:
            - "-c"
            - |
              CACHE_DIR="${DEADLINE_PERSISTENT_MOUNT}/my-app-cache"
              mkdir -p "$CACHE_DIR"
              # Your processing logic here
```

## 管理永久卷
<a name="volumes-manage"></a>

您可以使用 Deadline Cloud 控制台或 API 查看和管理队列的永久交易量。 AWS CLI以下操作可用：
+ **列出卷 **-查看与舰队相关的所有永久卷，包括其状态、大小和可用区。
+ **获取卷详细信息 **-检索有关特定卷的详细信息，包括其当前状态、附件状态和配置。
+ **删除卷 **-永久删除不再需要的独立永久卷。您无法删除当前连接到工作人员的卷。

以下 AWS CLI 示例检索永久卷的详细信息：

```
aws deadline get-volume \
    --farm-id {{farm-0123456789abcdef0}} \
    --fleet-id {{fleet-0123456789abcdef0}} \
    --volume-id {{volume-0123456789abcdef0}}
```

响应中的`state`字段表示当前音量状态。可能的值有：
+ `AVAILABLE`— 该卷已拆下，可以连接了。
+ `IN_USE`— 该卷当前已连接到工作人员。
+ `PENDING_CREATION`— 正在创建卷。
+ `PENDING_ATTACHMENT`— 该卷专用于附加到工作人员。
+ `PENDING_DELETION`— 该音量已标记为删除。

## 更新永久存储配置
<a name="volumes-update"></a>

您可以更新现有队列的永久存储配置。下表描述了配置更改如何影响现有的永久卷：


| 更改 | 行为 | 
| --- | --- | 
| 增加或降低 IOPS 或吞吐量 | Deadline Cloud 会在下一个卷附件之前应用更改。 | 
| 增加音量大小 | Deadline Cloud 会在下一个附件之前放大音量，并在工作器启动期间自动扩展文件系统。 | 
| 减小音量大小 | 不支持。亚马逊 EBS 的容量无法缩小。 | 
| 更改挂载路径 | 仅适用于新员工。现有工作人员保留其当前的装载路径。 | 
| 移除永久存储 | Deadline Cloud 将现有卷标记为待删除，并在这些卷不再连接到工作人员时将其清除。 | 

**重要**  
配置更改不会影响现有工作人员。更改仅适用于更新后启动的新员工。

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

永久卷使用在农场级别配置的加密设置。如果您为农场配置了客户管理 AWS Key Management Service (AWS KMS) 密钥，则永久卷将使用该密钥进行加密。否则，永久卷将使用服务自有密钥进行加密。

## 注意事项
<a name="volumes-considerations"></a>

使用永久存储时，请记住以下注意事项：
+ 永久卷是一种缓存优化，而不是耐用的主存储。仅将永久体积用于可以重新创建的数据，例如包安装、已编译的着色器和资源缓存。Deadline Cloud 可以随时替换卷，并且您无法直接访问永久卷。
+ Deadline Cloud 将工作人员的主目录配置为使用永久卷。将数据存储在主目录（例如 conda 包和应用程序缓存）中的软件会自动受益于持久化。如果您的软件写入到主目录之外的路径，则必须将其重新配置为使用永久挂载路径，否则这些文件不会在工作器生命周期事件中持续存在。
+ 永久卷不能同时连接到多个工作节点。每个卷一次只能为一名工作人员提供服务，但在整个生命周期事件中可由不同的工作人员重复使用。
+ 容量范围限于特定的机队和可用区。在一个可用区中创建的卷不能被其他可用区中的工作人员重复使用。
+ 不能保证特定工作人员获得的音量与之前使用的音量相同。可以分配同一队列和可用区中的任何可用容量。
+ 如果无法配置永久存储（例如，由于配额限制），则任务将失败。没有永久存储，Workers 不会恢复运行。
+ 根据活动卷的数量及其配置，您需要为永久存储付费。要控制空闲期间的成本，请配置 TTL 或从队列中移除永久存储配置。