深度学习后端分布式存储c e p h技术建议书-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KIIAI平台分布式存储(ceph)技术建议书目录1. 前言 (3)2. 现状 (4)3. 技术调研 (5)3.1. 要求 (5)3.2. 技术选型 (5)3.2.1.分布式存储分类 (5)3.2.2.特性对比 (6)4. ceph技术原理 (6)4.1. 基本组成 (6)4.2. 逻辑架构 (8)4.3. 数据流程 (9)5. 资源要求 (9)5.1. 硬件指标 (9)5.1.1.cpu (10)5.1.2.内存 (10)5.1.3.硬盘 (10)5.1.4.日志盘 (11)5.1.5.osd节点密度 (11)5.1.6.分配方式 (11)5.2. 网络结构 (12)5.3. 软件兼容性 (13)5.4. 快速配置参考 (14)6. 数据安全 (15)6.1. 用户 (15)6.2. 认证机制 (15)6.3. 用户分类 (16)6.4. 授权类型 (17)7. 存储割接 (18)8. 其他 (18)1.前言目前公司AI平台所用后端数据存储包含三种方式,对象存储(OSS):冷数据,备份数据,共享存储(NFS):热数据,训练任务用数据,节点存储(DEV):服务器自身磁盘,除了节点存储,其他两类在迁移容器云后依然保留,节点存储则不再使用。
由于nfs服务的局限性,建议使用分布式共享存储替换当前的nfs方式,以满足后续的因业务增长,对存储的容量和性能更高要求。
2.现状目前物理服务器5台,借用其他业务测试用主机构建NFS高可用,单机磁盘裸容量36T,为了增加磁盘的读写效率,同时保障数据安全性,做了RAID5+RAID0组合方式,该架构目前提供共计20T共享热数据文件存储。
由于nfs容易上手,部署方便且快速,维护十分简单,在项目前期可以作为简单的共享存储使用,伴随着用户训练任务的增长,nfs方式的短板日趋明显,扩容受限,已不能够支撑后续多任务,多用户对数据的大批量、高性能读写请求。
当前存在问题:a.容易发生单点故障,虽然采用keepalived高可用,但增加了维护的复杂度,同时更拔高了其他短板的表现,尤其在连接管理,效率性能方面,并且在两节点切换期间不可避免存在数据丢失情况;b.扩容受限,在高并发下NFS效率/性能有限;c.客户端没用用户认证机制,且数据是通过明文传送,无安全保障;e.多台机器挂载NFS服务器时,连接管理维护麻烦;3.技术调研3.1.要求目前公司提供的存储,能够和AI当前架构对接的仅限于OSS对象存储,其他的hdfs,hive、hbase均无法采用,公司的NAS资源有限,目前支撑其他项目,无扩容计划,不借用,在无资源和资金支撑下,分布式存储选择需要以下要求:✓文件存储:支持POSIX接口,可以像普通文件系统(如ext4)那样访问✓开源性:不采用第三方公司产品,或二次封装方式;✓安全性:能够满足最基本的用户接入控制,并不限于此;✓去中心化:高可用,能够纵向升级和横向扩展,即分布式需求;✓通用性:普通硬件,即能够正常运行Linux服务器即可;3.2.技术选型分布式存储已经研究很多年,但直到近年来,伴随着谷歌、亚马逊和阿里等互联网公司云计算和大数据应用的兴起,它才大规模应用到工程实践中。
如谷歌的分布式文件系统GFS、分布式表格系统google Bigtable,亚马逊的对象存储AWS,阿里的TFS等都是很好的代表,同时也催生了一大批优秀的开源分布式存储系统,包括ceph、swift、Lustre和glusterfs等。
3.2.1.分布式存储分类分布式存储按其存储接口分为三种:文件存储、块存储和对象存储。
在主流的分布式存储技术中,HDFS/GPFS/GFS属于文件存储,Swift属于对象存储,而Ceph可支持块存储、对象存储和文件存储,故称为统一存储。
文件存储通常支持POSIX接口(如glusterfs,但GFS、HDFS是非POSIX接口的),可以像普通文件系统(如ext4)那样访问,但又比普通文件系统多了并行化访问的能力和冗余机制。
主要的分布式文件存储系统有TFS、cephfs、glusterfs和HDFS等。
主要存储非结构化数据,如普通文件、图片、音视频等。
可以采用NFS和CIFS等协议访问,共享方便。
块存储这种接口通常以QEMU Driver或者Kernel Module的方式存在,主要通过qemu或iscsi 协议访问。
主要的块存储系统有ceph块存储、sheepdog等。
主要用来存储结构化数据,如数据库数据。
数据共享不方便。
DAS和SAN都是块存储类型。
对象存储对象存储系统综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势。
以对象作为基本的存储单元,向外提供RESTful数据读写接口,常以网络服务的形式提供数据访问。
主要的对象存储系统有AWS、swift和ceph对象存储。
主要用来存储非结构化数据。
3.2.2.特性对比按照选型要求和各技术特性对比,规划采用ceph方式的文件系统。
4.ceph技术原理4.1.基本组成Ceph 支持三种存储接口:对象存储 RGW(rados gateway)、块存储 RBD(rados block device) 和文件存储 CephFS,这三个接口只是在客户端的封装库不同,到服务端了都是对象存储;对象存储(RGW:RADOS gateway)Ceph 对象存储服务提供了 REST 风格的 API ,它有与 Amazon S3 和 OpenStack Swift 兼容的接口。
也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展;块存储(RBD:RADOS block device)RBD 是通过librbd库对应用提供块存储,主要面向云平台的虚拟机提供虚拟磁盘;RBD 类似传统的SAN存储,提供数据块级别的访问;目前 RBD 提供了两个接口,一种是直接在用户态实现,通过 QEMU Driver 供 KVM 虚拟机使用。
另一种是在操作系统内核态实现了一个内核模块。
通过该模块可以把块设备映射给物理主机,由物理主机直接访问。
文件存储Ceph 文件系统服务提供了兼容 POSIX 的文件系统,可以直接挂载为用户空间文件系统。
它跟传统的文件系统如Ext4是一个类型,区别在于分布式存储提供了并行化的能力;原生接口除了以上3种存储接口,还可以直接使用 librados 的原生接口,直接和RADOS通信;原生接口的优点是是它直接和和应用代码集成,操作文件很方便;但它的问题是它不会主动为上传的数据分片;一个1G的大对象上传,落到 Ceph 的存储磁盘上就是1G的文件;4.2.逻辑架构ceph 的组件采用插件的机制,包括后端存储,KV 数据库,磁盘管理等。
各组件之间可以灵活的组合。
Ceph Monitor(ceph-mon)维护集群状态的映射,包括监视器映射,管理器映射,OSD 映射和CRUSH映射。
这些映射是Ceph守护进程相互协调所需的关键集群状态。
监视器还负责管理守护进程和客户端之间的身份验证。
冗余和高可用性通常至少需要三个监视器。
Ceph Manager守护程序(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。
Ceph Manager守护进程还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的仪表板和REST API。
高可用性通常至少需要两名经理。
Ceph OSD(对象存储守护进程 ceph-osd)存储数据,处理数据复制,恢复,重新平衡,并通过检查其他Ceph OSD守护进程来获取心跳,为Ceph监视器和管理器提供一些监视信息。
冗余和高可用性通常至少需要3个Ceph OSD。
Ceph元数据服务器(MDS ceph-mds)代表Ceph文件系统存储元数据(即,Ceph块设备和Ceph对象存储不使用MDS)。
Ceph的元数据服务器允许POSIX文件系统的用户来执行基本的命令(如 ls,find没有放置在一个Ceph存储集群的巨大负担,等等)。
4.3.数据流程ceph寻址过程1. file --- object映射,把file分割成N个相同的对象2.object - PG映射,利用静态hash得到objectID的伪随机值,在 "位与" mask上使得object获取属于自己的PG3.pg --osd映射,将pg映射到实际的存储单元osd,RADOS利用crush算法,由pgid 得到一组n个osd,再由osd daemon执行映射到本地的object在本地系统中存储,访问,数据维护,此次映射功能直接受到crush map以及rule限制,只有cluster map和rule不发生改变时,pg和osd的映射关系才固定。
5.资源要求5.1.硬件指标Ceph 可以运行在廉价的普通硬件上,小型生产集群和开发集群可以在一般的硬件上,PB 级生产集群也可以使用普通硬件,但应该配备更多内存、 CPU 和数据存储空间来解决流量压力。
5.1.1.cpu每一个osd守护进程至少有一个cpu核,计算公式如下:((cpu sockets * cpu cores per soket * cpu clock speed in GHZ) /No.Of OSD)>=1 例如:一台服务器拥有一个单插座,6核,2.5Ghz的cpu,就足以支持12个osd,每个osd将大致得到1.25FGhz的计算能力((1*6*2.5)/12)=1.25Iter Xeon Processor E5-2620(2.4GHz,6 core)1 * 6 * 2.40=14.1 适合多达14个osd的ceph节点5.1.2.内存moniter和metadata的守护进程,一般会随着集群的大小而变化,ceph mds很大程度上取决于数据缓存,需要大量的RAM,RAM越高,cephfs性能越好。
osd会要求数量客观的内存,一般每个OSD守护进程1G足以,不过从性能上讲每个守护进程2G是一个更好的选择。
5.1.3.硬盘当一个osd接受请求写一个object时,它会首先把object写到pg acting set中的osd 对应的日志盘,然后发送一个写确认给客户端,很快日志数据会同步到数据盘,使用ssd做日志盘,可以减少访问时间,降低写延迟,大幅提升吞吐量。
OSD应该有足够的硬盘空间来存放对象数据。
我们建议硬盘驱动器的最小容量为1T。
考虑到较大磁盘的每GB的成本优势。
我们建议将硬盘驱动器的价格除以千兆字节,得出每千兆字节的成本,因为较大的驱动器可能会对每千兆字节的成本有很大影响。