guanziliu
作者guanziliu2018-10-26 10:55
存储工程师, 某保险

某大型金融集团对象存储需求分析和架构设计线上答疑活动总结

字数 5336阅读 1405评论 1赞 6

公共问题:

对象存储如何做限速控制呢?

jimV5 存储工程师 , 金融保险
不同对象存储服务商提供的能力不同,netapp 的storagegrid 是可以做qos管控的。

wanggeng 系统运维工程师 , 宜宾市商业银行
拿ceph来讲,可以在webserver 比如nginx里面做

ceph s3 对象存储如何做灾备呢?

Lucien168 存储工程师 , 滴滴
利用官方提供灾备方案
自己在客户端双写的方案

wanggeng 系统运维工程师 , 宜宾市商业银行
可以做一个跨idc同步的方案,做到异地容灾

对象存储和文件存储有什么区别?

lzg21st 存储工程师 , brcb
通常我们说存储分为块、文件和对象,从应用场景来看,块存储主要用于结构化数据库应用,在相对小的容量空间上可以提供更高的IO性能,所以从后端存储产品形态上来看,一般是多控多活的紧耦合集中式SAN架构,存储介质大多采用高速的SAS和近年来已成主流的固态硬盘,前端多采用FC光纤协议组网,另外,存储双活、存储虚拟化、存储复制等技术也支撑着这块的生态。
文件存储主要是集中式或分布式的NAS类应用,以灵活的共享文件系统为特色,承载百万文件量和TB级别的文件类应用。
而对象存储近年来在国内市场逐渐火热起来,主要是特定行业的海量非结构化数据的应用场景。由于对象存储采用扁平的文件组织方式,所以在文件量上升至千万、亿级别,容量在PB级别的时候,这种文件组织方式下的性能优势就显现出来了,文件不在有目录树深度的问题,历史和近线数据有同样的访问效率。另外,对象存储多采用分布式架构,可以在商用x86服务器上轻松构建对象存储,磁盘介质也大多采用低速的SATA盘,所以在成本上也具优势。

jimV5 存储工程师 , 金融保险
对象存储实际上更贴近http的应用。文件存储通常需要一个app 的服务器将文件存储挂载到本地

Lucien168 存储工程师 , 滴滴
块存储

  • 典型设备: 磁盘阵列,硬盘
  • 主要是将裸磁盘空间映射给主机使用的。
  • 使用场景:
  • docker容器、虚拟机远程挂载磁盘存储分配。
  • 日志存储。
  • 文件存储。
  • ...

文件存储

  • 典型设备: FTP、NFS服务器为了克服块存储文件无法共享的问题,所以有了文件存储。在服务器上架 设FTP与NFS服务,就是文件存储。
  • 使用场景:
  • 日志存储。
  • 多个用户有目录结构的文件存储共享。
  • ...

对象存储

  • 典型设备: 内置大容量硬盘的分布式服务器(swift, s3) 多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。
  • 使用场景: (适合更新变动较少的数据,没有目录结构, 不能直接打开/修改文件)
  • 图片存储。
  • 视频存储。
  • 文件
  • 软件安装包

Ceph对象存储适合什么场景? 与传统对象存储的区别,以及优劣势如何?

Lucien168 存储工程师 , 滴滴
对象存储
典型设备: 内置大容量硬盘的分布式服务器(swift, s3)
多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。

使用场景: (适合更新变动较少的数据,没有目录结构, 不能直接打开/修改文件)

图片存储。
视频存储。
文件
软件安装包

ceph、Swift、hdfs在管理非结构化数据上性能对比?各自适合哪些业务场景?

lzg21st 存储工程师 , brcb
ceph同时支持S3和swift对象协议,swift用的比较少,S3是对象协议事实上的标准,所以一般的对象存储,开源和商业的产品都支持,hdfs是非对称的架构,有单独的元数据节点,所以会存在所谓的元数据热点问题。ceph采用crush算法,把io问题用cpu计算进行解决,所有的osd都能进行计算,选择pg的副本位置

在存储服务方面,对象是否提供多种通用的应用接口以实现应用和存储的解耦?

jimV5 存储工程师 , 金融保险
对象存储通用的协议是基于http的,天生就是短连接的,弱耦合,可以使用curl,及s3的各种程序api调用

对象存储里面bucket 数据过大有性能问题,请问如何避免和解决?

