关于分布式存储,这是你应该知道的(4)
图12 实际生产中估算,SATA 7200转的磁盘,提供的IOPS为60次左右,吞吐量在70MB/s.
这些指标显然是不能满足存储需要的,需要想办法“加速”. 机械磁盘其实也做了很多优化,比如扇区地址的编号不是连续的. 因为磁片转的够快(7200转/分钟即1秒钟转120转,转一圈是8.3毫秒,也就是在读写同一个磁道最大时延是8.3秒),防止磁头的读写取错过了,所以扇区的地址并不是连续的,而是跳跃编号的,比如2:1的交叉因子(1、10、2、11、3、12…..). 同时磁盘也有缓存,具有队列,并不是来一个I/O就读写一个,而是积累到一定I/O,根据磁头的位置和算法完成的.I/O并不是一定是“先到先处理”,而是遵守效率. 加速最好的办法就是使用SSD盘.磁盘的控制部分是由机械部分+控制电路来构成,机械部分的速度限制,使磁盘的性能不可能有大的突破.而SSD采用了全电子控制可以获得很好的性能. SSD是以闪存作为存储介质再配合适当的控制芯片组成的存储设备.目前用来生产固态硬盘的NAND Flash有三种:
SLC成本最高、寿命最长、但访问速度最快,TLC成本最低、寿命最短但访问速度最慢.为了降低成本,用于服务器的企业级SSD都用了MLC,TLC可以用来做U盘. 图13 SSD普及起来还有一点的障碍,比如成本较高、写入次数限制、损坏时的不可挽救性及当随着写入次数增加或接近写满时候速度会下降等缺点. 对应磁盘的最小IO单位扇区,page是SSD的最小单位. 比如每个page存储512B的数据和218b的纠错码,128个page组成一个块(64KB),2048个块,组成一个区域,一个闪存芯片有2个区域组成.Page的尺寸越大,这个闪讯芯片的容量就越大. 但是SSD有一个坏习惯,就是在修改某1个page的数据,会波及到整块.需要将这个page所在的整块数据读到缓存中,然后再将这个块初始化为1,再从缓存中读取数据写入. 对于SSD来说,速度可能不是问题,但是写的次数是有限制的,所以块也不是越大越好.当然对于机械磁盘来说也存在类似问题,块越大,读写的速度就越快,但浪费也越严重,因为写不满一块也要占一块的位置. 不同型号不同厂家的SSD性能差异很大,下面是我们的分布式块存储作为缓存使用的SSD参数:
在1台SRVSAN的服务器配置了一块SSD作为缓存和12块7200转 3T SATA盘,磁盘只提供1200次、1200M的吞出量. 远远小于缓存SSD提供的能力,所以直接访问缓存可以提供很高的存储性能,SRVSAN的关键是计算出热点数据的算法,提高热点数据的命中率. 用高成本的SSD做为缓存,用廉价的SATA磁盘作为容量层. (未完待续) 文章出处:高效运维 (编辑:ASP站长网) |