适用场景
- 产品:
ZCF - 组件:
ZCE-X - 版本:
6.4.x - 当前内核:
kernel-4.19.90-89.23.v2401.ky10.x86_64 - 目标内核:
kernel-4.19.90-89.25.v2401.ky10.x86_64 - 触发条件:新扩容存储节点未来可能用于对接
csi-iSCSI,需要在部署阶段开启xdc内核态。
问题现象
- 目标不是修复现网业务,而是为后续
csi-iSCSI接入做能力准备。 - 适用范围:
- 仅处理新扩容、未承载业务的主存储节点
- 不影响现有云主机业务
- 需要同时完成:
- 新扩容存储节点内核升级
- 存储版本升级到
6.4.x - 将
xdc切换到内核态
判断方法
- 先确认集群健康、服务健康和资源余量满足升级前提。
- 每台节点内核升级后都要检查
ceph -s与uname -a。 - 存储版本升级后再检查
VERSION、服务状态和mon/osd版本匹配。 - 最后检查
xdc服务重启后状态正常。
原因说明
此次变更的核心目的,是让未来新扩容的存储节点在上线前就具备 xdc 内核态能力,以适应后续 csi-iSCSI 对接需求。因此不能只改 xdc 配置,而要先把节点内核和 SDS 版本升到支持目标模式的配套版本,再切换 xdc 特性开关。
解决方案
- 逐台升级新扩容存储节点内核
- 检查存储状态,确保健康:
ceph -s
- 预期结果:健康状态正常。
- 上传内核包并校验
md5:
4a55105d041b08f281304076018abc4c kernel-4.19.90-89.25.tar.gz
tar xzvf kernel-4.19.90-89.25.tar.gz
- 安装目标内核:
cd kernel-4.19.90-89.25/
yum install --disablerepo=* ./kernel-*
- 重启服务器:
reboot
- 重启后检查:
ceph -s
uname -a
- 预期结果:节点恢复正常且内核版本已更新。
- 按相同步骤逐台处理下一个新扩容存储节点。
- 注意:只升级新扩容的存储节点,不升级计算节点。
- 升级前条件检查
- 检查集群健康:
ceph -s
- 预期结果:
HEALTH_OK。
- 检查各服务健康:
xms-cli --user admin --password $password service list
- 预期结果:所有
status=active。
- 检查
ES服务:
xms-cli --user admin --password $password -l cluster show elasticsearch
- 持续观察
Ceph状态:
watch -n1 ceph -s
- 检查
mon节点主机名是否一致。 - 检查集群是否免密、是否存在防火墙加固。
- 检查
ETCD/ES状态:
xms-manage -s
- 检查
Postgres集群复制健康:
docker exec -u postgres sds-postgres psql -c "select pid, usename, client_addr, state, pg_xlog_location_diff( pg_current_xlog_location(), write_location) write_delay, pg_xlog_location_diff( pg_current_xlog_location(), flush_location) flush_delay, pg_xlog_location_diff(pg_current_xlog_location(), replay_location) replay_delay from pg_stat_replication;"
- 检查所有节点资源使用:
- CPU / 内存低于
80% - 系统盘使用低于
70% /opt、/tmp、根目录预留至少30GB- 预期结果:资源满足升级要求。
- 检查
prometheus端口是否有变更。 - 检查是否存在网络坏盘等隐藏风险:
for i in `xms-cli --user admin -password $password host list | grep storage | awk -F"[ |]+" '{print $8}'`; do echo $i; ssh $i "grep -rnE 'NIC Link is Down|critical medium error|blk_update_request|I/O error' /var/log/messages"; echo -e "\n"; sleep 1; done
- 获取所有服务器列表并检查系统盘空间:
xms-cli --user admin --password $password host list | awk '{print $4}' | grep "^zstack" > hostlist
for i in `cat hostlist`; do ssh $i "df -hT | grep -Ei 'xfs|filesystem' | grep -Ewi 'opt|tmp|/|filesystem'"; done
- 检查
/opt/sds权限是否为755:
for i in `cat hostlist`; do ssh $i 'ls -l /opt/ | grep sds; ls -l /opt/sds'; done
- 检查关键文件 / 目录是否有
i属性:
for y in `cat hostlist`; do ssh $y "for i in /etc/hosts /etc/chrony.conf /etc/rsyslog.conf /etc/group /etc/security; do lsattr \$i; done"; done
- 如有
i属性,先执行:
chattr -i 文件名
chattr -R 文件目录
- 检查
umask是否为0022:
for i in `cat hostlist`; do ssh $i umask; done
- 如不是,则设置为:
for i in `cat hostlist`; do ssh $i umask 0022; done
- 检查当前版本:
cat /opt/sds/installer/VERSION
- 预期结果:确认升级前版本信息准确。
- 升级存储版本到 6.4.x
- 校验升级包
sha256:
sha256sum ZSTACK-V6-installer-6.4.300.1-x86_64-aarch64-6089ea77.tar.gz
- 校验值:
626afd2d38f6d73230b542eee04568636b34f30c5b1ec14f353ff313eb463997
- 找到主数据库节点:
xms-manage db list
- 上传升级包到主数据库节点并准备目录:
mkdir /root/sds_update
mv ZSTACK-V6-installer-6.4.300.1-x86_64-aarch64-6089ea77.tar.gz /root/sds_update
- 解压并执行升级:
cd /root/sds_update
tar zxvf ZSTACK-V6-installer-6.4.300.1-x86_64-aarch64-6089ea77.tar.gz
./upgrade.sh
- 升级过程中需要输入存储平台
UI管理员账户和密码。 - 预期结果:出现
Upgrade successfully。
- 升级后检查
- 检查软件版本:
cat /opt/sds/installer/VERSION
- 检查集群状态:
ceph -s
- 检查服务状态:
xms-cli --user admin --password <账户密码> service list
- 检查版本信息:
xms-cli -v
- 检查
mon和osd版本是否与安装器中的ceph版本匹配:
ceph tell mon.* version
ceph tell osd.* version
- 检查界面功能模块是否正常,例如资源管理、监控管理等。
- 预期结果:升级后平台与集群状态健康。
- 开启 xdc 内核态
- 修改配置文件:
/etc/xdc/xdc.conf
将:
xdc_proxy_feature=false
- 预期结果:关闭
xdc代理特性,准备切换内核态。
- 重启
xdc服务:
systemctl stop xdc
- 等待其自动拉起。
- 检查状态:
systemctl status xdc
- 预期结果:
xdc服务恢复正常。
- 按相同步骤逐台处理其他存储节点。
- 预期结果:所有目标节点切换完成。
验证方法
- 检查每台新扩容节点的
uname -a已变为目标内核版本。 - 检查
ceph -s始终保持健康。 - 检查
xms-cli service list、xms-manage -s、Postgres复制状态正常。 - 检查
VERSION、xms-cli -v、mon/osd版本均匹配6.4.x。 - 检查
xdc服务在各节点已正常运行且配置为内核态模式。
风险与注意事项
- 风险:内核升级需要逐台重启节点,必须确保集群始终健康后再推进下一台。
- 风险:若前置检查不充分,磁盘空间、权限、
lsattr、umask等隐患会在升级时放大。 - 风险等级:低。
