报错现象

实际报错只有fatal error: bus error
解读:"总线错误(bus error)" 通常与以下原因相关:
硬件故障:内存坏块、磁盘物理损坏或 I/O 错误,导致 etcd 读取 / 写入数据时触发底层硬件异常。
数据文件损坏:etcd 的wal(预写日志)或snap(快照)文件因磁盘错误或异常关闭损坏,无法被正常解析。
架构兼容性问题:结合之前的arm64架构不支持提示,可能是 etcd 二进制与 arm64 架构存在兼容问题,导致运行时内存访问异常。
处理
硬件故障和兼容性可以排查确认,最后如果数据损坏怎么处理。
file $(which etcd)
因为是初始化环境遇见的问题,这种情况只需要删除数据重新部署即可。
集群1.21.5版本,部署的etcd是v3.4.15,换成较新的v3.4.37版本,https://github.com/etcd-io/etcd/releases/tag/v3.4.37
根据集群部署的方式更换
把data-dir数据备份移走之后重新部署新版本,服务正常。
# 停服(若已启动)
systemctl stop etcd
# 备份数据目录(防止误操作)
mv /etcd /etcd_bak_$(date +%F)
# 重建数据目录并设置权限
mkdir -p /etcd
chown -R etcd:etcd /etcd
chmod 700 /etcd # 修复日志中提到的权限不安全问题
# 启动
systemctl start etcd