Lucien168 存储工程师 , 滴滴
ceph 对象存储 单个bucket 里面如果object 过多, 可能会导致 bucket index omap过大,从而导致osd自杀,以及性能问题。

必须得针对bucket index 做shared。 单个bucket index shard 建议值是10-12w个object, 具体多少个bucket index shard num 可以自行评估
单个bucket 容量还是得规划下,最好在客户端针对业务的不同,进行拆分。

jimV5 存储工程师 , 金融保险
总量大 可以使用一些再平衡策略,将数据分散在多个对象存储节点上
对象个体大 使用multipart 方法进行io 读写

object 存放数据的原理是什么?

设定512 kb的object size 大小,存放数据的过程中,用ceph df detail观察到的结果是,每存放一个512KB的文件,object+1 ,或者存放更小的文件总值每512KB,object 数量都会加一,这说明一个object可以存放多个文件?每个object是如何存放数据的?

jimV5 存储工程师 , 金融保险
根据最近的一次将对象存储深挖拆解,对象存储底层实质上用的是文件系统,将对象以一种新的或拆或打包,形成固定大小的文件重新存储到文件系统内,再配以各自的数据库存储元数据。比如ibm 的cos 实际上用的是debian linux os ,文件系统使用的是ext4 ,核心组件叫ds-net 并启动5000端口监听,其中发现有使用hdfs相关组件,java 程序编写的。
ceph 实际上通常也是同样ext4 ,不过ceph 的局限是保护策略需要按隔离区域预先设置好。不可以按需进行动态修改

技术难点问题:

Ceph 如何实现Dashboard 管理级别的osd扩容管理?

目前项目遇到瓶颈为,使用开源对象存储架构ceph,但是运维实施人员对ceph技术较为生疏,并且对相关存储资源管理有一定挑战,希望有哪位大神可以指点一下相关技术,或者目前怎样实现页面级别的ceph存储运行维护

Lucien168 存储工程师 , 滴滴
运维操作,还是自己定制化开发吧, 长久来说。
官方提供的dashboard 都是一些监控指标之类的。

Ceph集群同步问题?

Ceph集群一旦有磁盘损坏,或者物理机问题,导致OSD出现down状态,在恢复OSD为UP之后,由于ceph开始同步数据,集群会处于半瘫痪状态。请问这种状况有办法解决吗?

Lucien168 存储工程师 , 滴滴
建议设置ceph集群为 维护模式, 出现osd down也不会有数据迁移, 等待你拉起down的osd 就会恢复这个osd上的部分数据即可。

S3对象存储,数据恢复方法,有无快速恢复的工具及检索办法以及可视化工具?

1.关于对象存储,数据恢复方法,有无快速恢复的工具及检索办法;
2.关于对象存储,有无可视化工具;

jimV5 存储工程师 , 金融保险
目前主流备份软件已经可以进行对对象存储的备份,但是由于对象存储的唯一性,导致对备份后的数据进行恢复时,对象的uuid 有可能发生了修改.
据了解ibm 的tsm 是可以做到对象备份后再还原保持原有的id
当然也可以用程序代码实现两个对象存储的实时镜像,自定义一些元数据库,进行对象uid对应存储

Lucien168 存储工程师 , 滴滴
s3对象存储,本来就是分布式存储,数据丢失的概率很低。 如果真的丢失,建议开始的时候就做灾备考虑好。

如何将现在由ftp或者smb管理的历史文件迁移到对象存储而尽量不影响用户使用?

Lucien168 存储工程师 , 滴滴
可以通过s3cmd 逐个的把历史文件put到新集群,然后逐步迁移到新集群。 速率自己控制好就行。

jimV5 存储工程师 , 金融保险
最正确的做法是,使用程序语言,将文件上put 到s3,同时存储相应的文件属性,另外可对每个文件(在s3里称为obj)增加一些标签
当然有一些简单的工具也可以使用,如cloudberry,cyberduck,curl等

ceph集群中每个osd容量大小是否需要一致?

目前集群中的每个osd都是对应使用的一块2T的硬盘,但是现在需要扩容,想加4T或者6T的硬盘,请问是否对ceph集群有影响?是否可以将这4T或者6T分成两个区,然后用于创建两个osd?

Lucien168 存储工程师 , 滴滴
多大的磁盘空间都可以的, osd权重跟权重是对应的。

