ceph学习笔记和基础知识
Posted 厚积_薄发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph学习笔记和基础知识相关的知识,希望对你有一定的参考价值。
ceph源码下载:
主要文档下载连接:
http://download.csdn.net/detail/skdkjxy/8149989
/*******************/
Time:2014-11-6
Author:skdkjzz
/******************/
1、unified中何为radosgw、rbd、ceph-dfs、rados?
2、distributed中spof?
http://article.yeeyan.org/view/258596/225158
单点故障
3、ceph中何为paxos?
4、ceph包括四个部分--moniters(ceph-mon)、object_storage_daemons(ceph-osd)、clients(librados、librbd)、metadata_servers(ceph-mds)
5、posix语义?
6、rados_object_storage_model--include “pools” “objects”
7、object_storage--何为btrfs、xfs?online fsck 硬盘坏轨检查?
8、objects are automatically placed放置, balanced均衡, migrated迁移 in a dynamic cluster动态集群
9、CRUSH伪随机放置算法(pseudo-random placement algorithm)
10、3 replicas, same row, different racks(3个副本、同行、不同机架)
11、coordinate_peers(协调节点?)
12、何为openstack、RESTful、S3?
13、何为ACL_route_base(路由策略)?
14、何为rbd – rados block device --rbd?
15、基于内核的虚拟机(K Virtual Machine)--kvm
16、何为librbd、libvirt
17、shared cluster-coherent file system (共享集群一致?连贯?文件系统)?
18、动态子目录树分区特性--高效、可扩展、动态、自适应(均衡整个集群)
19、recursive_accounting--递归运算
20、Linux_kernel_client--Samba(CIFS)、export(NFS)
21、NFS-GANESHA 是一个用户空间服务器,支持NFSv2、NFSv3和NFSv4。它支持的运行平台包括Linux,BSD variants和POSIX-compliant Unixes。
22、何为poc?
POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,
对承载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和平台的承载能力和性能变化。
23、needs testing, deliberate qa effort for production(需要进行测试,为深思熟虑的品质做出努力)
/*******************/
Time:2014-11-7
Author:skdkjzz
/******************/
1、跟随魏盟去存储技术实验室
2、何为Lustre、GlusterFS和OrangeFS?
3、预计下周一进行疑惑解决,然后深入ceph框架
/========================================================================/
HardDisk:
4、预计下周一进行ceph安装文档阅读:
5、均衡日志和OSD性能相当重要
6、不顾分区而在单个硬盘上运行多个OSD,这样不明智!
7、不顾分区在运行了OSD的硬盘上监视器或者元数据服务器,也是不明智!
8、存储驱动器受限于寻道时间、访问时间、读写时间、还有总吞吐量,这些物理局限性影响着整体系统性能,尤
其在系统恢复期间。因此我们推荐独立的驱动器用于安装操作系统和软件,另外每个OSD守护进程占用一个驱动器。
大多数“slow OSD”问题的起因都是在相同的硬盘上运行了操作系统、多个OSD和/或多个日志文件。鉴于解决性能问题
的成本差不多会超过另外增加磁盘驱动器,你应该在设计时就避免增加 OSD 存储驱动器的负担来提升性能。
9、ceph允许你在每块硬盘驱动器上运行多个OSD,但这会导致资源竞争并降低总体吞吐量;ceph也允许把日志
和对象数据存储在相同驱动器上,但这会增加记录写日志并回应客户端的延时,因为ceph必须先写入日志才会回应确认了写动作。
btrfs文件系统能同时写入日志数据和对象数据,xfs和ext4却不能。
10、ceph最佳实践指示,你应该分别在单独的硬盘运行操作系统、OSD数据和OSD日志。
/========================================================================/
/*******************/
Time:2014-11-8
Author:skdkjzz
/******************/
SSD:
1、一种提升性能的方法是使用固态硬盘(SSD)来降低随机访问时间和读延时,同时增加吞吐量。SSD和硬盘相
比每GB成本通常要高10倍以上,但访问时间至少比硬盘快100倍。
2、SSD局限性在于顺序读写性能,SSD没有可移动机械部件,所以不存在和硬盘一样的局限性。但SSD也有局限性,评估SSD时,顺序读写性
能很重要,在为多个OSD存储日志时,有着400MB/s顺序读写吞吐量的SSD其性能远高于120MB/s的。
3、在大量投入SSD前,我们强烈建议核实SSD的性能指标,并在测试环境下衡量性能。
4、SSD没有移动机械部件,很适合ceph中不需要太多存储空间的地方,但是对SSD性能衡量需要注意一下几点:
4.1)IOPS指标,又何为IOPS指标?
4.2)写密集语义:记日志涉及写密集语义,所以你要确保选用的SSD写入性能和硬盘相当或好于硬盘。廉价SSD可能在加速访问的同时
引入写延时,有时候高性能硬盘的写入速度可以和便宜SSD相媲美。又何为写密集语义?
4.3)顺序写入:在一个SSD上为多个OSD存储多个日志时也必须考虑SSD的顺序写入极限,因为它们要同时处理多个OSD日志的写入请求。
4.4)分区对齐:采用了SSD的一个常见问题是人们喜欢分区,却常常忽略了分区对齐,这会导致SSD的数据传输速率慢很多,所以请确保分区对齐了。
5、SSD用于对象存储太昂贵了,但是把OSD的日志存到SSD、把对象数据存储到独立的硬盘可以明显提升性能。osd_journal选项的默认值是
/var/lib/ceph/osd/$cluster-$id/journal,你可以把它挂载到一个SSD或SSD分区,这样它就不再是和对象数据一样存储在同一个硬盘上的文件了 。
6、提升CephFS文件系统性能的一种方法是从CephFS文件内容里分离出元数据。ceph提供了默认的metadata存储池来存储CephFS元数据,所以你不需要给
CephFS元数据创建存储池,但是可以给它创建一个仅指向某主机SSD的CRUSH运行图。又何为CRUSH运行图?
Controller:
1、优秀的ceph的性能问题探讨可以参考ceph相关blog--见ceph-docs_zh-v1.3.pdf,页码为p23
2、硬盘控制器对写吞吐量有显著影响,需慎重选择,以免造成性能瓶颈(bottleneck)
Others_Notes:
1、可以在同意主机运行多个osd,但是需保证osd硬盘吞吐量不超过为客户端提供读写服务所需网络带宽。
2、还应考虑集群在每台主机上存储的数据占总体的百分比,如果一台主机所占百分比太多而挂了,那么就可能导致诸如full ratio(满载满负荷)的问题,
那么ceph会中止运行来防止数据丢失。
3、如果每台主机运行多个osd,请保证内核是最新的,来确保硬件性能可达期望值。
Network:
1、建议每台机器最少两个千兆网卡,现在大多数机械硬盘都能达到大概100MB/s的吞吐量,网卡应该能处理所有OSD硬盘总吞吐量,所以推荐最少两个千兆网卡,
分别用于公网(前端)和集群网络(后端)。集群网络(最好别连接到国际互联网)用于处理由数据复制产生的额外负载,而且可防止拒绝服务攻击,拒绝服务攻击
会干扰数据归置组,使之在OSD数据复制时不能回到active+clean状态。请考虑部署万兆网卡。通过1Gbps网络复制1TB数据耗时3小时,而3TB(典型配置)需要9小时,
相比之下,如果使用10Gbps复制时间可分别缩减到20分钟和1小时。在一个PB级集群中,OSD磁盘失败是常态,而非异常;在性价比合理的的前提下,系统管理员
想让PG尽快从degraded(降级)状态恢复到 active+clean 状态。另外,一些部署工具(如Dell的Crowbar)部署了5个不同的网络,但使用了VLAN以提高网络和硬件可管理性。
VLAN使用802.1q协议,还需要采用支持VLAN功能的网卡和交换机,增加的硬件成本可用节省的运营(网络安装、维护)成本抵消。使用VLAN来处理集群和计算栈
(如 OpenStack、 CloudStack 等等)之间的VM流量时,采用10G网卡仍然值得。每个网络的机架路由器到核心路由器应该有更大的带宽,如40Gbps到100Gbps。
又何为VM流量?
2、服务器应配置底板管理控制器(Baseboard Management Controller, BMC),管理和部署工具也应该大规模使用BMC,所以请考虑带外网络管理的成本/效益平衡,
此程序管理着SSH访问、VM映像上传、操作系统安装、端口管理、等等,会徒增网络负载。运营3个网络有点过分,但是每条流量路径都指示了部署一个大型数据集群前
要仔细考虑的潜能力、吞吐量、性能瓶颈。
Failure_Domain:
1、故障域指任何导致不能访问一个或多个OSD的故障,可以是主机上停止的进程、硬盘故障、操作系统崩溃、有问题的网卡、损坏的电源、断网、断电等等。规划硬件需求时,
要在多个需求间寻求平衡点,像付出很多努力减少故障域带来的成本削减、隔离每个潜在故障域增加的成本。
HardWare_choose:
1、参考文档ceph-docs_zh-v1.3.pdf,页码为p24。
2、如果在只有一块硬盘的机器上运行OSD,要把数据和操作系统分别放到不同分区;一般来说,我们推荐操作系统和数据分别使用不同的硬盘。
/*******************/
Time:2014-11-9
Author:skdkjzz
/******************/
OS_Recommentdations:
1、推荐在较新的Linux发行版上部署ceph。
2、在btrfs上运行ceph,推荐使用Linux内核版本高于v3.5。又何为btrfs?
3、syncfs(2):对非btrfs文件系统(像XFS和ext4)而言,在一台服务器上运行了多个ceph-osd守护进程时,ceph使用syncfs(2)系统调用时效率高
得多(此功能在2.6.39内核和glibc-2.14加入)。又何为syncfs(2)?
Platfrom:
1、一般来说,ceph对Linux内核和系统初始化阶段的依赖很少(sysvinit、upstart、systemd)。又何为sysvinit、upstart、systemd?
2、Notes:
2.1)默认内核的btrfs版本较老,不推荐用于ceph-osd储存节点,要升级到推荐的内核,或者改用xfs或ext4。
2.2)默认内核带的ceph客户端较老,不推荐做内核空间客户端(内核rbd或ceph文件系统),请升级至推荐内核。
2.3)已安装glibc版本不支持syncfs(2)系统调用,同一台机器上使用xfs或ext4的ceph-osd守护进程性能一般,它可以更好。
Testing:
1、我们持续地在这个平台上编译所有分支、做基本单元测试;也为这个平台构建可发布软件包。
2、我们在这个平台上做基本的安装和功能测试。
3、我们在这个平台上持续地做全面的功能、退化、压力测试,包括开发分支、预发布版本、正式发布版本。
Installing Ubuntu/debian Packages:p27
1、install release key:
1.1)软件包都使用进行release.asc密钥加密签名过,把发布密钥添加到系统可信密钥列表中可避免安全警告,运行命令如下:
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add
2、Add release packeages:
2.1)稳定版-bobtail是ceph最新的主要发布,适用任何想在生产环境下部署ceph,重大的bug已经修复。把软件库添加到apt源列表,运行命令如下:
echo deb http://ceph.com/debian-bobtail/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
2.2)稳定版-argonaut是ceph前一个的主要发布,适用已经在生产环境下部署了argonaut又没准备好升级。把软件库添加到apt源列表,运行命令如下:
echo deb http://ceph.com/debian-argonaut/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
3、install packages-ceph:
3.1)把正式发布或者开发包添加到apt源列表中,要更新apt数据库,在安装ceph。运行命令如下:
sudo apt-get update && sudo apt-get install ceph
RPM packages install-centos&redhat:
1、rpm安装和ubuntu下类似,详见p29
Update Ceph:
1、可以逐个升级集群中的守护进程:
1.1)登录主机升级ceph包
1.2)重启ceph守护进程
1.3)确认集群是健康,运行正常
1.4)Notes:important-->一旦升级守护进程就无法降级!
2、depend relation,升级顺序如下:
2.1)Monitors(or Osds)
2.2)Osds(or Monitors)
2.3)Metadata Servers
2.4)RADOS Gateway
Notes:
作为一般规则,推荐一次性升级同一类型的所有守护进程(如所有ceph-osd守护进程、所有ceph-mon等等)以保证它们都处于同一版本。同时建议
您升级完集群中的所有守护进程后再练习那个版本的新功能。
3、Upgrading OSD Steps:
3.1)Upgrade the OSD package--> ssh osd-host && sudo apt-get update && sudo apt-get install ceph
3.2)Restart the OSD, where N is the OSD number--> service ceph restart osd.N
3.3)Ensure the upgraded OSD has rejoined the cluster--> ceph osd stat
3.4)成功升级一个OSD后,再继续其它的,直到完成所有OSD。
4、Upgrading Monitors:
4.1)Upgrade the ceph package--> ssh mon-host && sudo apt-get update && sudo apt-get install ceph
4.2)Restart the monitor--> service ceph restart mon.name
4.3)Ensure the monitor has rejoined the quorum--> ceph mon stat
4.4)成功升级一个监视器后,再继续其它的,直到完成所有监视器。
5、Upgrading a Metadata Server:
5.1)Upgrade the ceph package--> ssh mds-host && sudo apt-get update && sudo apt-get install ceph
5.2)Restart the metadata server--> service ceph restart mds.name
5.3)Ensure the metadata server is up and running--> ceph mds stat
5.4)成功升级一个元数据服务器后,再继续其它的,直到完成所有元数据服务器。
6、Upgrading a Client:
6.1)Upgrade the package--> ssh client-host && apt-get update && sudo apt-get install ceph-common librados2 librbd1 python-ceph
6.2)Ensure that you have the latest version--> ceph --version
Argonaut update to Bobtail:
1、Notes:
1.1)现在默认开启了认证,但以前默认关闭
1.2)监视器使用了新的内部on-wire协议(一个时间同步协议?)
1.3)使用RBD format 2格式的映像前要先升级完所有OSD。
1.4)bobtail版支持format 2格式的映像!若ceph-osd未完全升级完成,不可以使用format 2格式。检查集群版本命令如下:
ceph osd ls 和 ceph tell osd.N version ,其中ceph osd ls 会列出集群里所有OSD的ID,循环脚本示例:
for i in $(ceph osd ls); do
ceph tell osd.$i version
done
1.5)具体开始细节见p33。
Build Ceph Prerequisites,in other words,Cpeh depend other libs or tools:
1、在 Ubuntu上,执行sudo apt-get install安装缺失依赖,运行命令如下:
1.1)sudo apt-get install autotools-dev autoconf automake cdbs gcc g++ git libboost-dev libedit-dev libssl-dev libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto++-dev libcrypto++ libexpat1-dev
1.2)sudo apt-get install uuid-dev libkeyutils-dev libgoogle-perftools-dev libatomic-ops-dev libaio-dev libgdata-common libgdata13 libsnappy-dev libleveldb-dev
Building Ceph:
1、具体安装步骤及注意事项如下:
1.1):进入ceph source,执行命令如下
cd ceph
./autogen.sh
./configure --prefix=?
make
1.2)根据你的系统可以用 make -j 同时运行多个任务,例如make -j4在双核CPU上会编译得更快。
1.3)安装ceph到本地,执行命令--> sudo make install
Installing Oprofile:
1、分析ceph CPU消耗情况的最简方法就是用系统级的oprofile--> sudo apt-get install oprofile oprofile-gui
Compiling Ceph for Profiling:
1、编译适合分析的ceph:
1.1)先清理先前编译--> make distclean
1.2)查看输出调用图--> export CFLAGS="-fno=omit-frame-pointer -O2 -g"
1.3)最终编译-->
./autogen.sh
./configure
make
1.4)超线程编译选项-->make -j4
/*******************/
Time:2014-11-10
Author:skdkjzz
/******************/
RADOS About:
1、ceph 集群可以包含数千个存储节点,最小系统至少需要二个OSD才能做到数据复制。要配置OSD集群,你得把配置写入
配置文件,ceph对很多选项提供了默认值,你可以在配置文件里覆盖它们;另外,你可以使用命令行工具修改运行时配置。
2、ceph 启动时要激活三种守护进程:
2.1)ceph-osd
2.2)ceph-mon
2.3)ceph-mds
3、Hard disk prep:
3.1)如果文件系统日志在原始硬盘上,就需要禁用写缓存:新的内核(big than v2.6.33)不需要禁用
3.2)禁用硬盘的写缓存功能--> sudo hdparm -W 0 /dev/hda 0
3.3)在生产环境,建议您在系统盘运行OSD,在另外的硬盘里放数据。如果必须把数据和系统放在一个硬盘里,最好给数据分配一个单独的分区。
4、Fs depend:
4.1)ceph的OSD依赖于底层文件系统的稳定性和性能。
4.2)当前,我们推荐部署生产系统时使用xfs文件系统,建议用btrfs做测试、开发和其他不太要紧的部署。我们相信,长期来看btrfs适合ceph的功能需求和发展方向,
但是xfs和ext4能提供当前部署所必需的稳定性。btrfs开发在迅速推进,用户应该有能力经常更新到最新内核发布,而且能跟踪严重bug的修正进度。
4.3)ceph的OSD有赖于底层文件系统的扩展属性(XATTR)存储各种内部对象状态和元数据。底层文件系统必须给XATTR提供足够容量,btrfs没有限制
随文件存储的xattr元数据;xfs的限制相对大(64KB),多数部署都不会有瓶颈;ext4的则太小而不可用。
4.4)要用这些文件系统,你得把下面这行写入ceph.conf的[osd]段里--> filestore xattr use omap = true
5、xfs、btrfs比较:
5.1)xfs和btrfs相比较ext3/4而言,在高伸缩性数据存储方面有几个优势,xfs和btrfs都是日志文件系统,这使得在崩溃、断电后恢复时更健壮,
因为文件系统在写入数据前会先记录所有变更。
5.2)xfs由Silicon Graphics开发,是一个成熟、稳定的文件系统。相反,btrfs是相对年轻的文件系统,它致力于实现系统管理员梦寐以求的大规模数据存储基础,
和其他Linux文件系统相比它有独一无二的功能和优势。
5.3)btrfs是写时复制(copy-on-write, cow)文件系统,它支持文件创建时间戳和校验和(可校验元数据完整性)功能,所以它能探测到数据坏副本,
并且用好副本修复。写时复制功能是说btrfs支持可写文件系统快照。btrfs也支持透明压缩和其他功能。
5.4)btrfs也集成了多设备管理功能,据此可以在底层支持异质硬盘存储,和数据分配策略。未来开发社区还会提供fsck、拆分、数据加密功能,这些诱人的功能正是ceph集群的理想选择。
Configure Ceph:
1、典型的ceph集群中至少要运行下面四种守护进程中的一种:
1.1)ceph-osd 对象存储设备
1.2)ceph-mon 监视器
1.3)ceph-mds 元数据服务器
1.4)radosgw(ceph gateway) ceph网关
1.5)为方便起见,每个守护进程都有一系列默认值(参见 ceph/src/common/config_opts.h),你可以用ceph配置文件覆盖这些设置。
2、configfile--> ceph.conf:
2.1)启动ceph集群时,每个守护进程都从ceph.conf里查找它自己的配置。
2.2)手动配置时,你需要创建ceph.conf来配置集群-->详见p43。
2.3)ceph文件使用ini风格的语法,以分号(;)和井号(#)开始的行是注释。
2.4)一个例程由类型和它的例程编号(ID)确定,OSD的例程ID只能是数字,监视器和元数据服务器的ID可包含字母和数字。
2.5)元变量大大简化了集群配置,ceph会把配置的元变量展开为具体值;元变量功能很强大,可以用在[global] 、[osd] 、
[mon] 、[mds]段里,类似于bash的shell扩展-->详见p45。
2.6)理想情况下一台主机应该只 运行一类进程,例如:一台主机运行着ceph-osd进程,另一台主机运行着ceph-mds进程,ceph-mon进程又在另外一台主机上。
2.7)每个主机都有一个标识名称(系统配置),监视器可用addr选项指定网络地址和端口(如域名或IP地址),基本配置可以只指定最小配置。例如:
[mon.a]
host = hostName
mon addr = 150.140.130.120:6789
[osd.0]
host = hostName
Notes:
2.7.1)主机名设置是主机的短名字,不是正式域名FQDN,也不是IP地址;在执行hostname -s就可以得到短名字。
此设置只在mkcephfs和手动部署时用到,用chef部署ceph时不必要。
2.8)监视器默认监听 6789 端口,元数据服务器和OSD监听从6800开始的第一个可用端口;要确保监听6789端口的是监视器进程,每个OSD或元数据服务器进程
监听了从6800开始的端口。每个主机使用的端口数量都是确定的,所以你没必要多开端口。但有些时候进程失败后重启却没释放旧端口,就会绑定到了新端口,
所以要多留些端口作备用。如果你的部署区分了集群网和公网,你也许需要给每个网络写相应配置。网络端口配置示例命令:
iptables -A INPUT -m multiport -p tcp -s ip-address/netmask --dports 6789,6800:6810 -j ACCEPT
2.9)使用两个分开的网络:
2.9.1)OSD给客户端做数据复制时,如果副本数大于1,客户端和ceph集群间的网络负载会很容易增大,这会导致延时增大和性能下降,ceph处于Degrade。
2.9.2)拒绝服务攻击(DoS),当攻击OSD间的流量中断时,归置组就再也不能进入active+clean状态了,它也会阻止用户读写数据。
2.9.3)最好的办法就是彻底分开集群网和公网。详见p47
2.9.3.1)要配置这样的网络,把下面的选项加到ceph.conf里的[global]段下:
[global]
public network public-network-ip-address/netmask
cluster network enter cluster-network-ip-address/netmask
2.9.3.2)要让ceph主机使用分开的网络,把下面的选项设置在守护进程例程下面:
[osd.0]
public addr host-public-ip-address
cluster addr host-cluster-ip-address
2.10)典型的ceph生产集群至少部署3个监视器来确保高可靠性,它允许一个监视器例程崩溃。奇数个监视器确保PAXOS算法能确定
一批监视器里哪个版本的集群运行图是最新的。
2.11)一个ceph 集群可以只有一个监视器,但是如果它失败了,因没有监视器数据服务就会中断。
2.12)ceph监视器默认监听6789端口:
[mon.a]
host = hostName
mon addr = 150.140.130.120:6789
Notes:
1)默认情况下,ceph会在下面的路径存储监视器数据--> /var/lib/ceph/mon/$cluster-$id
2)你必须自己创建对应的目录,前述的元变量必须先展开,名为ceph的集群将展开为--> /var/lib/ceph/mon/ceph-a
3)你可以用mon data选项更改默认路径,但我们不推荐修改。用下面的命令在新监视器主机上创建默认目录,运行命令如下:
ssh new-mon-host && sudo mkdir -p /var/lib/ceph/mon/ceph-mon-letter
2.13)典型的生产集群里,一个数据盘上运行一个OSD进程;典型部署要指定日志尺寸、文件存储的扩展属性(XATTR)是否使用对象图(如运行在ext4之上),例如:
[osd]
osd journal size = 10000
filestore xattr use omap = true #enables the object map. Only if running ext4.
[osd.0]
hostname = hostname
Notes:
1)默认ceph认为你把OSD数据存储在下面的路径下:--> /var/lib/ceph/osd/$cluster-$id
2)你必须创建对应目录,名字为ceph的集群其元变量完全展开后,前述的目录将是--> /var/lib/ceph/osd/ceph-0
3)你可以用mon data选项更改默认路径,但我们不推荐修改。用下面的命令在新监视器主机上创建默认目录,运行命令如下:
ssh new-osd-host && sudo mkdir -p /var/lib/ceph/osd/ceph-osd-number
4)osd data路径应该指向一个硬盘的挂载点,这个硬盘应该独立于操作系统和守护进程所在硬盘。按下列步骤准备好并挂载:
ssh new-osd-host && sudo mkfs -t fstype /dev/disk && sudo mount -o user_xattr /dev/hdd /var/lib/ceph/osd/ceph-osd-number
5)我们推荐用xfs或btrfs文件系统,命令是mkfs
6)ceph默认把OSD日志存储在下面的路径--> /var/lib/ceph/osd/$cluster-$id/journal
7)没有性能优化时,ceph把日志和OSD数据存储相同的硬盘上;要优化OSD性能,可以把日志分离到单独的硬盘上(例如,固态硬盘能提供高日志性能)。
8)ceph的osd journal size默认值是0,所以你得在 ceph.conf里设置,日志尺寸应该至少2倍于filestore min sync interval的值和预计吞吐量的乘积:
osd journal size = 2 * (expected throughput * filestore min sync interval)
9)预计吞吐量应该包括硬盘吞吐量(持续的数据传输速度)和网络吞吐量,例如,7200转的硬盘速度大概是100MB/s,取硬盘和网络吞吐量中较小的一个
应该能提供合理的预计吞吐量。一些用户以 10GB 起步,例如--> osd journal size = 10000 (unit is MB?)
2.14)journal and debug:
2.14.1)为打 ceph的调试输出(例如,dout()),你可以在配置文件里添加调试选项。ceph的日志级别在 1 到 20 之间,1 是简洁、20 是详细。对每个
进程都相同的子系统可以在[global]下配置,对特定守护进程的子系统要配置在进程段下,如[mon] 、[osd] 、[mds] 下。 例如:
[global]
debug ms = 1
[mon]
debug mon = 20
debug paxos = 20
debug auth = 20
[osd]
debug osd = 20
debug filestore = 20
debug journal = 20
debug monc = 20
[mds]
debug mds = 20
debug mds balancer = 20
debug mds log = 20
debug mds migrator = 20
Notes:
1)你的系统运行良好的时候,应该选择合适的日志级别、关闭不必要的调试设置来确保集群运行在最佳状态。记录调试输出相 对慢,且浪费资源。
2)每个子系统的日志都有它自己的输出级别、和内存存留级别。你可以给每个子系统分别设置不同的日志文件和内存日志级别,例如:
debug subsystem log-level/memory-level
#for example
debug mds log 1/20 (log/memory level)
2.15)EXAMPLE CEPH.CONF:
[global]
auth supported = cephx
[osd]
osd journal size = 1000
# uncomment the following line if you are mounting with ext4
# filestore xattr use omap = true
[mon.a]
host = myserver01
mon addr = 10.0.0.101:6789
[mon.b]
host = myserver02
mon addr = 10.0.0.102:6789
[mon.c]
host = myserver03
mon addr = 10.0.0.103:6789
[osd.0]
host = myserver01
[osd.1]
host = myserver02
[osd.2]
host = myserver03
[mds.a]
host = myserver01
2.16)Running Changes:
2.16.1)ceph可以在运行时更改ceph-osd、ceph-mon、ceph-mds守护进程的配置:
ceph daemon-type tell id or * injectargs '--name value [--name value]'
2.16.2)用osd、mon、mds中的一个替代daemon-type,你可以用星号(*)或具体进程ID(其数字或字母)把运行时配置应用到一类进程的所有例程,
例如增加名为osd.0的ceph-osd进程的调试级别的命令如下--> ceph osd tell 0 injectargs '--debug-osd 20 --debug-ms 1'
2.16.3)在ceph.conf文件里配置时用空格分隔关键词,但在命令行使用的时候要用下划线或连字符(_或-)分隔,例如--> debug osd 变成 debug-osd。
2.17)viewing Configuration at Runtime:
2.17.1)如果你的ceph集群在运行,而你想看一个在运行进程的配置,用下面的命令:
ceph --admin-daemon /path/to/admin/socket config show | less
2.17.2)每个守护进程的管理套接字默认路径如下--> /var/run/ceph/$cluster-$name.asok
2.17.3)元变量将展开为实际的集群名和进程名,例如如果集群名是ceph(默认值),你可以用下面的命令检索osd.0的配置:
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less
2.18)ceph-Filestore-config:
2.18.1)扩展属性(XATTR)是配置里的重要方面。一些文件系统XATTR大小有限制,而且在一些情况下文件系统存储XATTR的速度
不如其他方法,下面的设置通过使用独立于文件系统的存储方法能帮你提升性能。详见p64
2.18.2)filestore需要周期性地静默写入、同步文件系统,这创建了一个提交点,然后就能释放相应的日志条目了。较大的同步频率
可减小执行同步的时间及保存在日志里的数据量;较小的频率使得后端的文件系统能优化归并较小的数据和元数据写入,因此可能使同步更有效。
2.18.3)文件存储回写器强制使用同步文件排列来写出大块数据,这样处理有望减小最终同步的代价。实践中,禁用 "filestore flusher"有时候能提升性能。
2.18.4)QUEUE-->可以设置文件存储队列的相关属性,详见p65
2.18.5)TIMEOUT-->可以设置关于线程超时值以及提交操作超时值。
2.18.6)btrfs相关配置
2.18.7)Journal相关配置
2.19)Journal-config:
2.19.1)ceph的OSD使用日志的原因有二:速度和一致性。
2.19.2)速度:日志允许OSD快速地提交小块数据的写入,ceph把小片、随机IO依次写入日志,这样,后端文件系统就有机会归并写入动作,并最终提升并发承载力。
因此,使用OSD日志能展现出优秀的瞬间写性能,实际上却没有任何写动作,因 为文件系统把它们捕捉到了日志。
2.19.3)一致性:ceph的OSD需要一个能保证原子操作的文件系统接口。OSD把一个操作的描述写入日志,然后把操作应用到文件系统,这需要原子更新一个对象
(例如归置组元数据)。每隔一段filestore max sync interval和filestore min sync interval之间的时间,OSD停止写入、把日志同步到文件系统,这样允许OSD
修整日志里的操作并重用空间。失败后,OSD从上次的同步点开始重放日志。详见p96
Ceph deployment:
1、你可以用很多其它部署系统(如Chef、Juju、Puppet、Crowbar)安装chef,如果你只想测试一下,ceph提供了最小化安装工具,它只依赖SSH和DNS。你得手动设置SSH和DNS。
2、提供了轻量级部署脚本供您评估ceph,专业的部署应该考虑用专业的部署系统,像Chef、Juju、Puppet、Crowbar。
3、要配置一个测试或开发集群,你可以用mkcephfs工具。
3.1)允许以root身份登录集群主机。详见p75
3.2)ceph的mkcephfs 脚本不会把管理主机上创建的配置文件拷贝到OSD主机,所以你得手动拷贝,例如:
ssh myserver01 sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
3.3)创建默认目录--> sudo mkdir /var/lib/ceph/mon/ceph-a
3.4)如果你在每台主机上都要运行多个OSD进程,应该先把这些硬盘分别挂载到其数据目录下。
4、运行mkcephfs:
4.1)cd /etc/ceph && sudo mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring(这个脚本把一个管理密钥添加到了ceph.keyring 里,它和root密码的功能类似)
4.2)启动或关闭集群时不必使用sudo或者提供密码--> service ceph -a start
Install chef:
1、chef定义了三种实体:
1.1)cheh节点:运行chef-client客户端,用来安装和管理软件
1.2)chef服务器:在chef节点上和chef-client交互
1.3)chef工作站:管理chef服务器
2、Create ceph user:
2.1)chef-client命令需要合适的特权才能安装和管理软件,他应该有所有 root 特权,例如:
ssh user@chef-node && sudo useradd -d /home/chef -m chef && sudo passwd chef
2.2)执行下面的命令给chef用户分配所有特权--> echo "chef ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/chef && sudo chmod 0440 /etc/sudoers.d/chef
2.3)如果你所用的sudo不能包含其它配置文件,你要把下面这行添加到/etc/sudoers--> chef ALL = (root) NOPASSWD:ALL
2.4)Important--> 不要更改/etc/sudoers的权限位,请用visudo或sudoedit编辑
2.5)为chef客户端生成ssh密钥,详见p78
2.6)chef依赖 Ruby,选择适合您当前发行版的Ruby版本并且安装到所有主机--> sudo apt-get update && sudo apt-get install ruby
2.7)chef服务器托管在Opscode,记录chef服务器的正式域名或IP地址,knife和chef-client要用到。详见p79
2.8)在chef服务器上安装Opscode密钥环、hef和chef服务器--> sudo apt-get update && sudo apt-get upgrade && sudo apt-get install opscode-keyring chef chefserver
2.9)安装器完成、启动chef服务器后,你可以在浏览器输入正式域名或者IP地址启动chef的WEB界面--> http://fqdn-or-ip-address.com:4000
2.10)配置knife:
2.10.1)chef服务器安装完后,要在chef工作站安装knife。如果chef服务器是远程主机,先ssh登录--> ssh chef@fqdn-or-ip-address.com
2.10.2)在/home/chef目录下创建隐藏目录--> mkdir -p ~/.chef
2.10.3)服务器会给chef服务器安装者生成认证和web UI证书,并设置合适的读写权限位,把它们 从/etc/chef拷贝到~/.chef,然后把所有者改为当前用户:
sudo cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef && sudo chown $(id -u):$(id -g) ~/.chef/*.pem
2.10.4)在当前用户的目录下,用一个初始化API客户端配置knife--> knife configure -i
*/???~skdkjzz
2.11)add a cookbook path:
2.11.1)在你的chef工作站上把cookbook_path添加到 ~/.chef/knife.rb 配置文件里,例如--> cookbook_path '/home/user-name/chef-cookbooks/'
2.11.2)路径不存在的话先创建--> mkdir /home/user-name/chef-cookbooks (本地副本位置,稍后上传到chef服务器)
2.11.3)把validation.pem拷贝到所有节点,把chef服务器上的/etc/chef/validation.pem文件拷贝到每个chef节点,在chef服务器上的命令行shell执行
下面的命令(用节点主机名替代nodename):
sudo cat /etc/chef/validation.pem | ssh nodename "exec sudo tee /etc/chef/validation.pem >/dev/null"
2.11.4)在每个节点运行chef-client,以注册到chef服务器--> ssh chef-node && sudo chef-client
2.11.5)检查下是否安装好了所有chef节点--> knife node list
ceph Deploying with chef;
1、To get the cookbooks for Ceph
cd ~/chef-cookbooks
git clone https://github.com/opscode-cookbooks/apache2.git
git clone https://github.com/ceph/ceph-cookbooks.git ceph
2、Add The Required Cookbook Paths:
2.1)如果你安装chef的时候添加了默认菜谱路径,knife无需过多配置就可以上传克隆的菜谱了。
2.2)如果你要使用另一个路径,或者克隆的菜谱仓库树结构不同,把路径添加到你的knife.rb文件里,cookbook_path可以是字符串或字符串阵列,例如:
cookbook_path '/home/user-name/chef-cookbooks/' --> change to:
cookbook_path [
'/home/user-name/chef-cookbooks/',
'/home/user-name/chef-cookbooks/another-directory/',
'/some/other/path/to/cookbooks/'
]
2.3)install cookbook_path:
2.3.1)要安装ceph,你必须把ceph和Apache菜谱(RADOSGW依赖)上传到chef服务器--> knife cookbook upload apache2 ceph
3、configure your ceph environment:
3.1)chef支持多种环境下的软件安装,你给ceph创建的环境需要一个fsid、监视器的密钥(如果启用了cephx认证)、监视器的短主机名。
3.2)至于文件系统ID,可以用uuid-runtime包里的uuidgen工具生成一个唯一的标识符--> uuidgen -r
3.3)用ceph-authtool为监视器生成密钥:
sudo apt-get update
sudo apt-get install ceph-common
ceph-authtool /dev/stdout --name=mon. --gen-key
Notes:
3.3.1)密钥是"key = "右边的值, 长相如下:
AQBAMuJPINJgFhAAziXIrLvTvAz4PRo5IK/Log==
3.4)要给ceph创建环境,先设置一个命令行编辑器,例如:
export EDITOR=vim
3.5)用knife创建环境:
knife environment create env-name :example--> knife environment create Ceph
4、configure roles:
4.1)分别用它们的角色文件给 OSD、监视器、元数据服务器、RADOS网关创建角色:
cd ~/chef-cookbooks/ceph
knife role from file roles/ceph-osd.rb
knife role from file roles/ceph-mon.rb
knife role from file roles/ceph-mds.rb
knife role from file roles/ceph-radosgw.rb
5、Configure Nodes:
5.1)每个规划到ceph集群里的节点都必需配置,用下面的命令标识节点--> knife node list
5.2)对规划的ceph集群的每个节点,都要用下面的命令配置--> knife node edit node-name
5.3)要配置的节点的配置信息应该出现在文本编辑器里,把chef_environment的值改为ceph(你给ceph环境设置的名字)
5.4)在所有节点的run_list里添加"recipe[ceph::apt]",这是第一个配置,这样chef就能安装或更新必要的软件包了。至少然后添加下面几行中的一个:
"role[ceph-mon]"
"role[ceph-osd]"
"role[ceph-mds]"
"role[ceph-radosgw]"
5.5)如果你添加的角色不止一个,要用逗号分隔。用hostname命令的结果替换配置里name的值hostname作为节点的主机名:
//alter by kj
"chef_environment": "Ceph",
"name": "hostname",
"normal":
"tags": [
]
,
"run_list": [
"recipe[ceph::apt]",
"role[ceph-mon]",
"role[ceph-mds]"
]
//end alter by kj
6、Prepare Osd Disks:
6.1)给一个节点配置了OSD角色意味着这个节点要运行至少一个OSD 进程,你可以在一台主机上运行很多OSD,例如,
你可以给系统里每个数据盘配置一个ceph-osd守护进程。这个步骤准备好OSD硬盘并且告诉chef这个节点将运行多少个OSD。
6.2)ceph版本是0.48时要安装gdisk--> sudo apt-get install gdisk
6.3)对ceph0.48版来说,用下面的命令配置每个OSD所用的存储数据硬盘,用uuidgen -r命令生成的UUID替fsid:
sudo sgdisk /dev/disk --zap-all --clear --mbrtogpt --largest-new=1 --change-name=1:'ceph data' --typecode=1:fsid
6.4)创建文件系统、然后把它分配给集群,执行ceph-disk-prepare的时候要指定一个文件系统(如 ext4、xfs或btrfs),记得用uuidgen -r生成的UUID替代fsid:
sudo mkfs -t ext4 /dev/disk
sudo mount -o user_xattr /dev/disk /mnt
sudo ceph-disk-prepare --cluster-uuid=fsid /mnt
sudo umount /mnt
6.5)最后,模拟一个热插拔事件--> sudo udevadm trigger --subsystem-match=block --action=add
6.6)完成前面的步骤后,必须在每个节点运行chef-client--> sudo chef-client
6.7)
Operated cluster:
高级操作:
高级集群操作主要包括用服务管理脚本启动、停止、重启集群、和集群健康状态检查、监控和操作集群。
1、ceph服务提供了启动、重启、停止ceph集群,每次执行的时候必须指定至少一个选项和一个命令,还必须指定一个守护进程类型或例程名称:
sudo service ceph [options] [commands] [daemons]
2、较老版本可以使用--> sudo /etc/init.d/ceph [options] [commands] [daemons]
3、ceph服务的选项包括:
Option Shortcut Description
--verbose -v Use verbose logging.
详细的日志。
--valgrind N/A (Dev and QA only) Use Valgrind debugging.
(只适用于开发者和品质保证人员)使用Valgrind调试。
--allhosts -a Execute on all hosts in ceph.conf. Otherwise, it only executes on localhost.
在ceph.conf里配置的所有主机上执行,否则它只在本机执行。
--restart N/A Automatically restart daemon if it core dumps.
核心转储后自动重启。
--norestart N/A Don’t restart a daemon if it core dumps.
核心转储后不自动重启。
--conf -c Use an alternate configuration file.
使用另外一个配置文件。
4、ceph服务的命令包括:
Command Description
start Start the daemon(s).
stop Stop the daemon(s).
forcestop Force the daemon(s) to stop. Same as kill -9
killall Kill all daemons of a particular type.
cleanlogs Cleans out the log directory.
cleanalllogs Cleans out everything in the log directory.
5、至于子系统操作,ceph服务能指定守护进程类型,在[daemons]处指定守护进程类型就行了,守护进程类型包括--> mon、osd、mds:
5.1)ceph服务的[daemons]设置也可以指定一个具体例程--> sudo /etc/init.d/ceph -a start osd.0 (这里osd.0是集群里的第一个OSD)
6、Starting A Cluster:
6.1)要启动ceph集群,执行ceph的时候加上start命令--> sudo service ceph start [options] [start|restart] [daemonType|daemonID]
较老的版本可以执行--> sudo /etc/init.d/ceph [options] [start|restart] [daemonType|daemonID]
6.2)典型用法:
sudo service ceph -a start
sudo /etc/init.d/ceph -a start
6.3)使用-a选项可操作整个集群,你也可以指定一个具体的守护进程例程把操作限制到一个单独的例程:
sudo /etc/init.d/ceph start osd.0
7、Stoping A Cluster:
7.1)要停止ceph集群可以在执行ceph时加上stop命令--> sudo service ceph [options] stop [daemonType|daemonID]
较老版本可以执行--> sudo /etc/init.d/ceph -a stop
较新版本直接执行--> sudo service ceph -a stop
8、Monitoring A Cluster:
集群运行起来后,你可以用ceph工具来监控,典型的监控包括检查OSD状态、监视器状态、归置组状态和元数据服务器状态
8.1)要在交互模式下运行ceph,不要带参数运行ceph:
ceph
ceph> health
ceph> status
ceph> quorum_status
ceph> mon_status
8.2)启动集群后、读写数据前,先检查下集群的健康状态--> ceph health
8.3)如果你的ceph.conf或密钥环不在默认路径下,你得指定--> ceph -c /path/to/conf -k /path/to/keyring health
8.4)集群起来的时候,你也许会碰到像HEALTH_WARN XXX num placement groups stale 这样的健康告警,等一会再检查下。
集群准备好的话ceph health会给出像HEALTH_OK一样的消息,这时候就可以开始使用集群了。
8.5)要观察集群内正发生的事件,打开一个新终端,然后输入--> ceph -w
ceph 会打印 每个归置组版本和它们 的状态, 例如一个包括 1 个监视器、 1 个元数据服务器和 2 个 OSD 的小型
ceph 集群可能会打印 下面的 :
health HEALTH_OK
monmap e1: 1 mons at a=192.168.0.1:6789/0, election epoch 0, quorum 0 a
osdmap e13: 2 osds: 2 up, 2 in
placement groupmap v9713: 384 placement groups: 384 active+clean; 8730 bytes data, 22948 MB used,
264 GB / 302 GB avail
mdsmap e4: 1/1/1 up 0=a=up:active
2012-08-01 11:33:53.831268 mon.0 [INF] placement groupmap v9712: 384 placement groups: 384
active+clean; 8730 bytes data, 22948 MB used, 264 GB / 302 GB avail
2012-08-01 11:35:31.904650 mon.0 [INF] placement groupmap v9713: 384 placement groups: 384
active+clean; 8730 bytes data, 22948 MB used, 264 GB / 302 GB avail
2012-08-01 11:35:53.903189 mon.0 [INF] placement groupmap v9714: 384 placement groups: 384
active+clean; 8730 bytes data, 22948 MB used, 264 GB / 302 GB avail
2012-08-01 11:37:31.865809 mon.0 [INF] placement groupmap v9715: 384 placement groups: 384
active+clean; 8730 bytes data, 22948 MB used, 264 GB / 302 GB avail
8.6)要检查集群的状态,执行下面的命令--> ceph status or ceph -s:
ceph 将打印 集群状态, 例如一个包括 1 个监视器、 1 个元数据服务器和 2 个 OSD 的小型 ceph 集群可能打印 :
health HEALTH_OK
monmap e1: 1 mons at a=192.168.0.1:6789/0, election epoch 0, quorum 0 a
osdmap e13: 2 osds: 2 up, 2 in
placement groupmap v9754: 384 placement groups: 384 active+clean; 8730 bytes data, 22948 MB used,
264 GB / 302 GB avail
mdsmap e4: 1/1/1 up 0=a=up:active
8.7)OSD 状态是集群内(in)或集群外(out)状态,而且是活着且在运行(up)或挂了且不在运行(down)。如果一个OSD活着它也可以是在集群内(你可以读写数据)
或者不在集群内;如果它挂了,它应该在集群外,如果它挂了且在集群内,肯定有问题。
8.7.1)你可以执行下列命令来确定OSD活着且在集群里--> ceph osd stat (or) ceph osd dump
8.7.2)你也可以根据OSD在CRUSH 图里的位置来查看--> ceph osd tree;
ceph 会打印 CRUSH 的树状态、 它 的 OSD 例程、状态、 权重:
# id weight type name up/down reweight
-1 3 pool default
-3 3 rack mainrack
-2 3 host osd-host
0 1 osd.0 up 1
1 1 osd.1 up 1
2 1 osd.2 up 1
8.8)如果你有多个监视器(很可能),你启动集群后、读写数据前应该检查监视器法定人数状态。多个监视器必须活着、且在运行,
要周期性检查监视器状态来确定它们在运行。
8.8.1)要查看监视器图,执行下面的命--> ceph mon stat (or) ceph mon dump
8.8.2)要检查监视器的法定人数状态,执行下面的命令--> ceph quorum_status:
//alter by kj
ceph 会返回 法定人数状态, 例如, 包含 3 个监视器的 ceph 集群可能返回 下面的 :
"election_epoch": 10,
"quorum": [
0,
1,
2],
"monmap": "epoch": 1,
"fsid": "444b489c-4f16-4b75-83f0-cb8097468898",
"modified": "2011-12-12 13:28:27.505520",
"created": "2011-12-12 13:28:27.505520",
"mons": [
"rank": 0,
"name": "a",
"addr": "127.0.0.1:6789\\/0",
"rank": 1,
"name": "b",
"addr": "127.0.0.1:6790\\/0",
"rank": 2,
"name": "c",
"addr": "127.0.0.1:6791\\/0"
]
//end alter by kj
8.9)元数据服务器为ceph文件系统提供元数据服务,元数据服务器有两种状态:up|down 和 活跃| 不活跃,执行下面的命令来确保元数据服务器活着且活跃:
ceph mds stat,要展示元数据集群的详细状态,执行下面的命令--> ceph mds dump
8.10)归置组把对象映射到OSD,归置组的状态应该是活跃且未污染的,其它的PG状态请参见(Placement Group States)
/*******************/
Time:2014-11-11
Author:skdkjzz
/******************/
Profile Ceph of Cpu Usage:
1、你首次使用oprofile的时候要初始化,找到对应于当前运行内核的vmlinux位置:
ls /boot
sudo opcontrol --init
sudo opcontrol --setup --vmlinux=path-to-image --separate=library --callgraph=6
2、执行下面的命令启动opeofile--> opcontrol --start
3、执行下面的命令停止oprofile--> opcontrol --stop
4、要查看cmon最近的结果,执行下面的命令--> opreport -gal ./cmon | less
5、要检索cmon最近的调用图结果,执行下面的命令--> opreport -cal ./cmon | less
6、回顾结果后,重新剖析前应该先重置,重置动作从会话目录里删除了数据。
7、要重置oprofile,执行下面的命令--> sudo opcontrol --reset(你应该分析后再重置,以免混合不同的剖析结果。)
Resolve daemon operations issues: 以上是关于ceph学习笔记和基础知识的主要内容,如果未能解决你的问题,请参考以下文章
1、ceph-osd挂的时候,监视器将了解ceph-osd的存活情况,且通过ceph health命令报告:
ceph health
HEALTH_WARN 1/3 in osds are down
2、有ceph-osd进程标记为in且down的时候,你会得到警告,你可以用下面的命令得知哪个ceph-osd进程挂了:
ceph health detail
HEALTH_WARN 1/3 in osds are down
osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
3、一般情况下,简单地重启ceph-osd进程可使之重新加入集群并且恢复,如果有个硬盘失败或其它错误使ceph-osd不能正常运行或重启,
一条错误信息将会出现在日志文件/var/log/ceph/里。
4、如果守护进程因心跳失败、或者底层文件系统无响应而停止,查看dmesg获取硬盘或者内核错误。
5、如果集群填满了,监视器将阻止新数据写入,系统会把ceph-osd分为两类:快满了和满了,它们都有可配置的阀值(默认分别是80%和90%),
满了的ceph-osd会被ceph health报告:
ceph health
HEALTH_WARN 1 nearfull osds
osd.2 is near full at 85%
(or)
ceph health
HEALTH_ERR 1 nearfull osds, 1 full osds
osd.2 is near full at 85%
osd.3 is full at 97%
Resolve:
5.1)处理这种情况的最好方法就是增加新的ceph-osd,这允许集群把数据重分布到新OSD里。
6、拥有归置组拷贝的OSD都可以失败,在这种情况下,那一部分的对象存储不可用,监视器就不会收到那些归置组的状态更新了。为检测这种情况,
监视器把任何主OSD失败的归置