分布式存储的架构、隐患及解决方法(4)
图24 在无io时,磁盘写入的速度是68MB/s,68MB/s其实也已经达到SATA磁盘平均写入速度的最大值的正常范围.这样,平均每台服务器网络中平均贡献68*8/4=136Mb/s流量. 数据副本的搬迁是一个动态过程.磁盘里的数据副本一定有1/3的数据是主副本,可能会被正常的IO读取到,所以新加入的磁盘也不是全力进行数据搬迁,也和其他磁盘一样,只能用有限的能力应付副本迁移. 测试结果上看,在少量IO业务下测试磁盘写速度为45MB/s,平均每台服务器网络中平均贡献90Mb/s.在无IO的情况下,数据完成重新部署居然需要4.3小时了. 大家一定没有想到吧,因为这次是47块盘共1T的数据搬到1块磁盘上,就像47个人喂1个人吃饭,饭总得一口一口吃,所以增加磁盘的时候,在大部分情况下和网络的速度无关,和磁盘写入的速度直接相关. 上面提过,为了不让副本迁移不影响正常IO,每台服务器可以提供主机网络的5%的带宽,即62.5MB/s,磁盘读写为5MB/s来处理副本的迁移. 3、如果主机和磁盘比大于等于12: 一起重构的磁盘数量=62.5*n/m ?n:服务器的数量 m:磁盘写入速度 4、如果主机和磁盘比小于12: 一起重构的磁盘数量=5*n/m ?n:磁盘的数量 ?m:磁盘写入速度 如果m=5M,n= 57,可以一起写入磁盘=712块 1-712块磁盘,1T数据迁移完成最长需要55.56个小时.可以这样认为,在目前2PB容量的分布式存储,在不影响业务情况下,如果扩容在2PB以下,数据副本迁移1TB需要56个小时. 大家一直在问我,分布式存储的风险在哪里.风险就是因为多副本特性所引起的. 首先不管这个集群有多大,最多可以有n-1台服务器出现故障.一般是3副本,就是允许有2台服务出现故障. 当出现故障的时候,就进行了数据重构,重构副本的时间相对较短,在2P的存储,每T数据恢复需要10分钟,恢复时间是以小时计.但是2台服务器同时出现故障,本身存在的风险就很大了,应尽量避免. 当故障的服务器恢复了,重新加入存储资源池,副本就需要迁移,那恢复的时间需要用天计算.所以当存储的OSD出现故障到完全恢复的时间很长.但在正常情况下,还是能接受的.
因为分布式存储常用的是X86服务器,x86服务器是有正常使用周期,大约是5年.同一批次的服务器的寿命是差不多的,在使用寿命的末期,服务器出现故障的概率是很大的. 1台服务器发生故障,副本重构,可能会是最后一根稻草,导致服务器群的“老太太们”压力发生变化,也出现故障. 一旦发生2台以上的同时故障,存储就会出现严重故障,存储就只能停止服务,运气好可以离线恢复数据,运气不好,副本完全丢失,数据完全不可用了. 大家知道,在资源池里,存储一旦停止服务,整个资源池就瘫痪了.这种情况一定会发生,只是早晚的问题,所以要提前干预,不能让这样的事情发生. 七、解决的办法于是定期更换服务器,别让服务器变成“老太太”,不断补充新鲜血液.但是,更换服务器和扩容不一样,扩容的时候可以一下子增加几十台服务器,用个2天时间就可以静悄悄的完成扩容. 更换服务器的过程是先将服务器退出服务,再增加服务器的过程.原来服务器上有多少数据,就需要搬迁多少数据,比如原来服务器每块有2T数据了,就需要搬迁12*2T的数据.为了确保存储的正常使用,最好只能同时退出n-2台服务器,并增加相应的服务器. 比如3副本,就只能先退出1台服务器,再增加1台服务器.换1台服务器需要2*2=4天时间.最多同时换2台,但风险很大,万一更换的过程中出现1台故障,那这个存储系统就挂了. 所以一台一台更替是最妥当的方法,57台服务器全部替换完成,不停的干,顺利的话,也需要大半年时间,算上节假日1年可能都做不完.这个过程漫长而复杂,充满的变数,却一定是可行的. 当然划小分布式存储的故障域,在一个故障域的服务器减少,对应替代服务器的工作时间相应减少了,风险也相应减小.但是分布式存储是云计算快速发展后对存储性能、容量带来新需求发展起来的. 几百台服务器共享一个存储,运行几千、上万台虚拟机,从这个角度考虑,分布式块存储最好是一个可以无限线性扩容的存储系统.但是就是因为有了上面的问题,只能将存储资源池划分成为一个一个较小的故障域. 这个故障域的大小我们认为在裸容量在2P(有效容量666T)、IOPS在100万次以上是可以满足资源池的需要,即在60台服务器左右. 分布式块存储实际上是来替代所谓高端FCSAN存储的.小集群替代低端小容量的FCSAN在价格上、性能上都没有优势. 如果只是服务器出故障,而磁盘是正常的,还有一种比较快速的人工介入办法.这个办法是一种应急方案的延伸.实现的原理就是利用检测到磁盘故障后15分钟后才启动副本的重建. 如果15分钟内磁盘又恢复了,那在故障时间内原来需要写入的副本是需要追溯的.也就是说在这15分钟内,其实有些副本只写了2个,还有一个1副本原来要写到这个磁盘中的. 如果15分钟内原磁盘恢复了,就将增量数据补充进去,如果15分钟不恢复,就进行副本重构.当然这个时间长短是可以配置,但不是所有的分布式存储系统都有这个功能. 不少存储系统一检测到磁盘或服务器不在线,就会立即启动副本重构,本质上就是没有“追溯”.知道这个原理了,下面的事情就简单了. (编辑:ASP站长网) |