分布式存储的架构、隐患及解决方法
图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天时间就可以静悄悄的完成扩容. (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |