目前企业使用linux自带的nfs,提供存储共享和数据存储,集中备份功能,供业务使用。
架构采用两台SAS接口的大容量7500转的硬盘,raid10,双机keepalive热备,提供vip和切换后的映射以及双机间的rsync数据同步。nfs采用v3版本,含有部分目录acl控制,客户端包括linux5、6、aix5.5、6.1。
存储的数据绝大多数是K级小文件,txt或xls,访问方式是http和ftp等不同的协议,非书序读密集,目前遇到的问题如下:
1.容量,扩容只能采用横向硬件扩容,目录拆分的方式,傻大粗!
2.数据量上来以后,受rsync限制,主备机数据同步跟不上。
3.nfs协议在支持数量大的目录时,有些力不从心,千万级数据目录罗列耗时长,且用户感觉明显。
曾经参考过的替换方式:
1、hadoop,基于分片、副本存储的方式,对小文件的支持并不理想。
2、http应用负载分发,客户端访问方式不一,如,对支持ftp传送数据上,此种方式并不合适。
3、ceph,复杂的配置和管理在维护成本上投入过高,有些喧宾夺主。听说还有mysql的对象存储,还没研究,请问各位有什么好的点子提示下?
再提两个
1.用过GPFS,用几台x86搭建的集群,作为OpenStack 的存储节点,后来因为性能问题放弃。
2.VSAN vmware 的存储虚拟化产品,因此运维vm存储很适配,支持对特定虚机的存储策略,如副本数。目前新版本应该也可以作为其他的存储
1,容量方面还可以试试看有pNFS可以并行提供nfs服务,这比较好简便。
2和3的问题原因是一样的,因为文件数目过多,百万级别以上rsync软件或者专业的同步软件如英方都会遇到瓶颈,因为文件系统清单的瓶颈。海量小文件的确是一个难点,你可以看一下你们的nas server端 nfsstat,看看directorylist操作数占了所有操作数中的百分比。超过15%以上基本上都会遇到这个问题。现有厂商能解决海量文件同步问题的只有netapp的snapmirror,他是基于存储底层校验、同步文件。因为不读文件分区表,所以速度很快,我这里500万小文件共计3T,全同步约4小时,同步速度可以在600MB/s以上。就你的问题1和2来说,我的建议是用netapp的nas存储解决。
另外还有一些“免费的”优化方式简单的可以试试 打包历史数据、采用更多级目录,应用端维护文件清单进行文件访问(减少目录索引次数),使用数据库存储对象等。 有一定效果,不治本,但是对现有架构改动较小。
针对问题3,现有的技术解决方案是对象存储,很多公司会自己维护一套系统来进行小文件存储,国内新浪、七牛做的比较好,可以自己搜索下。现在事实上的标准应该是亚马逊的S3,ceph似乎已死。除开源产品不说(要有心思钻研,要投入较强的技术力量),现有的比较成熟的商业产品有ibm的cleversafe(收购的),emc的ecs(也是收购的。)还有netapp的storagegrid,还有华为的N9000(这个没有软件版)
本论坛ibm推的东西比较多,多说一句cleversafe有软件版本,可以自己下镜像部署在服务器或vmware上,可以免费poc,建议试试看。
收起从应用角度,存储分两种,一种是在线业务存储,一种是文件存储,要具体看场景。
如果是在线业务存储,比较多的使用MySQL,前面套个访问层控制来做分布。
如果是文件存储,基本上自己写个分发策略来做大规模文件存储。
近几年也有开始使用CEPH的,但因为ceph复杂度问题,应用也是有一定场景的。
尝试使用阿里的tair进行存储,hadoop只适合大文件,小文件会造成很多碎片,浪费空间浪费效率,我个人觉得是不是可以考虑对热点小文件进行单独存储,定时同步到分布式文件系统中
收起方向是使用开源产品,不使用集成度高的厂商产品,个人觉得商用企业级nas也可以提高。有没有同僚用过数据分层的开源工具?就像存储分层一样,通过计算或者指定热点来分配不通存储硬件的实现?
收起使用分布式对象存储技术的产品应该可以满足您的扩容需求,记得社区之前介绍过的一款IBM的类似产品,可以参考下:
http://www.aixchina.net/?action-topic-id-253