作者:田逸(sery@163.com)

 

刚躺下,就收到proxmox虚拟机集群报警的邮件,顺便瞧了一眼,发现问题。

001.jpg

磁盘空间满了,导致备份失败。仔细一看,备份目录为/var/lib/vz/dump,这个是本地文件系统的目录,但我以前设定的备份目录是外挂的nfs,空间大得很啊!

 

担心proxmox集群因系统根分区被塞满而影响整个集群的服务,毕竟所有的业务都从阿里云回迁到该超融合私有云集群上。赶紧爬起来,***拨号,登录到四个物理节点。执行指令:

root@pve10:~# ceph osd tree


半天没反应,其它几个机器皆然。大概等待了数分钟,输出提示连接超时。再从proxmox集群web管理界面查看,crush map 没有输出。

 002.jpg

继续点菜单“监视器”,quorum列的值全部为否。

003.jpg

 

再点击管理界面下部任务日志信息,确实是备份错误所引起。

004.jpg

 

再双击错误信息,可看到更详细而有用的信息。

005.jpg

 

幸运的是,虽然ceph异常,但运行的其上的虚拟机及应用,居然还能正常访问,只是速度慢了很多。还好,凌晨没什么访问量了。先尝试删掉所有物理节点所有的备份,不管它们是不是被成功的备份。

root@pve10:/var/lib/vz/dump#rm -rf

root@pve10:/var/lib/vz/dump#rm -rf

 

释放空间,以便ceph相关的服务能向根分区写入日志。其中ceph日志的默认路径为/var/log/ceph ,如果资金预算许可,建议单独用一个物理磁盘来存放ceph日志。即创建一个分区,挂接到目录/var。

 

删除备份文件以后,磁盘空间得以释放,然后电话询问其它人,这几天有没有人到管理后台去操作,并强烈建议把集群的管理权限收回来(非系统管理的技术人员有所有权限)。

 

通知完以后,再切换到宿主机系统查看ceph日志,主要是ceph.log及ceph-osd.log,发现输出已经没有报错信息。由此判断,故障已经排除。Proxmox web管理界面,选中某个物理节点,强制启动监视器。

006.jpg

启动后,“quorum”列的值由“否“变成”是“。

007.jpg

再点左侧菜单OSD,磁盘都出来了!

008.jpg

 

切换到宿主机系统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.00000

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.00000

假如通过删除备份释放空间不能恢复服务,最坏的打算,就是重建集群,从nfs备份中恢复了。这不会丢失数据,因为数据库不在此集群中。


最后,记得把备份目录改成nfs共享村存储,收回系统权限,以绝后患!

009.jpg