日志盘:通用场景下,一般采用SSD或者NVMe盘做Ceph的日志盘,以便降低写的延时和提高IOPS 。
数据盘:由于数据最终存储到数据盘上,数据盘的个数、容量、性能(转速等)至关重要;另外,一般情况下一个HDD对应一个OSD 。
在系统扩容的过程中,增加存储节点的HDD通常是最常见的选择 。增加HDD一定会带来容量的增加和冗余性的增强,也可能会带来更高的IOPS和吞吐,但会消耗存储节点更高的CPU,内存及网络带宽,而且会带来更高的缓存竞争的可能性 。另外,一般情况下,整存储系统的IO时延会保持不变,不受影响 。
当然,扩容存储系统还存在另外一个选择:即增加存储节点 。增加存储节点会带来更高的容量、吞吐、IOPS以及更强的冗余性,而时延不受影响 。但能够增加节点的个数取决于网络拓扑的限制 。另外,增加加点或者增加HDD通常都会带来暂时的数据再平衡,如果不加控制,可能会影响前端业务 。
3) OSD文件系统的选择:Btrfs VS XFS
XFS由于稳定,成熟,并且更方面表现均衡,成为生产环境下的首选 。Ceph存储系统中另一种文件系统选择是Btrfs 。BTRFS有丰富的特性,如压缩,校验,CopyOnWrite等; 并且,写操作的吞吐量通常更高 。但是它的问题是非常消耗CPU 。可能在不远的将来,Btrfs会成为更多人的选择 。
4)缓存
根据Ceph存储系统的IO路径来看,Cache通常发生在三个地方:Client端,存储节点的OS缓存,存储控制器 。
Client端的缓存: 虽然对不会影响写的性能,但是对读,尤其是顺序读的性能有非常大的提高 。
存储节点的OS缓存: 在没有设置Client端缓存的情况下,会对读性能有提高 。但是如果已经使能了Client端缓存,对读写性能帮助不大 。
存储控制器缓存:对于写性能有很大帮助 。但是缓存本身最好有备用电池支持,否则一旦断电,会导致缓存中的数据丢失 。
5)Journal
一般情况下,采用SSD或者NVMe SSD作为Ceph的Journal盘,采用HDD盘作为数据盘,会提高并发写或者随机写的性能 。但是一旦只存在在Journal盘而没有落到HDD盘的数据超过Journal盘或者分区的大小,性能则会下降到HDD的水平 。一般情况,为每个OSD进程和数据盘,设置10G~20GB的SSD分区作为日志 。
另外,SSD作为Journal盘,对读性能没有帮助 。另外,由于SSD盘会占据硬盘或者PCIe插槽,可能会导致存储密度降低 。
6)HDD
选择硬盘一般考虑以下几个方面:
a) 容量 。单个硬盘的容量越大,通常会带来总容量和存储密度的增加 。但是大容量的单盘的价格往往更贵 。
b) 硬盘本身的缓存 。由于Journal盘及其他缓存机制的存在,通常磁盘本身的缓存容量的意义不大 。
c) 转速 。更高的RPM通常会提高IOPS和吞吐,但是也会增加功率消耗 。高性能的情况下一般考虑15K RPM的硬盘 。
d) SMR 。选择SMR硬盘可以提高单盘的容量,但是写性能可能会下降 。
7) 冗余:副本 VS 纠删码
副本机制,简单来说,就是保存N个完全相同,与原始数据一致的备份 。生产环境下一般选择N=3个副本 。采用副本的好处是数据可以利用多个数据源进行恢复,并且在采用类似条带(stripe)技术的情况下,会提高读性能 。但是对数据进行N个副本的复制,会降低写吞吐,延长写时延,并增加了Cluster网络带宽的使用率 。当然,最大的影响是容量,N=3的情况下导致用户数据的有效容量为物理容量的三分之一 。
另一种冗余机制是纠删码,即把数据分为N个部分以及M个校验码 。相比副本机制,纠删码具有更高的空间使用率,但其代价是更高的I/O时延和更高的CPU使用率,尤其在数据重建时,需要消耗更高的CPU以及网络带宽 。
推荐阅读
- 建设H.265解决方案,如何在linux下对图像做H.265
- 如何对网站进行seo诊断,都包括哪些内容?
- 韩国服务器的安全如何保障
- 未成年人沉迷网络游戏该如何破解,如何破解网游
- 两分钟教你vlog视频如何拍,如何拍摄实景视频
- 中国企业如何应对,品牌如何应对海淘
- 富士康在印度爆雷,2017年富士康会如何
- 一招教你如何查询相机快门次数,佳能如何查看快门次数
- 你也能拍出一部电影,如何拍摄一部电影
- 树莓派从选购到入门一条龙,如何用蓝牙控制树莓派
