

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AMI 修補和 Amazon EC2 執行個體替換
<a name="instance-updates-ami-patch-v3"></a>

為了確保所有動態啟動的叢集運算節點都以一致的方式運作， 會 AWS ParallelCluster 停用叢集執行個體自動作業系統更新。此外，會針對每個版本的 AWS ParallelCluster 及其相關聯的 CLI 建置一組特定的 AWS ParallelCluster AMIs。這組特定的 AMIs 保持不變，而且它們僅受其建置的 AWS ParallelCluster 版本支援。發行版本的 AWS ParallelCluster AMIs 不會更新。

不過，由於出現安全問題，客戶可能會想要將修補程式新增至這些 AMIs，然後使用修補的 AMI 更新其叢集。這符合[AWS ParallelCluster 共同的責任模型](security.md)。

若要檢視您目前使用之 CLI AWS ParallelCluster 版本支援的特定 AWS ParallelCluster AMIs 集，請執行：

```
$ pcluster version
$ pcluster list-official-images
```

 AWS ParallelCluster 前端節點是靜態執行個體，您可以手動更新它。從 3.0.0 AWS ParallelCluster 版開始，完全支援重新啟動和重新啟動前端節點。

如果您的執行個體有暫時性執行個體存放區，您必須記得在手動更新之前儲存執行個體存放區資料。如需詳細資訊，請參閱《Amazon EC2 Linux [`LocalStorage`](HeadNode-v3.md#HeadNode-v3-LocalStorage) 執行個體使用者指南》中的 [`HeadNode`](HeadNode-v3.md) // [`EphemeralVolume`](HeadNode-v3.md#yaml-HeadNode-LocalStorage-EphemeralVolume)叢集組態和具有執行個體存放磁碟區的執行個體類型。 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes) *Amazon EC2 *

運算節點是暫時性執行個體。根據預設，您只能從前端節點存取它們。從 3.0.0 AWS ParallelCluster 版開始，您可以在使用 停止運算機群之後，透過修改 [`Scheduling`](Scheduling-v3.md) / [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) / [`Image`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Image) / [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi) 參數並執行 [`pcluster update-cluster`](pcluster.update-cluster-v3.md)命令來更新與運算執行個體相關聯的 AMI[`pcluster update-compute-fleet`](pcluster.update-compute-fleet-v3.md)：

```
$ pcluster update-compute-fleet-status --status STOP_REQUESTED
```

您可以使用下列其中一種方法，自動為運算節點建立更新的自訂 AMI：
+ 使用 [`pcluster build-image`](pcluster.build-image-v3.md)命令搭配更新的[建置](Build-v3.md) / [`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage)。
+ 使用 [`Build`](Build-v3.md) / / [`Enabled`](Build-v3.md#yaml-build-image-Components-UpdateOsPackages-Enabled)： [`UpdateOsPackages`](Build-v3.md#Build-v3-UpdateOsPackages) 執行組建`true`。

## 前端節點執行個體更新或取代
<a name="instance-updates-headnode-v3"></a>

在某些情況下，您可能需要重新啟動或重新啟動前端節點。例如，當您手動更新作業系統，或執行個體[AWS 排程淘汰](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-retirement.html)強制重新啟動前端節點執行個體時，這是必要的。

如果您的執行個體沒有暫時性磁碟機，您可以隨時停止並再次啟動它。在排程淘汰的情況下，啟動已停止的執行個體會將其遷移為使用新的硬體。

同樣地，您可以手動停止和啟動沒有執行個體存放區的執行個體。在這種情況下，以及其他沒有暫時性磁碟區的執行個體，請繼續 [停止和啟動叢集的前端節點](#instance-headnode-stop-start-v3)。

如果您的執行個體有暫時性磁碟機且已停止，執行個體存放區中的資料將會遺失。您可以判斷用於前端節點的執行個體類型是否有執行個體存放區，該存放區位於[執行個體存放區磁碟區](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes)中的資料表。

## 從暫時性磁碟機儲存資料
<a name="instance-updates-save-data-v3"></a>

從 3.0.0 AWS ParallelCluster 版開始，每個執行個體類型都完全支援前端節點重新啟動和重新啟動。不過，如果執行個體具有暫時性磁碟機，則會遺失其資料。請依照下列步驟，在頭節點重新啟動或重新開機之前保留您的資料。

若要檢查是否有需要保留的資料，請檢視 / [`MountDir`](HeadNode-v3.md#yaml-HeadNode-LocalStorage-EphemeralVolume-MountDir)資料夾中的內容 [`EphemeralVolume`](HeadNode-v3.md#yaml-HeadNode-LocalStorage-EphemeralVolume) (`/scratch`預設為 )。

您可以將資料傳輸到根磁碟區或連接到叢集的共用儲存系統，例如 Amazon FSx、Amazon EFS 或 Amazon EBS。請注意，資料傳輸到遠端儲存可能會產生額外費用。

儲存資料之後，請繼續 [停止和啟動叢集的前端節點](#instance-headnode-stop-start-v3)。

## 停止和啟動叢集的前端節點
<a name="instance-headnode-stop-start-v3"></a>

1. 確認叢集中沒有任何執行中的任務。

   使用Slurm排程器時：
   + 如果未指定 `sbatch``--no-requeue`選項，則會將執行中的任務重新排入佇列。
   + 如果指定 `--no-requeue`選項，則執行中的任務會失敗。

1. 請求叢集運算機群停止：

   ```
   $ pcluster update-compute-fleet --cluster-name cluster-name --status STOP_REQUESTED
   {
     "status": "STOP_REQUESTED",
     ...
   }
   ```

1. 等待運算機群狀態為 `STOPPED`：

   ```
   $ pcluster update-compute-fleet --cluster-name cluster-name --status STOP_REQUESTED
   {
     "status": "STOPPED",
     ...
   }
   ```

1. 對於作業系統重新啟動或執行個體重新啟動的手動更新，您可以使用 AWS 管理主控台 或 AWS CLI。以下是使用 的範例 AWS CLI。

   ```
   # Retrieve head node instance id
   $ pcluster describe-cluster --cluster-name cluster-name --status STOP_REQUESTED
   {
     "headNode": {
     "instanceId": "i-1234567890abcdef0",
     ...
   },
     ...
   }
   # stop and start the instance
   $ aws ec2 stop-instances --instance-ids 1234567890abcdef0
   {
     "StoppingInstances": [
       {
         "CurrentState": {
           "Name": "stopping"
           ...
         },
         "InstanceId": "i-1234567890abcdef0",
         "PreviousState": {
           "Name": "running"
           ...
         }
       }
     ]
   }
   $ aws ec2 start-instances --instance-ids 1234567890abcdef0
   {
     "StartingInstances": [
       {
         "CurrentState": {
           "Name": "pending"
           ...
         },
         "InstanceId": "i-1234567890abcdef0",
         "PreviousState": {
           "Name": "stopped"
           ...
         }
       }
     ]
   }
   ```

1. 啟動叢集運算機群：

   ```
   $ pcluster update-compute-fleet --cluster-name cluster-name --status START_REQUESTED
   {
     "status": "START_REQUESTED",
     ...
   }
   ```