

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

# 解决导致错误或故障的操作系统配置更改
<a name="resolving-os-configuration-changes"></a>

对 Amazon 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`安装过程不成功，导致区域设置处于不一致状态
+ 用户过早终止了安装过程
+ 语言环境包丢失或损坏

#### 如何诊断
<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。有关更多信息，请参阅 [Amazon ParallelCluster AMI 自定义](custom-ami-v3.md)。

### 修改系统配置文件
<a name="system-config-file-modifications"></a>

修改关键系统配置文件可能会导致群集故障，尤其是在这些文件由管理的情况下 Amazon 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。有关更多信息，请参阅 [Amazon ParallelCluster AMI 自定义](custom-ami-v3.md)。

### 内核更新和兼容性问题
<a name="kernel-updates-compatibility"></a>

内核更新可能会导致某些 Amazon 服务的兼容性问题，尤其是与 Amazon for Lustre FSx 的兼容性问题。

#### 如何诊断
<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，请避免更新到最新内核，因为该内核没有亚马逊 FSx 客户端。有关更多信息，请参阅 [操作系统注意事项](operating-systems-v3.md#OS-Consideration-v3)。

1. 如果你已经更新了内核但遇到了问题，可以考虑降级到兼容的内核版本：

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

1. 要进行永久内核自定义，请使用所需的特定内核版本创建自定义 AMI。有关更多信息，请参阅 [Amazon ParallelCluster AMI 自定义](custom-ami-v3.md)。

## 操作系统配置更改的最佳实践
<a name="best-practices-os-config-changes"></a>

要最大限度地减少更改操作系统配置时出现的问题，请执行以下操作：

1. **使用自定义 Bootstrap 操作**：与其直接修改系统文件，不`OnNodeStart`如使用或`OnNodeConfigured`脚本以受控的方式进行更改。有关更多信息，请参阅 [自定义引导操作](custom-bootstrap-actions-v3.md)。

1. **创建自定义 AMIs**：要对操作系统进行重大修改，请使用`pcluster build-image`而不是更改正在运行的实例来创建自定义 AMI。有关更多信息，请参阅 [Amazon ParallelCluster AMI 自定义](custom-ami-v3.md)。

1. **首先测试更改**：在将更改应用于生产集群之前，请在小型测试集群上对其进行测试以确保兼容性。

1. **文档更改**：跟踪所做的所有操作系统配置更改，以便于故障排除。

1. **Backup 配置文件**：在修改任何系统配置文件之前，请创建备份：

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

1. **更改后检查日志：更改**操作系统配置后，请检查日志中是否存在任何错误：

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

通过遵循这些准则，您可以最大限度地降低操作系统配置更改导致群集故障的风险，并更有效地解决出现的任何问题。