作者:田逸(sery@163.com)
刚躺下,就收到proxmox虚拟机集群报警的邮件,顺便瞧了一眼,发现问题。
磁盘空间满了,导致备份失败。仔细一看,备份目录为/var/lib/vz/dump,这个是本地文件系统的目录,但我以前设定的备份目录是外挂的nfs,空间大得很啊!
担心proxmox集群因系统根分区被塞满而影响整个集群的服务,毕竟所有的业务都从阿里云回迁到该超融合私有云集群上。赶紧爬起来,***拨号,登录到四个物理节点。执行指令:
root@pve10:~# ceph osd tree半天没反应,其它几个机器皆然。大概等待了数分钟,输出提示连接超时。再从proxmox集群web管理界面查看,crush map 没有输出。
继续点菜单“监视器”,quorum列的值全部为否。
再点击管理界面下部任务日志信息,确实是备份错误所引起。
再双击错误信息,可看到更详细而有用的信息。
幸运的是,虽然ceph异常,但运行的其上的虚拟机及应用,居然还能正常访问,只是速度慢了很多。还好,凌晨没什么访问量了。先尝试删掉所有物理节点所有的备份,不管它们是不是被成功的备份。
root@pve10:/var/lib/vz/dump#rm -rfroot@pve10:/var/lib/vz/dump#rm -rf
释放空间,以便ceph相关的服务能向根分区写入日志。其中ceph日志的默认路径为/var/log/ceph ,如果资金预算许可,建议单独用一个物理磁盘来存放ceph日志。即创建一个分区,挂接到目录/var。
删除备份文件以后,磁盘空间得以释放,然后电话询问其它人,这几天有没有人到管理后台去操作,并强烈建议把集群的管理权限收回来(非系统管理的技术人员有所有权限)。
通知完以后,再切换到宿主机系统查看ceph日志,主要是ceph.log及ceph-osd.log,发现输出已经没有报错信息。由此判断,故障已经排除。Proxmox web管理界面,选中某个物理节点,强制启动监视器。
启动后,“quorum”列的值由“否“变成”是“。
再点左侧菜单OSD,磁盘都出来了!
切换到宿主机系统debian,查看osd,也能正常工作了。
root@pve10:/var/log/ceph# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 34.92139 root default -3 8.73035 host pve10 0 hdd 2.18259 osd.0 up 1.00000 1.00000 1 hdd 2.18259 osd.1 up 1.00000 1.00000 2 hdd 2.18259 osd.2 up 1.00000 1.00000 3 hdd 2.18259 osd.3 up 1.00000 1.00000 -5 8.73035 host pve20 4 hdd 2.18259 osd.4 up 1.00000 1.00000 5 hdd 2.18259 osd.5 up 1.00000 1.00000 6 hdd 2.18259 osd.6 up 1.00000 1.00000 7 hdd 2.18259 osd.7 up 1.00000 1.00000 -7 8.73035 host pve30 8 hdd 2.18259 osd.8 up 1.00000 1.00000 9 hdd 2.18259 osd.9 up 1.00000 1.00000 10 hdd 2.18259 osd.10 up 1.00000 1.00000 11 hdd 2.18259 osd.11 up 1.00000 1.00000 -9 8.73035 host pve40 12 hdd 2.18259 osd.12 up 1.00000 1.00000 13 hdd 2.18259 osd.13 up 1.00000 1.00000 14 hdd 2.18259 osd.14 up 1.00000 1.00000 15 hdd 2.18259 osd.15 up 1.00000 1.00000root@pve10:/var/log/ceph# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 34.92139 root default
-3 8.73035 host pve10
0 hdd 2.18259 osd.0 up 1.00000 1.00000
1 hdd 2.18259 osd.1 up 1.00000 1.00000
2 hdd 2.18259 osd.2 up 1.00000 1.00000
3 hdd 2.18259 osd.3 up 1.00000 1.00000
-5 8.73035 host pve20
4 hdd 2.18259 osd.4 up 1.00000 1.00000
5 hdd 2.18259 osd.5 up 1.00000 1.00000
6 hdd 2.18259 osd.6 up 1.00000 1.00000
7 hdd 2.18259 osd.7 up 1.00000 1.00000
-7 8.73035 host pve30
8 hdd 2.18259 osd.8 up 1.00000 1.00000
9 hdd 2.18259 osd.9 up 1.00000 1.00000
10 hdd 2.18259 osd.10 up 1.00000 1.00000
11 hdd 2.18259 osd.11 up 1.00000 1.00000
-9 8.73035 host pve40
12 hdd 2.18259 osd.12 up 1.00000 1.00000
13 hdd 2.18259 osd.13 up 1.00000 1.00000
14 hdd 2.18259 osd.14 up 1.00000 1.00000
15 hdd 2.18259 osd.15 up 1.00000 1.00000
假如通过删除备份释放空间不能恢复服务,最坏的打算,就是重建集群,从nfs备份中恢复了。这不会丢失数据,因为数据库不在此集群中。
最后,记得把备份目录改成nfs共享村存储,收回系统权限,以绝后患!