OpenStack 1.7.2 Ceph 9.2.1 运维命令
一、环境准备加载认证文件。source keystonerc_admin二、实例管理2.1 查看实例列表查看实例列表推荐。openstack server list查看实例列表传统命令。nova list查看运行在特定计算节点上的实例。nova list --host 计算节点名查找具有特定 IP 的实例支持正则。nova list --ip IP地址只显示处于“active”状态的实例。nova list --status active查看使用特定镜像创建的实例。nova list --image 镜像ID或名称查看使用特定规格flavor的实例。nova list --flavor 规格ID或名称管理员专用查看所有租户的实例。nova list --all-tenants只显示指定的字段如 name, host, status。nova list --fields name,host,status查询所有项目下的实例也可以简写为--all。openstack server list --all-projects2.2 查看实例详细信息openstack server show 实例ID或名称 nova show 实例ID或名称2.3 重启实例硬重启Hard Reboot直接模拟“断电再上电”不经过客户机关机流程。硬重启可能导致未保存的数据丢失请谨慎使用。openstack server reboot --hard 实例ID或名称 nova reboot --hard 实例ID或名称软重启Soft Reboot相当于在虚拟机内执行 reboot 命令。openstack server reboot 实例2.4 实例恢复与强制操作强制恢复实例取消暂停。openstack server resume yun83再次尝试强制重启。openstack server reboot --hard yun83强制重置任务状态执行后Nova 会强制标记该实例为 ACTIVE 且无任务挂起。nova reset-state --active 9816a13a-1aeb-41c6-ada3-8d548732e230查看虚拟机ID。virsh list --all | grep 9816a13a-1aeb-41c6-ada3-8d548732e230强制销毁虚拟机。virsh destroy 对应的ID强制删除实例。openstack server delete --force 实例ID三、服务状态检查3.1 计算服务 (Nova)检查 Nova 服务状态。nova service-list openstack compute service list3.2 网络服务 (Neutron)检查 Neutron 网络服务。neutron agent-list openstack network agent list3.3 存储服务 (Cinder)检查存储服务状态。openstack volume service list3.4 集群整体资源概况查看集群整体资源概况包括 memory_mb_used已用内存、vcpus_used已用虚拟 CPU和 running_vms运行中实例数。nova hypervisor-stats示例输出------------------------------- | Property | Value | ------------------------------- | count | 7 | | memory_mb_used | 2226176 | | vcpus_used | 1032 | | running_vms | 101 | -------------------------------四、计算节点维护4.1 服务进程管理登录节点检查服务进程。systemctl status openstack-nova-compute.service systemctl restart openstack-nova-compute.service systemctl restart libvirtd.service4.2 日志排查查看日志定位崩溃原因。tail -100f /var/log/nova/nova-compute.log查看 nova-compute 的日志重点看有没有 ERROR 级别的信息。grep ERROR /var/log/nova/nova-compute.log | tail -504.3 RabbitMQ 连通性测试测试与控制节点 RabbitMQ 的连通性。rabbitmqctl status五、Keystone 项目管理5.1 列出所有项目openstack project list5.2 检查用户与项目的关联openstack user list --project pubinfo openstack user list --project services六、RAID 检查6.1 软件 RAIDLinux mdadm检查软件 RAID。cat /proc/mdstat如果输出显示 md 设备如/dev/md0则说明配置了软件 RAID。6.2 硬件 RAID硬件 RAID 通常通过 RAID 卡管理需要安装对应的工具。使用 lspci 命令检查是否有 RAID 控制器如 LSI、HP、Dell 等。lspci | grep -i raid七、Ceph 9.2.1 集群运维7.1 基础状态检查查看 Ceph 版本。ceph --version查看集群健康摘要。ceph status查看健康状态详细诊断信息。ceph health detail7.2 OSD 性能监控ceph osd perf 用于查看集群中每一块 OSD 磁盘的底层文件系统 IO 延迟指标用来快速定位慢盘、存储性能瓶颈排查集群卡顿、延迟高、slow OSD 告警等问题统计单位为毫秒 (ms)。fs_commit_latency(ms): 文件系统提交延迟数据从内存提交刷写到磁盘持久化的耗时数值越高代表磁盘刷写压力越大、磁盘越慢健康阈值建议10msfs_apply_latency(ms)文件系统应用延迟底层文件系统实际执行写入/修改 IO 操作的总耗时正常会略大于提交延迟直接反映磁盘真实读写性能ceph osd perf7.3 PG归置组管理修复特定的 PG将pg.id替换为实际的值例如 1.45。ceph pg repair pg.id调整 PG 数量。ceph osd pool set pool_name pg_num 2048查看 PG 统计。ceph pg stat列出所有处于 degraded 状态的 PGceph degraded 表示数据副本数量不足冗余度降低但数据仍可读写。ceph pg dump_stuck degraded持续观察 PG 状态变化等待所有 PG 恢复为 activeclean。watch ceph -s7.4 OSD 管理查看 osd.78 所在节点和物理磁盘。ceph osd find 78重启特定 OSD。systemctl restart ceph-osd10查看 OSD 树状图。ceph osd tree以树状形式展示 OSD 在主机上的分布情况同样会显示每个 OSD 的使用率。ceph osd df tree查看单 OSD 使用率。ceph osd dfOSD 使用率降序排序。ceph osd df | sort -k7 -nr调整 OSD 的权重。ceph osd reweight 97 0.1 ceph osd reweight 29 0.1 ceph osd reweight 97 1 ceph osd reweight 29 17.5 存储池配置降低资源池的副本数将 volumes 和 compute 池的 min_size 临时设为 1。ceph osd pool set volumes min_size 1 ceph osd pool set compute min_size 1设置 volumes 存储池副本总数为 2每份对象保存 2 份数据。ceph osd pool set volumes size 2设置 volumes 池正常读写所需的最小在线副本数为 2。ceph osd pool set volumes min_size 2标准高可用配置推荐 size3, min_size2坏一台主机仍能正常读写。7.6 存储阈值设置设置 OSD「接近满」预警阈值为 90%当任意一块 OSD 硬盘实际占用达到 90%OSD 状态标记为 nearfull集群触发告警Ceph 停止向该 OSD 分配新数据、副本、均衡迁移数据。ceph osd set_nearfull_ratio 0.90设置 OSD「写满阻断」临界阈值为 95%OSD 磁盘占用突破 95%OSD 标记为 full彻底阻断该 OSD 上所有写入操作RBD 云盘、对象存储、块存储均无法写数据只读可用业务直接报错阻塞必须清理数据或扩容磁盘才能恢复写入。ceph osd set_full_ratio 0.95分别查询两个阈值。ceph osd get nearfull_ratio ceph osd get full_ratio批量查看集群所有配置过滤水位参数。ceph config dump | grep ratio查看集群整体存储占用。ceph df7.7 OSD 状态控制关闭降级 PG 的对象恢复同步当 OSD 离线、副本缺失时集群不会主动同步缺失对象修复 degraded 降级 PG。ceph osd set norecover关闭 PG 回填迁移新增 OSD、权重调整后不会把 PG 迁移到空闲 OSD 均衡数据停止 backfill 回填 IO。ceph osd set nobackfill屏蔽 OSD 离线检测OSD 心跳超时失联后集群不会将该 OSD 标记为 down不会触发任何数据修复流程。ceph osd set nodown恢复上述设置。ceph osd unset norecover ceph osd unset nobackfill ceph osd unset nodown7.8 核心排错命令ceph osd dump输出完整 OSD Map 全量元数据包含集群全局 OSD 参数、所有存储池配置、每个 OSD 状态、CRUSH 存储规则、快照、配额、纠删码配置等是排查 PG 异常、存储池参数、OSD 离线、数据分布规则最核心的排错命令。ceph osd dump八、Cinder 块存储操作8.1 卷管理列出云硬盘卷信息查看硬盘ID。cinder list --all-tenants | grep -i 5454d29b\|yun233\|yun1268.2 卷删除数据库层面在 Cinder 数据库中删除卷的记录逻辑删除。UPDATE volumes SET deleted 1, status deleted, deleted_at NOW(), updated_at NOW() WHERE id 267b3ac7-0b88-4b18-b14f-b7161b688cf8;删除挂载关联记录。DELETE FROM volume_attachment WHERE volume_id 267b3ac7-0b88-4b18-b14f-b7161b688cf8;删除卷自定义元数据。DELETE FROM volume_metadata WHERE volume_id 267b3ac7-0b88-4b18-b14f-b7161b688cf8;8.3 Ceph RBD 清理查找该卷 ID 对应的 Ceph RBD 镜像全名。rbd ls -p volumes | grep 267b3ac7删除 Ceph 中的实际磁盘文件强制删除该 rbd 镜像。rbd rm -f volumes/上面查到的rbd名称查看 RBD 状态。rbd status volumes/刚才删除的那个rbd名称九、OSD 目录结构与故障处理9.1 OSD 目录结构/var/lib/ceph/osd 下所有 OSD 目录列表。drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-18 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-19 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-2 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-3 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-4 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-5 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-6 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-7 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-8 drwxr-xr-x. 3 ceph 217 Feb 10 2022 ceph-9单 OSD 目录说明ls /var/lib/ceph/osd/ceph-0 total 84 drwxr-xr-x. 3 ceph 217 Feb 10 2022 . drwxr-x---. 22 ceph 4096 Apr 27 2017 .. -rw-r--r--. 1 root 492 May 10 2017 activate.monmap #保存 OSD 启动时加载的 Monitor 集群拓扑映射文件root 权限由系统初始化脚本生成。 -rw-r--r--. 1 ceph 3 May 10 2017 active #标记文件内容为1代表 OSD 激活正常文件丢失 / 内容 0 代表 OSD 未激活。 -rw-r--r--. 1 ceph 37 May 10 2017 ceph_fsid drwxr-xr-x. 690 ceph 24576 Apr 30 04:12 current #Ceph 真实业务数据全部存放在这里包含所有 PG归置组、对象文件、元数据删除 / 损坏该目录 永久丢失此 OSD 上所有数据。 -rw-r--r--. 1 ceph 37 May 10 2017 fsid #存储集群全局唯一 UUID集群内所有 OSD、Mon、MGR 的 fsid 完全一致用于校验 OSD 是否属于当前集群fsid 不匹配会拒绝加入集群。 lrwxrwxrwx. 1 ceph 58 May 10 2017 journal - /dev/disk/by-partuuid/487e576c-dbf0-44f5-8220-97c0530fa40d -rw-r--r--. 1 ceph 37 May 10 2017 journal_uuid #存储 journal 日志分区的唯一 UUID用于校验日志盘和 OSD 绑定关系。 -rw-------. 1 ceph 56 May 10 2017 keyring -rw-r--r--. 1 ceph 21 May 10 2017 magic #存储后端魔术标识用于区分 FileStore / Bluestore 存储引擎。 -rw-r--r--. 1 ceph 6 May 10 2017 ready #初始化完成标记存在该文件代表 OSD 磁盘格式化、PG 目录创建全部完成可以正常加入集群提供存储服务。 -rw-r--r--. 1 ceph 4 May 10 2017 store_version #存储后端版本号用于 Ceph 程序做版本兼容校验版本不匹配会拒绝启动 OSD。 -rw-r--r--. 1 ceph 53 May 10 2017 superblock #OSD 超级块存储 OSD 底层核心元数据磁盘容量、PG 映射、存储格式、集群配置OSD 启动第一时间读取此文件。 -rw-r--r--. 1 root 0 Feb 10 2022 systemd #systemd 管理 OSD 服务的标记文件用于 systemd 识别 osd 进程数据目录。 -rw-r--r--. 1 ceph 2 May 10 2017 whoami #文件内仅存数字 0标记当前目录属于 osd.0OSD 启动时读取识别自身编号。activate.monmap保存 OSD 启动时加载的 Monitor 集群拓扑映射文件active标记文件内容为 1 代表 OSD 激活正常currentCeph 真实业务数据全部存放在这里包含所有 PG归置组、对象文件、元数据fsid存储集群全局唯一 UUIDjournal软链接指向一块独立磁盘分区高速 SSD 分区keyring安全认证文件密钥权限为 600仅 ceph 用户可读ready初始化完成标记superblockOSD 超级块存储 OSD 底层核心元数据whoami文件内仅存数字标记当前目录属于哪个 OSD9.2 SSD Journal 故障处理核心逻辑删除损坏 SSD 的软链接让 FileStore 直接在现有机械数据盘内部开辟日志区域不再依赖外置 SSD原有业务数据完整保留。步骤 1清理失效 SSD 日志关联文件。cd /var/lib/ceph/osd/ceph-0 rm -f journal journal_uuid步骤 2重建内联 Journal不删除业务数据仅重构日志元数据。ceph-osd -i 0 --rebuild-journal --journal-inline步骤 3修复目录权限关键否则 OSD 启动失败。chown -R ceph:ceph /var/lib/ceph/osd/ceph-0步骤 4启动 OSD 并观察集群恢复。systemctl start ceph-osd0 ceph -w9.3 存储引擎检查使用 ceph osd count-metadata 查看 Ceph 集群存储引擎FileStore/BlueStore。ceph osd count-metadata osd_objectstore十、服务重启命令10.1 OpenStack 服务重启systemctl restart openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-consoleauth systemctl restart neutron-server neutron-openvswitch-agent neutron-dhcp-agent neutron-l3-agent systemctl restart openstack-cinder-api openstack-cinder-scheduler openstack-cinder-volume systemctl restart openstack-glance-api openstack-glance-registry10.2 重启顺序重要由于 OpenStack 和 Ceph 是强耦合的OpenStack 依赖 Ceph 存虚拟机Ceph 依赖 OpenStack 宿主机存活重启顺序至关重要否则很容易导致重启后依然卡死或脑裂。遵循以下“先 Ceph - 后 OpenStack”的顺序进行操作在 Controller 节点执行防止重启期间有新虚拟机创建。nova service-disable --reason Maintenance reboot $(nova service-list --binary nova-compute | awk NR1 {print $2 $3})在所有 Ceph 节点停止 OSD 服务systemctl stop ceph-osd.target