Ceph学习笔记之二RADOS
一、RADOS架构
在RADOS架构中主要包含2个部分组件:
1、MON(Monitor)
由少量的Monitor节点构成的强耦合,小规模集群;负责管理Cluster Map。
2、OSD(Object Storage Device)
由数量可变的 大规模磁盘设备组成的集群,负责存储所有Object数据。
二、Monitor详解
在前面已经简单对其MON进行描述,在这个地方我们再次对MON进行详细解读。正如其名Monitor是负责监视整个集群运行状态的,这些信息都是由维护集群成员的守护进程来提供的,如各节点之间的状态、集群配置等信息。Ceph Monitor Map包括:OSD Map、PG Map、MDS Map和CRUSH等,这些Map统称为集群Map。
1、Monitor Map
包括有关Monitor节点端到端的信息,其中包括Ceph集群ID,Monitor主机名和IP地址、端口号,以及版本信息、更改信息。通过下面命令查看Monitor Map信息:
# ceph mon dump
2、OSD Map
包括集群ID 、OSD Map版本信息、更改信息;以及Pool相关信息,如:Pool名称、PoolID、类型、副本数、PGP;同时还有OSD信息,如OSD数量、状态、OSD权重、最近清洁间隔和OSD主机信息,可通过下面命令查看OSD Map信息:
# ceph osd dump
3、PG Map
包括PG版本、时间戳、最新OSD Map版本信息、空间使用比例、以及沾满比例;同时包含每个PG ID、对象数目、状态、OSD状态等信息;使用下面命令查看PG Map信息:
# ceph pg dump
4、CRUSH Map
包含集群存储设备信息,故障域层次结构和存储数据时定义失败域、规则信息,可以通过以下命令查看:
# ceph osd crush dump
Monitor对资源的需求
Ceph Monitor是个轻量化的守护进程,在常规情况下不需要太多的系统资源;入门级CPU、千兆网卡即可满足大部分场景;同时Monitor节点需要有足够的磁盘空间来存储集群日志,一个健康的集群产生几MB到几GB的日志;然而如果集群不正常、存储需求增加、打开低等级的日志信息的话,将会产生大量的日志,增加磁盘空间存储日志信息。
Monitor节点设计
一个典型的Ceph集群包含多个Monitor节点,一个多Monitor节点Ceph架构通过确定的Monitor节点数来选择Leader,在Ceph集群中有多个Monitor节点时,Monitor节点数应为奇数,最低的要求是至少有一个Monitor节点,通常在设计Monitor节点数量推荐值为3,既为3个Monitor节点。
三、Ceph OSD详解
OSD是Ceph存储集群最重要的组件,OSD将数据以对象的形式存储到集群中每个节点的物理磁盘上。
Ceph集群一般都包含多个OSD,对于任何读写操作请求,Client端从CephMonitor获取ClusterMap之后,Client将直接与OSD进行I/O操作交互,使得数据读写过程更为迅速。
1、OSD副本特性介绍
Ceph核心功能特性包括高可靠、自动平衡、自动恢复和一致性。对于Ceph OSD而言,基于配置的副本数,Ceph提供通过分布在多节点上的副本来实现,使得Ceph具有高可用性及容错性。在OSD中的每个对象都有一个主副本,若干个从副本。这些副本默认情况下是分布在不同节点上的,这就是Ceph作为分布式存储系统的集中体现。每个OSD都可能是某些对象的主OSD;同时也可能成为其他对象的从OSD。从OSD受主OSD的控制,在某些情况下从OSD也会成为主OSD。例如:在磁盘故障时Ceph OSD Deamon的智能对等机制将协同其他OSD执行恢复操作,此时存储对象的从OSD将被提升为主OSD,同时,新的从副本也将重新生成,这样就保证了Ceph的可靠和一致。
2、Ceph OSD架构及文件系统
OSD架构实现由物理磁盘驱动器,在其之上的Linux文件系统以及OSD服务组成。Linux文件系统的扩展属性提供了:对象状态、快照、元数据内部信息。
Ceph OSD目前支持的文件系统主要有:BTRFS、XFS、EXT4
BTRFS
BTRFS文件系统格式的OSD相比XFS和EXT4提供了最好的性能。BTRFS主要优点:
(1) 扩展性
BTRFS设计目标是应对大型机器对文件系统的扩展性要求。Extent、B-Tree和动态inode创建等特性保证了BTRFS在大型机器上仍有不错的表现。整体性能不会随系统容量增加而降低。
(2) 数据一致性
当系统面临不可预料的硬件故障时,BTRFS采用COW事物技术保证文件系统的一致性。BTRFS还支持校验和、避免了未知的错误出现,传统的文件系统无法做到。
(3) 多设备管理
BTRFS支持创建快照和克隆。BTRFS还能管理多个物理设备。
BTRFS结合Ceph使得BTRFS中的诸多优点的快照,Journal of Parallel(并行日志)等优势使BTRFS在表现较为突出。然而不幸的是目前BTRFS还不能达到生产环境中要求的健壮性。因此不建议在Ceph集群中使用。
XFS
一种高性能的日志文件系统,XFS特别擅长处理大文件,同时提供平滑的数据传输。在CentOS7中已将XFS+LVM作为默认文件系统。
(1) 分配组
XFS文件系统内部被分为多个“分配组”,它们是文件系统的等长线性存储区。每个分配组各自管理自己的inode和剩余空间。文件和文件夹可以跨越分配组。这种特性为XFS提供了可伸缩和并行的特性;多个线程和进程可以同时在同一个文件系统上执行I/O操作。
(2) 条带化分配
在条带化RAID阵列上创建XFS文件系统时,可以指定一个“条带数据单元”。这可以保证数据分配、inode分配,以及内部日志被对齐到该条带单元上。以此最大化吞吐。
(3) 基于Extent的分配方式
XFS文件系统中的文件用到的块由变长Extent管理,每一个Extent描述了一个或多个连续的块。
(4)扩展性
XFS通过实现扩展文件属性给文件提供了多个数据流,使文件可以被附加多个名、值对;文件名是一个最大长度为256字节的,以Null字符结尾的可打印字符串。其关联值可包含多达64KB的二进制数据。扩展性可以被添加到任意一种XFS inode上,包含符号连接、设备节点和目录。
缺点:XFS不能很好的处理Ceph写入过程的Journal问题。
EXT4
第4代扩展文件系统,是Linux系统下的日志文件系统,是EXT3文件系统的后续版本。
(1) 大型文件系统
EXT4文件系统可以支持最高1EB的分区与最大16TB的文件
(2) Extents
EXT4引进了Extent文件存储方式,以替换EXT2/3使用的块映射方式。Extent指的是一连串的连续实体块,这种方式可以增加大型文件的效率并减少分裂文件。
(3) 日志校验和
EXT4使用校验和的特性来提高文件系统的可靠性,因为日志是磁盘上被读取最频繁的部分之一。
(4) 快速文件系统检查
EXT4将未使用的区块标记在inode中,这样可以节约大量的文件系统检测时间。
3、Ceph日志文件系统
在使用了BTRFS和XFS文件系统的OSD中,在提交数据到后端硬件磁盘之前,Ceph首先将数据写入一个存储区域,该区域称为Journal;Journal可以用一个单独的SSD磁盘做Journal,或者使用OSD自身的一个分区;如果要使Ceph得到较好的性能建议使用独立的SSD磁盘做Journal日志。其I/O流程如图:
Ceph的任何写操作首先是写Journal日志,然后每隔5秒将Journal中的数据刷写到后端硬件磁盘。