‘壹’ Linux里面ceph是什么
Linux里面ceph
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
‘贰’ 如何在ceph中找出存放的数据
云存储系统具有良好的可扩展性、容错性,以及内部实现对用户透明等特性,这一切都离不开分布式文件系统的支撑。现有的云存储分布式文件系统包括GFS、HDFS、Lustre、FastDFS、PVFS、GPFS、PFS、Ceph和TFS等。
‘叁’ ceph这款云存储技术怎么样
Ceph是一套高性能,易扩展的,无单点的分布式文件存储系统,基于Sage A. Weil的论文开发,主要提供以下三个存储服务:
对象存储(Object Storage),既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。
块存储(Block Storage),作为块设备像硬盘一样直接挂载。
文件系统(File System) ,如同网络文件系统一样挂载,兼容POSIX接口。
Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。
Ceph集群的节点有三种角色:
Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构)
OSD,维护节点上的对象,响应客户端请求,与其他OSD节点同步
MDS,提供文件的Metadata,如果不使用CephFS可以不安装
?
‘肆’ 如何集成Ceph对象存储
Glance集成Glance是OpenStack中的映像服务。默认情况下,映像存储在本地控制器,然后在被请求时复制到计算主机。计算主机缓存镜像,但每次更新镜像时,都需要再次复制。Ceph为Glance提供了后端,允许镜像存储在Ceph中,而不是本地存储在控制器和计算节点上。这大大减少了抓取镜像的网络流量,提高了性能,因为Ceph可以克隆镜像而不是复制镜像。此外,它使得在OpenStack部署或诸如多站点OpenStack之类的概念的迁移变得更简单。安装Glance使用的Ceph客户端。创建Ceph用户并将主目录设置为/etc/ceph。将Ceph用户添加到sudoers。在Ceph管理节点。为Glance镜像创建CephRBD池。创建将允许Glance访问池的密钥环。将密钥环复制到OpenStack控制器上的/etc/ceph。设置权限,让Glance可以访问Ceph密钥环。将密钥环文件添加到Ceph配置。创建原始Glance配置的备份。更新Glance配置。重新启动Glance。下载Cirros镜像并将其添加到Glance。将QCOW2转换为RAW。建议Ceph始终使用RAW格式。将镜像添加到Glance。检查Ceph中是否存在Glance图像。Cinder集成Cinder是OpenStack中的块存储服务。Cinder提供了关于块存储的抽象,并允许供应商通过提供驱动程序进行集成。在Ceph中,每个存储池可以映射到不同的Cinder后端。这允许创建诸如金、银或铜的存储服务。你可以决定例如金应该是复制三次的快速SSD磁盘,银应该是复制两次,铜应该是使用较慢的擦除编码的磁盘。为Cinder卷创建一个Ceph池。创建一个密钥环以授予Cinder访问权限。将密钥环复制到OpenStack控制器。创建一个只包含OpenStack控制器上的身份验证密钥的文件。设置密钥环文件的权限,以便Cinder可以访问。将密钥环添加到OpenStack控制器上的Ceph配置文件中。使KVMHypervisor访问Ceph。在virsh中创建一个密钥,因此KVM可以访问Ceph池的Cinder卷。为Cinder添加一个Ceph后端。在所有控制器上重新启动Cinder服务。创建Cinder卷。在Ceph中列出Cinder卷。将Ceph与Nova计算集成Nova是OpenStack中的计算服务。Nova存储与默认的运行虚拟机相关联的虚拟磁盘镜像,在/var/lib/nova/instances下的Hypervisor上。在虚拟磁盘映像的计算节点上使用本地存储有一些缺点:·镜像存储在根文件系统下。大镜像可能导致文件系统被填满,从而导致计算节点崩溃。·计算节点上的磁盘崩溃可能导致虚拟磁盘丢失,因此无法进行虚拟机恢复。Ceph是可以直接与Nova集成的存储后端之一。在本节中,我们将看到如何配置。为Nova创建验证密钥环。将密钥环复制到OpenStack控制器。在OpenStack控制器上创建密钥文件。设置密钥环文件的权限,以便Nova服务可以访问。确保安装所需的rpm软件包。更新Ceph配置。让KVM可以访问Ceph。在virsh中创建一个密钥,这样KVM可以访问Cinder卷的Ceph池。备份Nova配置。更新Nova配置以使用Ceph后端。重新启动Nova服务。列表Neutron网络。启动使用在Glance步骤中添加的Cirros镜像的临时VM实例。等待直到VM处于活动状态。在Ceph虚拟机池中列出镜像。我们现在应该看到镜像存储在Ceph中。
‘伍’ ceph存储 ceph集群Tier和RBD Cache的区别
Ceph是一套高性能,易扩展的,无单点的分布式文件存储系统,基于Sage A. Weil的论文开发,主要提供以下三个存储服务:对象存储(Object Storage),既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。
块存储(Block Storage),作为块设备像硬盘一样直接挂载。
文件系统(File System) ,如同网络文件系统一样挂载,兼容POSIX接口。
Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。
Ceph集群的节点有三种角色:
Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构)
OSD,维护节点上的对象,响应客户端请求,与其他OSD节点同步
MDS,提供文件的Metadata,如果不使用CephFS可以不安装!
‘陆’ 如何使用ceph
Ceph是一个 Linux PB 级分布式文件系统。
其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是 "Sammy",一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。
Ceph 最初是一项关于存储系统的 PhD 研究项目,由 Sage Weil 在 University of California, SantaCruz(UCSC)实施。
简单定义为以下3项:
1. 可轻松扩展到数 PB 容量
2. 支持多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽)
3. 高可靠性
但是,这些目标之间会互相竞争(例如,可扩展性会降低或者抑制性能或者影响可靠性)。Ceph 的设计还包括保护单一点故障的容错功能,它假设大规模(PB 级存储)存储故障是常见现象而不是例外情况。
它的设计并没有假设某种特殊工作负载,但包括了适应变化的工作负载,并提供最佳性能的能力。它利用 POSIX 的兼容性完成所有这些任务,允许它对当前依赖 POSIX 语义(通过以 Ceph 为目标的改进)的应用进行透明的部署。
Ceph 生态系统架构可以划分为四部分:
1. Clients:客户端(数据用户)
2. cmds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)
3. cosd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)
4. cmon:Cluster monitors,集群监视器(执行监视功能)
‘柒’ 如何配置ceph分布式存储方案
1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。
2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。
3、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。
‘捌’ ceph存储原理
存储原理这个你可以去查查这方面的专业解释,找找专业人。
‘玖’ Ceph分布式存储是怎么防止脑裂的
解决脑裂问题,通常采用隔离(Fencing)机制,包括三个方面:
共享存储fencing:确保只有一个Master往共享存储中写数据。
客户端fencing:确保只有一个Master可以响应客户端的请求。
Slave fencing:确保只有一个Master可以向Slave下发命令。
Hadoop公共库中对外提供了两种fenching实现,分别是sshfence和shellfence(缺省实现),其中sshfence是指通过ssh登陆目标Master节点上,使用命令fuser将进程杀死(通过tcp端口号定位进程pid,该方法比jps命令更准确),shellfence是指执行一个用户事先定义的shell命令(脚本)完成隔离。
切换对外透明:为了保证整个切换是对外透明的,Hadoop应保证所有客户端和Slave能自动重定向到新的active master上,这通常是通过若干次尝试连接旧master不成功后,再重新尝试链接新master完成的,整个过程有一定延迟。在新版本的Hadoop RPC中,用户可自行设置RPC客户端尝试机制、尝试次数和尝试超时时间等参数。
在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。
运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的“心跳”则自动接管主服务器的资源。通常情况下,主、备服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由“交叉线”实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在单点故障。
1、串行电缆:被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。
2、以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此连接在主备服务器间同步文件系统,从而减少了从正常通信连接带宽的占用。
基于冗余的角度考虑,应该在主、备服务器使用两个物理连接传输heartbeat的控制信息;这样可以避免在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的“脑裂”(split-brain)或“partitioned cluster”。在两个节点共享同一个物理设备资源的情况下,脑裂会产生相当可怕的后果。
为了避免出现脑裂,可采用下面的预防措施:
添加冗余的心跳线,例如双线条线。尽量减少“裂脑”发生机会。
启用磁盘锁。正在服务一方锁住共享磁盘,“裂脑”发生时,让对方完全“抢不走”共享磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的一方不主动“解锁”,另一方就永远得不到共享磁盘。现实中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用服务。于是有人在HA中设计了“智能”锁。即,正在服务的一方只在发现心跳线全部断开(察觉不到对端)时才启用磁盘锁。平时就不上锁了。
设置仲裁机制。例如设置参考IP(如网关IP),当心跳线完全断开时,2个节点都各自ping一下 参考IP,不通则表明断点就出在本端,不仅“心跳”、还兼对外“服务”的本端网络链路断了,即使启动(或继续)应用服务也没有用了,那就主动放弃竞争,让能够ping通参考IP的一端去起服务。更保险一些,ping不通参考IP的一方干脆就自我重启,以彻底释放有可能还占用着的那些共享资源。
‘拾’ ceph分布式存储为啥
Ceph是根据加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上)、高性能及高可靠性。
Ceph其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是“Sammy”,一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。
其设计遵循了三个原则:数据与元数据的分离,动态的分布式的元数据管理,可靠统一的分布式对象存储机制。本文将从Ceph的架构出发,综合性的介绍Ceph分布式文件系统特点及其实现方式。
更多技术细节参考网页链接