6.2.2. 恢复 /dev/log 的原始标签值
只有在您将环境从 Red Hat Container Native Storage 3.9 升级到 Red Hat Openshift Container Storage 3.11.8 时,才应按照以下步骤操作。
如果您要将环境从 Red Hat Openshift Container Storage 3.10 及以上升级到 Red Hat Openshift Container Storage 3.11.8,请跳过此步骤。
要恢复原始 selinux 标签,请执行以下命令:
在运行 gluster pod 的所有节点上创建目录和软链接:
# mkdir /srv/<directory_name> # cd /srv/<directory_name>/ # same dir as above # ln -sf /dev/null systemd-tmpfiles-setup-dev.service # ln -sf /dev/null systemd-journald.service # ln -sf /dev/null systemd-journald.socket编辑 daemonset,它将在具有 oc 客户端的节点上创建 glusterfs pod:
# oc edit daemonset <daemonset_name>在 volumeMounts 部分添加卷的映射:
- mountPath: /usr/lib/systemd/system/systemd-journald.service name: systemd-journald-service - mountPath: /usr/lib/systemd/system/systemd-journald.socket name: systemd-journald-socket - mountPath: /usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service name: systemd-tmpfiles-setup-dev-service在 volumes 部分为列出的每个服务添加新主机路径:
注意此处提到的路径应与第 1 步中所述相同。
- hostPath: path: /srv/<directory_name>/systemd-journald.socket type: "" name: systemd-journald-socket - hostPath: path: /srv/<directory_name>/systemd-journald.service type: "" name: systemd-journald-service - hostPath: path: /srv/<directory_name>/systemd-tmpfiles-setup-dev.service type: "" name: systemd-tmpfiles-setup-dev-service在运行 gluster pod 的所有节点上运行以下命令。这将重置标签:
# restorecon /dev/log执行以下命令检查所有卷的自我修复状态:
# oc rsh <gluster_pod_name> # for each_volume in `gluster volume list`; do gluster volume heal $each_volume info ; done | grep "Number of entries: [^0]$"等待自我修复完成。
执行以下命令并确保 brick 不超过 90%:
# df -kh | grep -v ^Filesystem | awk '{if(int($5)>90) print $0}'注意如果 brick 接近 100% 利用率,则这些 brick 的逻辑卷管理器(LVM)激活可能需要很长时间,或者在 pod 或节点重启后可能会卡住。建议关闭该 brick 的利用率或扩展使用逻辑卷(LV)的物理卷。
注意df命令不适用于属于块卷(BHV)的 brick。在 BHV 上,由df命令生成的 brick 的 used 大小是该 Gluster 卷的 blockvolumes 添加的大小,它不是 blockvolumes 中驻留的数据量。如需更多信息,请参阅 Openshift Container Storage 中如何识别块卷和块卷。在 gluster pod 中的任何一个节点上执行以下命令,以设置可在
glusterfsd进程的单一实例上运行的 brick(250)的最大数量:# gluster volume set all cluster.max-bricks-per-process 250在 gluster pod 中的任何一个节点上执行以下命令来确保正确设置了选项:
# gluster volume get all cluster.max-bricks-per-process例如:
# gluster volume get all cluster.max-bricks-per-process cluster.max-bricks-per-process 250
在具有 oc 客户端的节点上执行以下命令,以删除 gluster pod:
# oc delete pod <gluster_pod_name>要验证 pod 是否已就绪,请执行以下命令:
# oc get pods -l glusterfs=registry-pod登录托管 pod 的节点,再检查 /dev/log 的 selinux 标签
# ls -lZ /dev/log输出应该显示 devlog_t 标签
例如:
# ls -lZ /dev/log srw-rw-rw-. root root system_u:object_r:devlog_t:s0 /dev/log退出节点。
在 gluster pod 中,检查标签值是否为 devlog_t:
# oc rsh <gluster_pod_name> # ls -lZ /dev/log例如:
# ls -lZ /dev/log srw-rw-rw-. root root system_u:object_r:devlog_t:s0 /dev/log- 为其他 pod 执行这些步骤 4 到 9。