jimV5 存储工程师 , 金融保险
不需要,可以创建不同的pg,数据应该在多个pg里按照特定策略分布数据

ceph集群和SAN存储的IOPS比较?

有万兆网卡的ceph集群,和传统的SAN存储比较,在读写上会有哪些差距?IOPS差别大吗?

lzg21st 存储工程师 , brcb
简单的来说,二者可比性不大!
首先,应用场景不同,再者产品架构设计也不同。简单看下,传统SAN存储前端多采用FC协议,后端是SAS组网,ceph主要是千兆或万兆以太网组网;存储介质上,SAN存储多采用高速SAS或SSD,ceph在容量型场景下多采用大容量低转速的SATA盘;在数据保护上,ceph多采用三副本,传统存储采用RAID,这些都是造成性能差异的元素。如果非要比下,可以使用FIO这种性能测试工具跑个看下,对比下SAN盘阵的LUN和ceph中rbd的性能

CEPH 跨数据中心部署?

能否在三个数据中心之间进行CEPH的部署?每个数据中心20台server,每个server 4个OSD?

lzg21st 存储工程师 , brcb
从技术上来说,只要网络通,数据中心间网络延迟足够小,带宽足够大,啥事儿都能干!
但即使从传统存储来看,我们也往往更倾向同数据中心的双活,数据中心间异步复制,Oracle dg中的最大性能模式也同样以保护生产中心的性能进行的容灾体系建设!
更何况,在ceph这种分布式的对象存储底层机制中,后端的cluster网(负责osd间的数据复制)承载着较之于前端public网更大的带宽压力,此外,osd之间也定期发心跳汇报给mon节点,那么跨中心的这种心跳机制是否需要特别的设置,所以跨中心的架构设计需要考虑的因素很多,不仅仅是产品本身,还要从业务的角度进行设计,比如带宽,业务容忍的延迟等等。
大道至简,从最开始的架构设计到后续的优化和运维都能给咱少整点事儿

Lucien168 存储工程师 , 滴滴
可以这样部署。 但是你得考虑,各个数据中心,网络的延迟问题?

Ceph对文件查找的加速问题?

目前用的文件存储是nfs。一个文件夹里面有千万级的pdf文件,检索某一个文件大概耗时2-5秒,如果在不改变查找算法的前提下使用ceph,能否加快文件的检索速度呢?

Lucien168 存储工程师 , 滴滴
1.背景说明
用户需要从一个文件从检索出一行数据, 并且对延迟和性能要求比较高。

1.1 现在做法
普通的做法是A用户上传2G的文件到Ceph集群, B用户拉取该2G的文件到本地,然后根据offset检索这行数据。

这其中的做法是用户检索量比较大的时候,都需要拉取不同文件的2G数据,延迟比较高,严重影响用户的体验。

缺点:

用户端检索延迟大,影响用户体验
客户端端集群网卡带宽有限
量大对Ceph集群负载影响严重
1.2 优化方案
能不能只拉取我需要的信息,不用全量拉取到本地,答案是肯定的。

思路:

根据文件信息查找所有的object信息
根据offset找到需要检索的object信息
找到对应的object 检索一行的数据(一行数据可能会拆分多个object)
优点:

提升用户体验
客户端网络网卡带宽可用率得到提升
减少对ceph集群的冲击影响

方案详见: https://www.jianshu.com/p/4d8576173f84

ceph分布式存储节点退出维修对存储计算资源和io的影响?

ceph分布式存储有时会因为节点故障,而将节点剔除,在节点维修完成后再加入集群。在节点剔除和加入的过程中,分布式存储的cpu内存和io额外消耗如何,对存储本身的性能影响如何?

Lucien168 存储工程师 , 滴滴
分布式存储Ceph 在节点剔除,

我们可以设置集群为维护模式,
例如: 3副本,挂掉1个副本,如果不是维护模式,会自动找第三副本。
如果设置为维护模式, 剩余的2副本(小于最小副本数),还能继续工作,集群也就不需要cpu和io的消耗, 对性能几乎没影响。

当然如果不设置维护模式,我们也可以通过设置集群内部io的限速来控制集群的内部io及负载, 优先让客户端io先完成等策略。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

6

添加新评论1 条评论

#wuwenpin软件开发工程师, 南京
2018-10-26 19:21
非常有参考价值!
Ctrl+Enter 发表

分布式块存储选型优先顺序调查

发表您的选型观点,参与即得50金币。