osd存储盘
Ⅰ 对象存储系统的对象存储系统组成
对象(Object)
包含了文件数据以及相关的属性信息,可以进行自我管理
OSD(Object-based Storage Device)
一个智能设备,是Object的集合
文件系统
文件系统运行在客户端上,将应用程序的文件系统请求传输到MDS和OSD上
元数据服务器(Metadata Server,MDS)
系统提供元数据、Cache一致性等服务
网络连接
1. 对象(Object)
对象存储的基本单元。每个Object是数据和数据属性集的综合体。数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。在传统的存储中,块设备要记录每个存储数据块在设备上的位置。Object维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。Object的大小可以不同,可以包含整个数据结构,如文件、数据库表项等。
2、OSD(Object-based Storage Device)
每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。
OSD的主要功能
数据存储和安全访问
OSD使用Object对所保存的数据进行管理。它将数据存放到磁盘的磁道和扇区,将若干磁道和扇区组合起来构成Object,并且通过此Object向外界提供对数据的访问。每个Object同传统的文件相似,使用同文件类似的访问接口,包括Open、Read、Write等。但是两者并不相同,每个Object可能包括若干个文件,也可能是某个文件的一部分,且是独立于操作系统的。除了具体的用户数据外,OSD还记录了每个Object的属性信息,主要是物理视图信息。将这些信息放到OSD上,大大减轻了元数据服务器的负担,增强了整个存储系统的并行访问性能和可扩展性。
3、文件系统
文件系统对用户的文件操作进行解释,并在元数据服务器和OSD间通信,完成所请求的操作。
现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,对象存储系统提供给用户的也是标准的POSIX文件访问接口。
接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。
同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致
文件系统读访问实例:
客户端应用发出读请求;
文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD;
然后直接向每个OSD发送数据读取请求;
OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端进行认证,如果此客户端得到授权,则将Object的数据返回给客户端;
文件系统收到OSD返回的数据以后,读操作完成。
4.元数据服务器 (Metadata Server)
为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的OSD等。
在传统的文件系统中,元数据由本机或者文件服务器负责维护,每次对数据块的操作都要获取元数据。
在对象存储系统中,由于每次操作只有一次对元数据的访问,具体的数据传输都由OSD和客户端通过直接连接进行,大大减少了元数据的操作,降低了元数据服务器的负担,从而为系统的扩展提供了可能性。
特点
客户端采用Cache来缓存数据
当多个客户端同时访问某些数据时,MDS提供分布的锁机制来确保Cache的一致性。
5. 网络连接
为客户端提供认证
为了增强系统的安全性,MDS为客户端提供认证方式。OSD将依据MDS的认证来决定是否为客户端提供服务。
网络连接是对象存储系统的重要组成部分。它将客户端、MDS和OSD连接起来,构成了一个完整的系统。
Ⅱ 分布式存储支持多节点,节点是什么,一个磁盘还是一个主控
节点是什么?
节点是存储节点的简称,一般来说1个节点是1个存储服务器。
其中一个存储节点坏了是否影响数据的访问?
这个主要取决于你采取的数据保护措施,主要有以下几种:
多副本:同一份数据会保存多份(通常设置为 2 副本或 3 副本),即使副本所在的节点宕机也不会造成数据丢失;
HA(高可用):节点宕机时,该节点上的虚拟机自动迁移至集群内其它节点,降低业务中断时间;
机架感知:根据机房物理拓扑结构,将副本分配在不同的机架、机箱、主机上,有效减少甚至避免物理硬件(电源、交换机等)故障导致的数据丢失。理论上,3 副本结合机架感知配置,系统可最多容忍 2 个机架上的主机全部失效;
快照:为虚拟机打快照,在其发生故障时将数据恢复至快照状态;
双活:同城双数据中心,灾难时无损快速恢复业务(RPO=0);
备份:异地主备数据中心,灾难时尽可能挽回数据损失。
Ⅲ 数据存储的三种方式
数据存储的三种方式分别是:内存存储、硬盘存储和闪信芦存存储。
内存存储:内存存储是计算机中一种临时性的数据存储方式,其数据存储速度较快,但是存储容量比较有限。内存存储器通常被用来存储正在使用的程序和数据。
硬盘存储:硬盘存储是计算机中一种永久性的数据存储方式,其数据存储速度相对较慢,但是存储容量比较大。硬盘存储器通常被用来存储操作系统、应用程序、文档、图片、音频和视频等大容量数据。
闪存存储:闪存存储是一种固态存储器,其数据存储速度相对较快,而且存储容量较大。闪存存储器通常被用来制作U盘、存储卡等移动设备。
双字宽存储州坦厅器是一种计算机存储器的类型,其存储单元的宽度是16个二进制位(即2个字节),因此可以一次性存储两个字册隐节的数据,称为“双字宽存储器”。双字宽存储器在计算机中的应用较广泛,可以提高数据存储和访问的效率。
Ⅳ ceph分布式存储-常见 PG 故障处理
创建一个新集群后,PG 的状态一直处于 active , active + remapped 或 active + degraded 状态, 而无法达到 active + clean 状态 ,那很可能是你的配置有问题。
你可穗亮能需要检查下集群中有关 Pool 、 PG 和 CRUSH 的配置项,做以适当的调整。
一般来说,你的集群中需要多于 1 个 OSD,并且存储池的 size 要大于 1 副本。
有时候,我们需要搭建一个单节点的 Ceph 实验环境。此时,在开始创建 monitor 和 OSD 之前,你需要把 Ceph 配置文件中的 osd crush chooseleaf type 选项从默认值 1 (表示 host 或 node )修改为 0 (表示 osd )。这样做是告诉 Ceph 允许把数据的不同副老族漏本分布到同一 host 的 OSDs 上。
如果你已经启动了 2 个 OSD,它们都处于 up 和 in 的状态,但 PG 仍未达到 active + clean 状态,那可能是给 osd pool default size 设置了一个大于 2 的值。
如果你想要在 active + degraded 状态( 2 副本)操作你的集群,可以设置 osd pool default min size 为 2 ,这样你就可以对处于 active + degraded 的对象写入数据。然后你还可以把 osd pool default size 的值改为 2 ,这样集群就可以达到 active + clean 状态了。
另外,修改参数 osd pool default size/min_size 后,只会对后面新建的 pool 起作用。如果想修改已存在的 pool 的 size/min_size ,可用下面的命令:
注意: 你可以在运行时修改参数值。如果是在 Ceph 配置文件中进行的修改,你可能需要重启集群。
如果你设置了 osd pool default size 的值为 1 ,那你就仅有对象的单份拷贝。OSD 依赖于其他 OSD 告诉自己应该保存哪些对象。如果第一个 OSD 持有对象的拷贝,并且没有第二份拷贝,那么也就没有第二个 OSD 去告诉第一个 OSD 它应该保管那份拷贝。对于每一个映射到第一个 OSD 上的 PG (参考 ceph pg mp 的输出),你可以强制第一个 OSD 关注它应该保存的 PGs :
PG 达不到 clean 状态的另一个可能的原因就是集群的 CRUSH Map 有错误,导致 PG 不能映射到正确的地方。
有失败发生后,PG 会进入“degraded”(降级)或“peering”(连接建立中)状态,这种情况时有发生。通常这些状态意味着正常的失败恢复正在进行。然而,如果一个 PG 长时间处于这些状态中的某个,就意味着有更大的问题。因此 monitor 在 PG 卡 ( stuck ) 在非最优状态时会告警。我们具体检查:
你可以用下列命令显式地列出卡住的 PGs:
卡在 stale 状态的 PG 通过重启 ceph-osd 进程通常可以修复;卡在 inactive 状态的 PG 通常是互联问题(参见 PG 挂了 —— 互联失败 );卡在 unclean 状态的 PG 通常是由于某些原因阻止了恢复的完成,像未找到的对象(参见 未找到的对象 )。
在某些情况下, ceph-osd 互联 进程会遇到问题,阻值 PG 达到活跃、可用的状态。例如, ceph health 也许显示:
可以查询到 PG 为何被标记为 down :
recovery_state 段告诉我们互联过程因 ceph-osd 进程挂了而被阻塞,本例是 osd.1 挂了,启动这个进程应该就可以恢复。
或者,如果 osd.1 发生了灾难性的失败(如硬盘损坏),我们可侍烂以告诉集群它丢失( lost )了,让集群尽力完成副本拷贝。
重要: 集群不能保证其它数据副本是一致且最新的,就会很危险!
让 Ceph 无论如何都继续:
恢复将继续进行。
某几种失败相组合,可能导致 Ceph 抱怨有找不到( unfound )的对象:
这意味着存储集群知道一些对象(或者存在对象的较新副本)存在,却没有找到它们的副本。下例展示了这种情况是如何发生的,一个 PG 的数据存储在 ceph-osd 1 和 2 上:
这时, 1 知道这些对象存在,但是活着的 ceph-osd 都没有这些副本。这种情况下,读写这些对象的 IO 就会被阻塞,集群只能指望 down 掉的节点尽早恢复。这样处理是假设比直接给用户返回一个 IO 错误要好一些。
首先,你应该确认哪些对象找不到了:
如果在一次查询里列出的对象太多, more 这个字段将为 true ,你就可以查询更多。
其次,你可以找出哪些 OSD 上探测到、或可能包含数据:
本例中,集群知道 osd.1 可能有数据,但它挂了( down )。所有可能的状态有:
有时候集群要花一些时间来查询可能的位置。
还有一种可能性,对象存在于其它位置却未被列出。例如,集群里的一个 ceph-osd 停止且被剔出集群,然后集群完全恢复了;后来一系列的失败导致了未找到的对象,它也不会觉得早已死亡的 ceph-osd 上仍可能包含这些对象。(这种情况几乎不太可能发生)。
如果所有可能的位置都查询过了但仍有对象丢失,那就得放弃丢失的对象了。这仍可能是罕见的失败组合导致的,集群在写操作恢复后,未能得知写入是否已执行。以下命令把未找到的( unfound )对象标记为丢失( lost )。
上述最后一个参数告诉集群应如何处理丢失的对象。
拥有 PG 拷贝的 OSD 可能会全部失败,这种情况下,那一部分的对象存储不可用, monitor 也就不会收到那些 PG 的状态更新了。为检测这种情况,monitor 会把任何主 OSD 失败的 PG 标记为 stale (不新鲜),例如:
可以找出哪些 PG 是 stale 状态,和存储这些归置组的最新 OSD ,命令如下:
如果想使 PG 2.5 重新上线,例如,上面的输出告诉我们它最后由 osd.0 和 osd.2 管理,重启这些 ceph-osd 将恢复之(可以假定还有其它的很多 PG 也会进行恢复 )。
如果你的集群有很多节点,但只有其中几个接收数据, 检查 下存储池里的 PG 数量。因为 PG 是映射到多个 OSD 的,较少的 PG 将不能均衡地分布于整个集群。试着创建个新存储池,设置 PG 数量是 OSD 数量的若干倍。更详细的信息可以参考 Ceph 官方文档 —— Placement Groups 。
如果你的集群已启动,但一些 OSD 没起来,导致不能写入数据,确认下运行的 OSD 数量满足 PG 要求的最低 OSD 数。如果不能满足, Ceph 就不会允许你写入数据,因为 Ceph 不能保证复制能如愿进行。这个最低 OSD 个数是由参数 osd pool default min size 限定的。
如果收到 active + clean + inconsistent 这样的状态,很可能是由于在对 PG 做擦洗( scrubbing )时发生了错误。如果是由于磁盘错误导致的不一致,请检查磁盘,如果磁盘有损坏,可能需要将这个磁盘对应的 OSD 踢出集群,然后进行更换。生产环境中遇到过不一致的问题,就是由于磁盘坏道导致的。
当集群中出现 PG 不一致的问题时,执行 ceph -s 命令会出现下面的信息:
1、查找处于 inconsistent 状态的问题 PG :
这个有问题的 PG 分布在 osd.1 、 osd.2 和 osd.0 上,其中 osd.1 是主 OSD。
2、去主 OSD( osd.1 )的日志中查找不一致的具体对象 。
从日志中可以知道,是 rbd_data.1349f035c101d9.0000000000000001 这个对象的属性 _ 丢失了,所以在 scrub 的过程中产生了 error 。
3、执行 ceph pg repair 命令修复问题 PG 。
4、检查 Ceph 集群是否恢复到 HEALTH_OK 状态。
osd.1 的日志里也提示修复成功:
如果经过前面的步骤,Ceph 仍没有达到 HEALTH_OK 状态,可以尝试用下面这种方式进行修复。
1、停掉不一致的 object 所属的 osd 。
2、刷新该 osd 的日志。
3、将不一致的 object 移除。
4、重新启动该 osd 。
5、重新执行修复命令。
6、检查 Ceph 集群是否恢复到 HEALTH_OK 状态。
有时候,我们在 ceph -s 的输出中可以看到如下的告警信息:
这是因为集群 OSD 数量较少,测试过程中建立了多个存储池,每个存储池都要建立一些 PGs 。而目前 Ceph 配置的默认值是每 OSD 上最多有 300 个 PGs 。在测试环境中,为了快速解决这个问题,可以调大集群的关于此选项的告警阀值。方法如下:
在 monitor 节点的 ceph.conf 配置文件中添加:
然后重启 monitor 进程。
或者直接用 tell 命令在运行时更改参数的值而不用重启服务:
而另一种情况, too few PGs per OSD (16 < min 20) 这样的告警信息则往往出现在集群刚刚建立起来,除了默认的 rbd 存储池,还没建立自己的存储池,再加上 OSD 个数较多,就会出现这个提示信息。这通常不是什么问题,也无需修改配置项,在建立了自己的存储池后,这个告警信息就会消失。
Ⅳ 描述对象存储,与文件存储,块存储的区别
描述对象存储,与文件存储,块存储的区别, MaxLeap数据存储和文件存储的区别?
先说说块存储吧,典型代表--SAN。对于用户来说,SAN好比是一块大磁盘,用户可以根据需要随意将SAN格式化成想要的文件系统来使用。SAN在网络中通过iSCSI(IPSAN)协议连接,属block及存储,但可扩展性较差。
再说说文件集存储,典型代表--NAS。对于用户来说,NAS好比是一个共享文件夹,文件系统已经存在,用户可以直接将自己的数据存放在NAS上。NAS以文件为传输协议,开销很大,不利于在高性能集群中使用。
而所谓对象存储,就是每个数据对应着一个唯一的id,在面向对象存储中,不再有类似文件系统的目录层级结构,完全扁平化存储,即可以根据对象的id直接定位到数据的位置,这一点类似SAN,而每个数据对象即包含元数据又包括存储数据,含有文件的概念,这一点类似NAS。除此之外,用户不必关系数据对象的安全性,数据恢复,自动负载平衡等等问题,这些均由对象存储系统自身完成。而且,面向对象存储还解决了SAN面临的有限扩充和NAS传输性能开销大问题,能够实现海量数据存储。
块储存,对象存储,文件存储的区别和联系
通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。
1. 块存储:DAS SAN
a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。
应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。
b) SAN(Storage Area Neork): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。
2. 文件存储
通常NAS产品都是文件级存储。
NAS(Neork Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。
它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
3. 对象存储:
总体上讲,对象存储同时兼具SAN高级直接访问磁盘特点及NAS的分布式共享特点。
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。
对象储存结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)
3.1 对象
一个对象实际就是文件的数据和一组属性信息的组合。
3.2 对象存储设备(OSD)
OSD具有一定的智能,它有自己的CPU、内存、网络和磁盘系统。
OSD提供三个主要功能:包括数据存储和安全访问
(1)数据存储 (2)智能分布 (3)每个对象元数据的管理
3.3 元数据服务器(Metadata Server , MDS)
MDS控制Client与OSD对象的交互,主要提供以下几个功能:
(1) 对象存储访问
允许Client直接访问对象,OSD接收到请求时先验证该能力,再访问。
(2) 文件和目录访问管理
MDS在存储系统上构建一个文件结构,限额控制、包括目录、文件的创建、访问控制等
(3) Client Cache 一致性
为提高性能,在对象存储系统设计时通常支持Client的Cache。因此带来了Cache一致性的问题,当Cache文件发生改变时,将通知Client刷新Cache,以防Cache不一致引发的问题。
对象存储:
一个文件包含了属性(术语叫matadata元数据,例如该文件的大小、修改时间、存储路径等)以及内容(简称数据)。
以往的文件系统,存储过程将文件按文件系统的最小块来打散,再写进硬盘,过程中没有区分元数据(metadata)和数据。而在每个块最后才会告知下一个块的地址,因此只能一个一个读,速度慢。
而对象存储则将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象时,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD。假设反馈文件A存储在B,C,D三台OSD,那么用户就会再次访问三台OSD服务器去读取数据。
这时三台OSD同时对外传输数据,因此传输的速度就加快了。OSD服务器数量越多,这种读写速度的提升就越大。
另一方面,对象存储软件有专门的文件系统,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。
因此对象存储的出现,很好的结合了块存储与文件存储的优点。
为什么还要使用块存储和文件存储:
1.有一类应用是需要存储直接裸盘映射的,比如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。
2.对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。
有对象存储了为什么还要有文件存储和块存储?
目前而言,三种存储方式不能说谁更好,针对场景不同,不同存储能发挥的功效也不同。对象存储主要运用在文件归档,云服务,备份,视频应用等;块存储主要应用在数据库、中间件、云桌面等;文件存储主要应用在文件共享,影视非编等。元核云三种存储方式都支持,可以进行自由选择。
有块 存储 文件存储 为什么 还要 对象存储
块存储是传统存储模式,对象存储是新提出的概念,比传统存储更具优势。
描述NFS存储与iSCSI存储的区别
先说说块存储吧,典型代表--SAN。对于用户来说,SAN好比是一块大磁盘,用户可以根据需要随意将SAN格式化成想要的文件系统来使用。SAN在网络中通过iSCSI(IPSAN)协议连接,属block及存储,但可扩展性较差。 再说说文件集存储,典型代表--NAS。
集群NAS和对象存储的区别
如果是集群NAS用的硬盘大都是Serial Attached SCSI 就是SAS,当然SATA也是可以的,SATA廉价!你的数据是如果非结构的可以用NAS,如果是结构化的数据那就是用对象存储吧!好好看一看块访问、对象访问和文件访问吧!
对象存储oss和redis的区别
为了支持云服务,MySQL的备份做了极大地改进,比如Global Transaction Identifiers (GTIDs). GTIDs可以轻松地跟踪和比较master和slave服务器之间的进度状态。
在2013年4月,Oracle发布了针对Hadoop的MySQL Applier。Nokia首先将MySQL应用于大数据环境中,包括集中的Hadoop集群等等。
ps中的文件存储和文件存储为?
如果你打开的JPG图片只是单纯的调色,没有添加图层的话 你点存储 是直接就存储了的,如果你添加图层或者文字层的话,就只能用存储为了。 存储只能存储为打开文件的格式,一旦你添加图层了,就必须变成PSD格式,或者存储为JPG了
a *** 裸设备和文件存储的区别
1. unix/linux ls -al|grep db2
2. 如果从 lv 的名字上看不出来…… 就连上数据库,然后看表空间容器
Ⅵ ceph闂棰樿В鍐宠繍缁磋板綍
1銆佸备綍瀵煎嚭瀵煎叆osdmap
1.1鍏埚仠鎺夊潖镄刼sd,浠ュ强涓涓濂界殑osd(锲犱负ceph-objectstore-tool镓ц屾椂闇瑕佸仠姝osd),铹跺悗镓ц屽煎嚭瀵煎叆鍗冲彲
锻戒护渚嫔瓙锛氩叾涓84鏄濂界殑osd,85鏄链夐梾棰樼殑osd
ceph-objectstore-tool --op get-osdmap --epoch 145039 --data-path /data1/ceph-osd/ --journal-path /var/log/ceph/ceph-84/journal --type filestore --file osdmap145039
ceph-objectstore-tool --op set-osdmap --epoch 145039 --data-path /data2/ceph-osd/ --journal-path /var/log/ceph/ceph-85/journal --type filestore --file osdmap145039
PS锛氩叾涓145039涓哄瑰簲镄勭増链鍙凤纴data-path涓巎ournal-path濉鍐栾嚜宸眔sd瀵瑰簲镄勮矾寰
2銆佹垒鍒版g‘镄别poch鐗堟湰
杩欎釜瑕侀氲繃鎶ラ敊镄刼sd镞ュ织镆ョ湅锛屽湪钖锷ㄧ殑镞跺欙纴osd浼氩姞杞戒竴涓猠poch鐗堟湰A锛岃繖涓鐗堟湰鏄瀹冩e湪镓ц岀殑锛岀己灏戠殑epoch鐗堟湰鍦ㄥ畠涔嫔墠銆傜劧钖庡湪 mp of recent events涓鍙戠幇宸茬粡镓ц岀殑epoch鐗堟湰B,浠ュ强ecoch鐗堟湰C銆傚皢鍦╩ax(B,C)鍒痨涔嬮棿镄勭増链閮藉煎叆涓阆嶏纸涔熷彲浠ュ煎叆涓涓鐗堟湰锛屽惎锷ㄤ竴娆¤傚疗锛屽氨鏄澶楹荤储浜嗭级銆傛垜镞ュ织涓瑼=145068,B=145011锛孋=145012,镓浠ユ垜鎶145013鍒145067涔嬮棿镓链夌殑ecoph鐗堟湰閮藉煎叆杩涘幓浜嗭纴缁撴灉姝e父钖锷ㄤ简銆傛垜镄勬棩蹇楀叆涓嫔浘
1銆佷骇鐢熷师锲 锛
2涓猳sd涔嬮棿镄刼sdmap鐗堟湰濡傛灉鐩稿樊杩囧ぇ(鐩稿樊鍙鑳藉湪50宸﹀彸)锛屼细瀵艰嚧2涓猳sd阃氲镄勬椂鍊欐姤wrong node銆傚傛灉锅跺皵鍑虹幇涓娆wrong node锛岄偅涔堥梾棰树笉澶э纴锲犱负osd镆愪釜镎崭綔鍗′富浜嗭纴铹跺悗鎭㈠嶈幏鍙栦简链鏂扮増链镄刼sdmap銆傚傛灉osd镞ュ织涓鐩村湪鎶ワ纴璇存槑链塷sd钖屾osdmap鍑虹幇闂棰桡纴浼氩艰嚧osd down鎺夛纴蹇冭烦瓒呮椂锛埚彲鑳斤级锛岀敋镊冲嚭鐜皁sd澶ч噺钖冨唴瀛桡纴瀵艰嚧链嶅姟鍣ㄦ寕鎺夈傛棩蹇楀备笅锛
2銆佹煡鐪媜sd镄刼sdmap鐗堟湰
阃氲繃锻戒护镆ョ湅锛歝eph daemon osd.xx status 钬斺撺x镙囱板瑰簲镄刼sd缂栧彿
锻戒护缁撴灉渚嫔瓙锛
{
"cluster_fsid": "df181181-2154-4816-a2b7-d6eae79980fb",
"osd_fsid": "d5edacd3-cee7-45eb-90df-e381d8684dfb",
"whoami": 15,
"state": "active",
"oldest_map": 92570,
"newest_map": 158146,
"num_pgs": 2105
}
鍏朵腑newest_map琛ㄧずosd镄勬渶鏂扮増链鍙
3銆佹煡鐪嬮泦缇ょ殑osdmap鐗堟湰鍙
锻戒护锛歝eph -s
杩欓噷锛178170镞舵渶鏂扮増链鍙
4銆佺‘瀹歰sd鐗堟湰鏄钖︽湁闂棰
澶氭¢棿闅旀墽琛屽懡浠ceph daemon osd.xx status 镆ョ湅osd鐗堟湰鍙凤纴姝g‘鐘舵佸备笅锛
4.1銆佹煡璇㈠嚭𨱒ョ殑鐗堟湰鍙蜂竴鐩翠缭鎸佽窡闆嗙兢鐗堟湰鍙蜂竴镊
4.2銆佸皬浜庨泦缇ょ増链鍙凤纴浣嗘槸鍦ㄤ笉锅滃炲ぇ锛屾渶缁堜细杈惧埌闆嗙兢鐗堟湰鍙
5銆佸嚭鐜皁sd涓嶆洿鏂皁sdmap瑙e喅锷炴硶
鍒扮洰鍓崭负姝锛屾垜娌℃湁镓惧埌osd涓嶆洿鏂皁sdmap镄勬牴链铡熷洜锛屾垜浣跨敤杩啴eph daemon osd.xx mp_blocked_ops 镆ョ湅鏄钖︽湁阒诲炵殑镎崭綔骞惰В鍐抽樆濉烇纴浣嗘槸渚濈劧涓嶈岋纴鍗充娇杩斿洖娌℃湁阒诲烇纴杩樻槸涓嶆洿鏂般傚彲鑳藉彲浠ヨ﹐sd閲嶆柊镟存柊镄勬柟寮忥细
1銆佸皢瀵瑰簲镄刼sd out鍑洪泦缇わ纸osd杩樻槸up镄勶级锛岃繃涓阒佃傚疗涓涓嬬増链鍙凤纸鎴戠殑灏辨槸杩欐牱锲炲岖殑锛
2銆侀吨钖痮sd
1銆侀梾棰樻棩蹇
2銆佽В鍐虫柟寮忥细
1銆佹镆ユ湇锷″櫒镞堕棿鏄钖︿竴镊
2銆佹镆ラ泦缇や腑镄刱eyring涓庢湰鍦皁sd镄刱eyring鏄钖︿竴镊:
浣跨敤锻戒护锛
ceph auth list浠巑on涓銮峰彇镓链塷sd镄刱eyring,
cat /var/lib/ceph/osd/ceph-xx/keyring銮峰彇链鍦皁sd镄刱eyring
3銆佸幓鎺夐獙璇 锛岄吨钖镓链夌殑mon銆乷sd锛屼慨鏀筩eph.conf涓镄勫备笅鍙傛暟涓
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
1銆侀梾棰樻棩蹇
2銆佽В鍐虫柟寮
1銆佹煡鐪嬫湇锷″櫒镞堕棿涓庢湇锷″櫒缃戠粶锛堟垜镄勪笉鏄杩欎釜闂棰桡级
2銆佷竴鑸蹇冭烦瓒呮椂鏄鍏朵粬闂棰桦紩璧风殑锛岃繖閲屽彲浠ュ厛璋冨ぇ蹇冭烦瓒呮椂镞堕棿锛堟垜璋冨ぇ浜嗗绩璺宠秴镞讹纴瑙e喅浜嗗叾浠栭梾棰树箣钖庯纴灏辨病链夊绩璺宠秴镞朵简锛夛纴淇鏀归厤钖堟枃浠禼eph.conf镄勫弬鏁
mon_osd_report_timeout = 1800
filestore_op_thread_suicide_timeout = 1800
filestore_op_thread_timeout = 600
osd_heartbeat_grace = 600
osd_op_thread_suicide_timeout=1800
osd_op_thread_timeout=36000
杩欎釜閰岖疆鍙浠ュ厛鏀惧埌[global]锛岀瓑瑙e喅浜嗛梾棰桡纴鍦ㄥ幓鎺夛纴涔熷彲浠ユ牴鎹瀹为檯𨱍呭喌锛岃嚜宸辫皟鏁村弬鏁
1.镆ョ湅镞ュ织镆ョ湅osd鍗″湪鍝閲
镞ュ织璋冩暣绾у埆锛氢慨鏀归厤缃鏂囦欢ceph.conf鍙傛暟锛屾坊锷燿ebug_osd=10锛15/20锛夛纴鏁板艰秺楂桡纴镓揿嵃瓒婂氥傚傛灉宸茬粡钖锷╫sd,𨱍虫洿鏀规棩蹇楃骇鍒锛屽彲浠ラ氲繃锻戒护锛歝eph tell osd.xx injectargs --debug-osd 5
2銆佹牴鎹镞ュ织淇℃伅瑙e喅闂棰
鎴戞槸鍗″湪浜唋oad_pgs涓婏纴锲犱负鏁翠釜闆嗙兢鐘舵佷笉瀵癸纴钥宲g鏁伴噺鍙埚緢澶氾纴锷犺浇寰堟参锛岃繖镞跺欓渶瑕佽冭槛链嶅姟鍣ㄥ帇锷涳纴鍙浠ヤ竴涓涓涓鎱㈡参钖锷锛屼笉瑕佷竴涓嫔瓙钖锷ㄥ畬銆
1銆侀梾棰桦师锲
incomplete鐘舵佽〃绀猴细Peering杩囩▼涓鐢变簬镞犳硶阃夊嚭𨱒冨▉镞ュ织鎴栬呴氲繃choos_acting阃夊嚭镄刟cting涓嶈冻浠ュ畬鎴愭暟鎹鎭㈠嶏纴锛堜緥濡傞拡瀵圭籂鍒犵爜锛屽瓨娲荤殑鍓链鏁板皬浜巏鍊硷级绛夛纴瀵艰嚧Peering镞犳硶姝e父瀹屾垚銆傚嵆pg鍏冩暟鎹涓㈠け锛屾棤娉曟仮澶峱g鐘舵
2銆佽В鍐抽梾棰
1銆佷娇鐢╟eph-objectstore-tool宸ュ叿灏唅ncomplete鐘舵佺殑pg镙囱颁负complete
2銆佹搷浣沧ラわ细
镎崭綔鍓嶆彁锛氲剧疆闆嗙兢flag:noout nodown noup noin PS锛氲繖閲岀殑鐩镄勬槸涓轰简涓嶈﹑g鍒嗗竷鍙桦寲锛屾垜锲犱负osd閮借捣𨱒ヤ简锛屽彧璁剧疆浜唍oout nodown
绗涓姝ワ细阃氲繃锻戒护ceph pg mp_stuck |grepincomplete >incomplete.txt 浠庨泦缇や腑瀵煎嚭incomplete鐘舵佺殑镓链塸g
绗浜屾ワ细阃氲繃绗涓姝ョ煡阆扑简pg镓鍦ㄧ殑2涓猳sd鍦ㄥ摢閲岋纴stop杩2涓猳sd
绗涓夋ワ细瀵硅繖2涓猳sd涓婄殑pg阃氲繃锻戒护锅氭爣璁帮纴锻戒护濡备笅
ceph-objectstore-tool --data-path /data4/ceph-osd/ --journal-path /var/log/ceph/ceph-15/journal --type filestore --pgid 9.ea8 --op mark-complete
ceph-objectstore-tool --data-path /data8/ceph-osd/ --journal-path /var/log/ceph/ceph-91/journal --type filestore --pgid 9.ea8 --op mark-complete
绗锲涙ワ细钖锷ㄨ繖2涓猳sd(钖锷ㄩ‘搴忔病链夊叧绯)
绗浜旀ワ细瑙傚疗闆嗙兢涓璱ncomplete鏄钖﹀皯浜
绗鍏姝ワ细閲嶅岖浜屾ヤ互鍙娄箣钖庣殑镎崭綔锛岀洿鍒癷ncomplete娌℃湁
3銆佺壒鍒璇存槑
3.1銆佹爣璁瘫omplete镄勮繃绋嬶纴鍙鑳界粰瀵艰嚧闆嗙兢degraded銆乵isplaced澧炲姞锛岃繖鏄姝e父镄
3.2銆佸师锲狅细锲犱负鎴戝湪镙囱扮殑杩囩▼涓锛岀己灏戜简瀵煎叆瀵煎嚭pg姝ラゃ傛垜杩欓噷娌℃搷浣滃煎叆瀵煎嚭鏄锲犱负pg鏁伴噺链夌偣澶氾纴钥屼笖pg姣旇缉澶э纴瀵煎叆瀵煎嚭浼氲2涓猳sd锅滃お涔呬简锛岃屼笖鎴戣夊缑璁╅泦缇よ嚜宸辨仮澶嶆瘆杈冨ソ
3.3銆佸煎叆瀵煎嚭pg锻戒护:
ceph-objectstore-tool --data-path /data3/ceph-osd/ --journal-path /var/log/ceph/ceph-2/journal --type filestore --pgid 4.15d5 --op export --file /data10/55/pg4.15d5
ceph-objectstore-tool --data-path /data8/ceph-osd/ --journal-path /var/log/ceph/ceph-5/journal --type filestore --pgid 4.15d5--op import --file /data10/55/pg4.15d5
阃夋嫨涓涓猳sd涓轰富锛屽彟涓涓涓哄坛锛屽皢涓涓瀵煎叆鍒板彟澶栦竴涓猵g锛屽煎叆瀵煎嚭闇瑕佸仠姝osd銆备互涓婃槸灏唎sd.2涓镄4.15d5瀵煎叆鍒皁sd.5涓
1銆佸傛灉鑳介吨钖瀵瑰簲pg镄刼sd,闾f槸链濂界殑锛岄梾棰樿嚜铹惰В鍐
2銆佸傛灉osd瀵瑰簲镄勬暟鎹鐩樻崯姣佹垨钥呭叾浠栧师锲犳棤娉曞惎锷ㄨ繖涓猳sd
绗涓姝ワ细灏呜繖涓猳sd鍒犻櫎锛屽懡浠
ceph osd crush reweight osd.xx 0
ceph osd out osd.xx
ceph osd crush remove osd.xx
ceph osd rm osd.xx
ceph auth del osd.xx
绗浜屾ワ细娓呯悊褰揿墠osd镄勭‖鐩樻垨钥呮柊锷犱竴涓纭鐩
绗涓夋ワ细鏂板惎锷ㄤ竴涓缂栧彿鐩稿悓镄刼sd
绗锲涢儴锛氶吨澶崭笂闱㈢殑镎崭綔锛屽勭悊鎺夋墍链夋湁闂棰樼殑osd锛屽傛灉杩樻湁down锛屾病浜嬶纴绛夐泦缇よ嚜宸辨仮澶嶅勭悊锛堟垜灏辨槸钖锷ㄤ简涓涓鏂扮殑osd,链塸g澶勭悊incomlepte+down锛屾垜镙囱板畬浜唅ncomlepte锛宒own灏辫嚜宸辨秷澶变简锛
1銆佸师锲
杩欎釜鐘舵佺殑PG娌℃湁琚 ceph-osd 镟存柊锛岃〃鏄庡瓨鍌ㄨ繖涓 PG 镄勬墍链夎妭镣瑰彲鑳介兘 down 浜嗐傛嫢链 PG 𨰾疯礉镄 OSD 鍙鑳戒细鍏ㄩ儴澶辫触锛岃繖绉嶆儏鍐典笅锛岄偅涓閮ㄥ垎镄勫硅薄瀛桦偍涓嶅彲鐢锛 monitor 涔熷氨涓崭细鏀跺埌闾d簺 PG 镄勭姸镐佹洿鏂颁简锛岃繖浜沺g灏辫镙囱颁负stale
2銆佽В鍐虫柟娉
绗涓绉嶏细osd down浜嗕箣钖庤兘姝e父璧锋潵锛岄偅鍙瑕佸惎锷
绗浜岀嶏细
1.浣跨敤锻戒护ceph pg mp |grep stale镓惧嚭stale镄刾g
2.浣跨敤锻戒护ceph pg force_create_pg $pg_id,杩欐椂pg鐘舵佸彉涓篶reating
3.閲嶅惎闆嗙兢涓镓链夌殑osd
3銆佺壒娈婅存槑
鎴戝綋镞舵槸绗浜岀嶆儏鍐碉纴铹跺悗鎴戞寜涓婇溃镄勬ラゆ搷浣滀简銆傜粨鏋沧墍链夌殑osd钖锷ㄩ兘鍗′富浜嗐傛垜鐚沧祴鍙鑳藉师锲狅细褰撴椂鎴慺orce_create_pg镄勬暟閲忔湁3000涓锛岃繖涓鏁伴噺链夌偣澶氾纴镓浠osd灏卞ぇ閲忓崱浣忎简锛屽緢涔呭緢涔呮墠鑳藉惎锷锛屽彲鑳芥湁鍑犱釜灏忔椂銆傛墍浠ヨ繖涓镎崭綔瑕佹厧閲嶏纴寤鸿濡备笅
1銆佽繖涓狲tale镄刾g链钖庡勭悊
2銆佷竴娆′笉瑕乫orce_create_pg澶澶氾纴osd閲嶅惎镞讹纴涓涓閲嶅惎鎴愬姛涔嫔悗锛屽湪閲嶅惎鍙︿竴涓
杩欎釜姣旇缉绠鍗,鐩存帴镓ц屽懡浠わ细ceph pg repair $pg_id 淇澶
璇存槑闆嗙兢涓璷sd链夐梾棰桡纴闇瑕佽В鍐硂sd闂棰桡纴鎴戝氨鏄链3涓猳sd闂棰桡纴鎴憃ut浜呜繖3涓猳sd锛岃繖2涓鐘舵佸氨寰埚揩娑埚け浜
1銆侀梾棰桦彂鐜 锛歝eph -s 鎴栬卪on杩涚▼姝绘帀鐪嫔埌镞ュ织
2銆佷骇鐢熷师锲
浜х敓浜嗗ぇ閲忕殑epoch锛屽艰嚧mon镄剆tore.db镄勬暟鎹鏋侀熻啫鑳銆傝繖涓鏄鎴戦泦缇ゅ嚭鐜伴梾棰树箣钖庢墠鍑虹幇镄勚傛垜涔嫔墠闆嗙兢姝e父镞舵病链夎繖涓鐜拌薄銆备笉鐭ラ亾绛夐泦缇ゆe父涔嫔悗锛屼细涓崭细镊宸辨仮澶嶆e父銆
3銆佽В鍐虫柟娉
绗涓绉嶏细瀵规暟鎹杩涜屽帇缂╋纴浣跨敤锻戒护 ceph tell mon.ceph163 compact (ceph163鏄鎴憁on镄勫悕绉) 銆
绗浜岀嶏细浣跨敤ceph-mon -i HOST --compact杩涜屽帇缂╁惎锷 锛岃繖閲岀殑host鎴戜娇鐢ㄧ殑鏄痗eph163锛屼富链哄悕绉
璇存槑锛氢笉绠′娇鐢ㄥ摢涓绉嶏纴閮借佹敞镒忎竴镣癸细镎崭綔铡嬬缉镞讹纴纭鐩橀兘浼氩厛镓╁ぇ铹跺悗鍐岖缉灏忕殑锛屾墍浠ヨ佺暀瓒崇┖闂淬傜浜岀岖殑浼桦娍鍦ㄤ簬鍙浠ヤ娇淇鏀筩eph.conf涓镄勫弬鏁癿on_data=/data10/ceph153璺寰勭敓鏁堛傛垜钖庢潵镄刴on鏁版嵁澶澶т简锛屾垜灏辨洿鏂拌矾寰勫埌浜嗘暟鎹鐩桡细鍙瑕佹妸瀵瑰簲镄刴on鏁版嵁瀛樻暟鎹甿v鍒板叾浠栫洰褰曞嵆鍙
绗涓夌嶏细绛夐泦缇ゆe父浜嗭纴淇鏀筸on镄勯厤缃鍙傛暟璇曡瘯锛堟湭楠岃瘉锛屽弬鏁板彲浠ヨ皟灏忎竴浜涳级
mon_min_osdmap_epochs=500
mon_max_pgmap_epochs=500
mon_max_mdsmap_epochs=500
4銆佺壒鍒娉ㄦ剰锛
榛樿ゅ綋mon镓鍦ㄥ瓨鍌ㄥ簲纭鐩桦墿浣5%绌洪棽镞讹纴mon杩涚▼浼氲嚜𨱒銆
灏嗗瑰簲osd鑺傜偣璁剧疆涓簅ut鍗冲彲(osd杩涚▼渚濈劧瀛桦湪)锛屽畠浼氲嚜锷ㄧЩ闄ゆ暟鎹骞舵妸瀵瑰簲鏁版嵁鐩樼殑鏁版嵁鍒犻櫎锛岀瓑鍒版暟鎹绉婚櫎瀹屾瘯锛屾e父鍏抽棴鍒犻櫎osd鍗冲彲
锻戒护锛歝eph osd out osd.xx
褰挞渶瑕佽縼绉绘湇锷″櫒锛岄渶瑕佸叧闂闆嗙兢镞讹纴鍏堣剧疆ceph osd set nodown ceph osd set noup ceph osd set noout ceph osd set nobackfill ceph osd set norecover 淇濇寔闆嗙兢涓嶅彉锛岀劧钖庡叧闂钖勪釜osd,鍏抽棴mon,鍏抽棴rgw銆
ceph osd set norebalance
钬斺旂佹㈤泦缇pg锅氢粠鍧囱锛屽綋鍑虹幇闂棰樻椂锛屽彲浠ヨ剧疆锛岀敤浜庢帓镆ラ梾棰
ceph osd set nobackfill
钬斺旂佹淇澶嶆暟鎹 backfill锛屽綋鍑虹幇闂棰樻椂,鎴戜滑𨱌傛椂涓嶆兂淇澶嶆暟鎹锛屽彲浠ヤ娇鐢锛岄厤钖坣obackfill 涓璧蜂娇鐢
ceph osd set norecover
钬斺旂佹淇澶嶆暟鎹 recover锛屽綋鍑虹幇闂棰樻椂,鎴戜滑𨱌傛椂涓嶆兂淇澶嶆暟鎹锛屽彲浠ヤ娇鐢锛岄厤钖坣obackfill 涓璧蜂娇鐢
ceph osd set nodown
钬斺斿綋闆嗙兢鍑虹幇闂棰桡纴osd涓浼氩効up锛屼竴涓猟own镄勬椂鍊欙纴鍙浠ヤ娇鐢ㄨ繖涓锻戒护锛岀佹osd down
ceph osd set noup
钬斺斿綋闆嗙兢鍑虹幇闂棰桡纴osd涓浼氩効up锛屼竴涓猟own镄勬椂鍊欙纴鍙浠ヤ娇鐢ㄨ繖涓锻戒护锛岀佹osd up
ceph osd set noout
钬斺旂佹㈤泦缇や腑镄刼sd镊锷ㄥ洜涓洪暱镞堕棿down锛岃宱ut
ceph osd set nodeeep-scrub
钬斺斾笉锅氭繁搴﹀勭悊鍙栨秷浣跨敤瀵瑰簲镄剈nset鍗冲彲锛屾瘆濡俢eph osd unset noout
ceph osd out osd.xx 璁剧疆鍗曚釜osd镄勭姸镐佷负out
ceph osd in osd.xx 璁剧疆鍗曚釜osd镄勭姸镐佷负in
ceph osd down osd.xx 璁剧疆鍗曚釜osd镄勭姸镐佷负down
ceph tell osd.xx injectargs --debug-osd 20 瀹炴椂淇鏀筼sd.xx镄勬棩蹇楃骇鍒锛屼笉闇瑕侀吨钖痮sd
ceph tell mon.xx injectargs --debug-mon 20 瀹炴椂淇鏀筸on镄勬棩蹇楃骇鍒锛屼笉闇瑕侀吨钖痬on
ceph tell osd.* injectargs --osd_recovery_sleep 1 鍗曚綅绉掞纴鍒氩紑濮嬭剧疆涓1锛屾曟湇锷″櫒链夊帇锷涳纴瑙傚疗涔嫔悗鍙浠ュ幓鎺夎剧疆涓0
ceph tell osd.* injectargs --osd_max_backfills 1 璋冩暣鎭㈠岖嚎绋嬫暟锛屽彲浠ユ牴鎹瀹为檯𨱍呭喌璋冩暣
ceph tell osd.* injectargs --osd_recovery_op_priority 60 璋冩暣鎭㈠岖嚎绋嬬殑绾у埆
ceph daemon osd.xx status 镆ョ湅osd.xx镄勭姸镐侊纴涓昏佺湅osdmap鐗堟湰鍙
ceph pg mp 镆ョ湅镓链夌殑pg淇℃伅
ceph pg mp_stuck stale 镆ョ湅pg鐘舵佷负stale镄勬暟鎹
ceph pg mp_stuck inactive镆ョ湅pg鐘舵佷负inactive镄勬暟鎹
ceph pg mp_stuck unclean镆ョ湅pg鐘舵佷负unclean镄勬暟鎹
ceph -s 镆ョ湅闆嗙兢𨱍呭喌
ceph osd tree 镆ョ湅osd鐘舵佹爲
ceph health detail 镆ョ湅闆嗙兢锅ュ悍璇︽儏
ceph pg pg_id query 镆ョ湅镆愪釜pg淇℃伅
ceph osd getmap -o osdmap.bin镆ョ湅osdmap锲
ceph-dencoder type OSDMap import osdmap_197 decode mp_json 灏唎sdmap瀵煎嚭鎴恓son镙煎纺