

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

# 解決導致錯誤或失敗的作業系統組態變更
<a name="resolving-os-configuration-changes"></a>

對 AWS ParallelCluster 節點進行作業系統組態變更時，可能會發生各種可能導致叢集建立、更新或操作失敗的問題。本節提供識別和解決常見作業系統組態相關問題的指引。

## 常見的作業系統組態問題
<a name="common-os-configuration-issues"></a>

### 地區設定組態問題
<a name="locale-configuration-issues"></a>

最常見的作業系統組態問題之一與地區設定有關。如果您看到如下錯誤：

```
cannot change locale (en_US.utf-8) because it has an invalid name
```

這通常發生在以下情況：
+ `yum` 安裝程序失敗，並使地區設定處於不一致狀態
+ 使用者提早終止安裝程序
+ Locale 套件遺失或損毀

#### 如何診斷
<a name="locale-issues-diagnose"></a>

1. 檢查您是否可以切換到 pcluster-admin 使用者：

   ```
   $ su - pcluster-admin
   ```

   如果您看到類似 的錯誤`cannot change locale...no such file or directory`，這會確認問題。

1. 檢查可用的地區設定：

   ```
   $ localedef --list
   ```

   如果這傳回空清單或不包含預設地區設定，則您的地區設定組態會中斷。

1. 檢查最後一個`yum`命令：

   ```
   $ yum history
   $ yum history info #ID
   ```

   如果最後一個 ID 沒有 `Return-Code: Success`，安裝後指令碼可能無法成功執行。

#### 如何解決
<a name="locale-issues-resolve"></a>

透過重新安裝語言套件來重建地區設定：

```
$ sudo yum reinstall glibc-all-langpacks
```

重建之後，請執行下列動作來確認問題已修正：

```
$ su - pcluster-admin
```

如果沒有出現錯誤或警告，表示問題已解決。

### 作業系統套件衝突
<a name="os-package-conflicts"></a>

安裝自訂套件或修改系統套件時，可能會發生衝突，導致叢集無法正常運作。

#### 如何診斷
<a name="package-conflicts-diagnose"></a>

1. 檢查 chef-client 日誌是否有套件相關的錯誤：

   ```
   $ less /var/log/chef-client.log
   ```

1. 在 cfn-init 日誌中尋找套件相依性衝突：

   ```
   $ less /var/log/cfn-init.log
   ```

#### 如何解決
<a name="package-conflicts-resolve"></a>

1. 如果特定套件造成問題，請嘗試重新安裝它：

   ```
   $ sudo yum reinstall package-name
   ```

1. 對於相依性衝突，您可能需要移除衝突的套件：

   ```
   $ sudo yum remove conflicting-package
   ```

1. 如果問題仍然存在，請考慮使用 `pcluster build-image`命令預先安裝的必要套件來建立自訂 AMI。如需詳細資訊，請參閱[AWS ParallelCluster AMI 自訂](custom-ami-v3.md)。

### 系統組態檔案修改
<a name="system-config-file-modifications"></a>

修改重要的系統組態檔案可能會導致叢集失敗，特別是這些檔案由 管理時 AWS ParallelCluster。

#### 如何診斷
<a name="config-file-issues-diagnose"></a>

1. 檢查 Chef-client 日誌中提及特定組態檔案的錯誤：

   ```
   $ grep -i "config" /var/log/chef-client.log
   ```

1. 尋找組態檔案中的許可或語法錯誤：

   ```
   $ less /var/log/cfn-init.log
   ```

#### 如何解決
<a name="config-file-issues-resolve"></a>

1. 將修改後的組態檔案還原為其原始狀態：

   ```
   $ sudo cp /etc/file.conf.bak /etc/file.conf
   ```

1. 如果您需要持續變更系統組態檔案，請使用自訂引導操作，而不是直接修改檔案：

   ```
   HeadNode:
     CustomActions:
       OnNodeConfigured:
         Script: s3://bucket-name/config-script.sh
   ```

   如需詳細資訊，請參閱[自訂引導操作](custom-bootstrap-actions-v3.md)。

1. 對於必須直接對系統檔案進行的組態變更，請考慮建立自訂 AMI。如需詳細資訊，請參閱[AWS ParallelCluster AMI 自訂](custom-ami-v3.md)。

### 核心更新和相容性問題
<a name="kernel-updates-compatibility"></a>

核心更新可能會導致特定 AWS 服務的相容性問題，特別是 Amazon FSx for Lustre。

#### 如何診斷
<a name="kernel-issues-diagnose"></a>

1. 檢查是否已套用核心更新：

   ```
   $ uname -r
   ```

1. 在日誌中尋找 Amazon FSx 掛載失敗：

   ```
   $ grep -i "fsx" /var/log/chef-client.log
   ```

#### 如何解決
<a name="kernel-issues-resolve"></a>

1. 對於 Ubuntu 22.04，請避免更新到最新的核心，因為該核心沒有 Amazon FSx 用戶端。如需詳細資訊，請參閱[作業系統考量事項](operating-systems-v3.md#OS-Consideration-v3)。

1. 如果您已更新核心並遇到問題，請考慮降級至相容的核心版本：

   ```
   $ sudo apt install linux-image-previous-version
   ```

1. 對於持久性核心自訂，請使用您需要的特定核心版本建立自訂 AMI。如需詳細資訊，請參閱[AWS ParallelCluster AMI 自訂](custom-ami-v3.md)。

## 作業系統組態變更的最佳實務
<a name="best-practices-os-config-changes"></a>

若要將進行作業系統組態變更時的問題降至最低：

1. **使用自訂引導操作**：使用 `OnNodeStart`或 `OnNodeConfigured`指令碼以受控制的方式進行變更，而不是直接修改系統檔案。如需詳細資訊，請參閱[自訂引導操作](custom-bootstrap-actions-v3.md)。

1. **建立自訂 AMIs**：對於重大作業系統修改，請使用 建立自訂 AMI，`pcluster build-image`而不是變更執行中的執行個體。如需詳細資訊，請參閱[AWS ParallelCluster AMI 自訂](custom-ami-v3.md)。

1. **測試變更優先**：在將變更套用至生產叢集之前，請先在小型測試叢集上測試變更，以確保相容性。

1. **文件變更**：追蹤所有作業系統組態變更，以利故障診斷。

1. **備份組態檔案**：修改任何系統組態檔案之前，請先建立備份：

   ```
   $ sudo cp /etc/file.conf /etc/file.conf.bak
   ```

1. **變更後檢查日誌**：變更作業系統組態後，請檢查日誌是否有任何錯誤：

   ```
   $ less /var/log/cfn-init.log
   $ less /var/log/chef-client.log
   ```

透過遵循這些準則，您可以將導致叢集故障的作業系統組態變更風險降至最低，並更有效地對發生的任何問題進行故障診斷。