一、pg相关1、xxobjectsunfound-问题描述:dmesg查看磁盘发现读写异常,部分对象损坏(处于objectsnofound状态),集群处于ERR状态root@node1101:~#cephhealthdetailHEALTH_ERRnoscrub,nodeep-scrubflag(s)set;13/409798objectsunfound(0.003%);17stuckrequestsareblocked>4096sec.Implicatedosds38OSDMAP_FLAGSnoscrub,nodeep-scrubflag(s)setOBJECT_UNFOUND13/4097
1、前言本文主要描述的是在一次意外中,我们的Proxmox/Ceph集群上丢失了36个磁盘中的33个,这对我们而言,完全是一场灾难!下文将会相信描述该事件,同时也包含了如何修复以及回溯该严重故障。到2020年底,我们终于有了一个长期未完成的维护窗口,以便为客户进行系统升级。在此维护窗口期间(涉及服务器系统的重新启动),涉及的Ceph群集意外进入关机状态。本来计划在晚上早些时候做几个小时的检查清单工作,结果却成了一个紧急情况;让我们称之为噩梦吧(不仅仅是因为它让我们多熬了几个通宵)。因为我们从RCA(故障回溯)中学到了一些东西,所以值得与其他人分享。但首先,让我们退一步,搞清楚我们这次事件的来
1、前言本文主要描述的是在一次意外中,我们的Proxmox/Ceph集群上丢失了36个磁盘中的33个,这对我们而言,完全是一场灾难!下文将会相信描述该事件,同时也包含了如何修复以及回溯该严重故障。到2020年底,我们终于有了一个长期未完成的维护窗口,以便为客户进行系统升级。在此维护窗口期间(涉及服务器系统的重新启动),涉及的Ceph群集意外进入关机状态。本来计划在晚上早些时候做几个小时的检查清单工作,结果却成了一个紧急情况;让我们称之为噩梦吧(不仅仅是因为它让我们多熬了几个通宵)。因为我们从RCA(故障回溯)中学到了一些东西,所以值得与其他人分享。但首先,让我们退一步,搞清楚我们这次事件的来
背景随着物理硬件的不断发展,存储软件所使用的硬件的情况也一直在不断变化。一方面,内存和IO技术一直在快速发展,硬件的性能在极速增加。在最初设计Ceph的时候,通常情况下,Ceph都是被部署到机械硬盘上,能够提供数百IOPS的读写和数十G的磁盘容量。但是,目前最新的NVMe设备可以提供数百万的IOPS读写,并支持TB级的磁盘容量。DRAM的容量在大约20年的时间内增加了128倍。对于网络IO来说,网卡设备现在能够提供超过400Gbps的速度,而几年前只有10Gbps。另一方面,在大约十年的时间内,CPU频率和CPU内核的单线程性能一直处于稳定的状态,增长不明显。相比之下逻辑核心的数量随着晶体
背景随着物理硬件的不断发展,存储软件所使用的硬件的情况也一直在不断变化。一方面,内存和IO技术一直在快速发展,硬件的性能在极速增加。在最初设计Ceph的时候,通常情况下,Ceph都是被部署到机械硬盘上,能够提供数百IOPS的读写和数十G的磁盘容量。但是,目前最新的NVMe设备可以提供数百万的IOPS读写,并支持TB级的磁盘容量。DRAM的容量在大约20年的时间内增加了128倍。对于网络IO来说,网卡设备现在能够提供超过400Gbps的速度,而几年前只有10Gbps。另一方面,在大约十年的时间内,CPU频率和CPU内核的单线程性能一直处于稳定的状态,增长不明显。相比之下逻辑核心的数量随着晶体
Ceph基础概述 Ceph是一个对象式存储系统,所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据的存取;对象数据的底层存储服务由多个主机组成的存储集群;该集群被称之为RADOS(ReliableAutomaticDistributedObjectStore)集群;翻译成中文就是可靠的、自动化分布式对象存储系统; Ceph架构 提示:librados是RADOS存储集群的API,它支持C、C++、java、python和php等变成语言;RADOSGW、RBD、CEPHFS都是RADOS存储服务的客户接口;它们分别把r
Ceph基础概述 Ceph是一个对象式存储系统,所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据的存取;对象数据的底层存储服务由多个主机组成的存储集群;该集群被称之为RADOS(ReliableAutomaticDistributedObjectStore)集群;翻译成中文就是可靠的、自动化分布式对象存储系统; Ceph架构 提示:librados是RADOS存储集群的API,它支持C、C++、java、python和php等变成语言;RADOSGW、RBD、CEPHFS都是RADOS存储服务的客户接口;它们分别把r
前文我们了解了Ceph的访问接口的启用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16727620.html;今天我们来聊一聊获取ceph集群状态和ceph配置文件说明相关话题; Ceph集群状态获取常用命令 1、ceph-s:该命令用于输出ceph集群系统状态信息 提示:ceph-s主要输出有三类信息,一类是集群相关信息,比如集群id,健康状态;第二类是服务类相关信息,比如集群运行了几个mon节点,几个mgr节点,几个mds,osd和rgw;这些服务都处于什么样的状态等等;我们把这些信息称为集群运行状况,它可以让我们一目了然的了解
前文我们了解了Ceph的访问接口的启用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16727620.html;今天我们来聊一聊获取ceph集群状态和ceph配置文件说明相关话题; Ceph集群状态获取常用命令 1、ceph-s:该命令用于输出ceph集群系统状态信息 提示:ceph-s主要输出有三类信息,一类是集群相关信息,比如集群id,健康状态;第二类是服务类相关信息,比如集群运行了几个mon节点,几个mgr节点,几个mds,osd和rgw;这些服务都处于什么样的状态等等;我们把这些信息称为集群运行状况,它可以让我们一目了然的了解
前文我们了解了ceph集群状态获取常用命令以及通过cephdaemon、cephtell动态配置ceph组件、ceph.conf配置文件相关格式的说明等,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16727820.html;今天我们来聊一聊ceph的存储池、PG以及CRUSH相关话题; 一、关于存储池 我们知道ceph客户端存储对象数据到RADOS集群上,不是客户端直接存储到osd上;首先客户端会根据ceph集群的配置,将客户端存储的对象数据切分多个固定大小的对象数据,然后再将这些固定大小的数据对象通过一致性hash算法将对象数据映射至存储池