介绍
Cancer Genome Collaboratory 是一个为癌症研究而设计的云计算环境,也是ICGC
项目的全基因组数据存储库。我们使用OpenStack
和Ceph
来提供一个可扩展和可靠的基础设施。在这种情况下,通过升级来维护软件是我们最重要且最耗时的任务。无论您是在追求新功能、BUG
修复、安全补丁还是可支持性,我们似乎总是在计划下一次升级。
关于我们的Ceph环境
我们的Ceph
集群诞生于2014年,建立在Ceph Giant
的基础上,期间升级到Hammer
,然后升级到Ceph Jewel
,今年又升级到Luminous
。直到Luminous
为止,我们的对象存储守护程序(OSD
)一直使用当时唯一可用的OSD
后端文件存储:XFS
和Journal
以及3副本来实现数据冗余。多年来,我们的OSD
数量一直在稳定增长,为了使每TB
的利用价值最大化,并在数年内分散我们的成本,这样,只有在预测容量瓶颈时才会购买硬件。
我们目前有37个存储节点,每个存储节点有36个物理磁盘,总共有1332个OSD
。如前所述,随着时间的推移,购买节点意味着我们的硬盘大小从4 TB到12 TB不等。我们的最小节点为144 TB,而最大节点为432 TB。每个存储节点都有2个独立的SSD用于操作系统,256 GB的RAM
,双核至强CPU
和40 Gbps的网络功能(通过使用vlan
来划分流量类型(Ceph Public
,cluster
等))。
我们的Ceph
集群的主要用来存储那些非常大的基因组文件,这些文件使用RADOS
网关对象存储API
供研究人员使用。我们还使用Cinder
为OpenStack
环境提供了卷支持,但它不到Ceph
集群总利用率的1%。
Ceph Luminous中的Bluestore
Bluestore
是从Ceph Luminous
版本开始支持的新的默认存储后端,它建议将写入性能提高2倍,在某些情况下,通过消除Filestore Journal
和XFS
分区上发生的双重写入损失,有时可以提高写入性能。最值得注意的是,Bluestore
删除了POSIX
文件系统存储Ceph
数据的要求。架构差异见下图。
先决条件
由于Bluestore
首次在Luminous
版本中得到官方支持,我们需要从Ceph Jewel
升级到Luminous
。我们使用Ubuntu16.04
和该发行版的官方Ceph
包,所以这是一个直接的升级过程:添加了对应版本仓库,并在我们的mon
,radosgw
和OSD
节点上升级Ceph
软件包。
迁移方式
数据清空——重建为Bluestore
——回填均衡数据!
从Filestore
到Bluestore
的转换不能在转换节点上有数据且提供服务的情况下进行,因此我们的方法是先将存储节点的数据清空,销毁OSD
,然后使用重新准备Bluestore
类型的OSD
,再从群集中重新填充数据。对群集中的每个存储节点进行数据清空并重复此操作。根据您的Ceph
架构,您可以并行地操作几个存储节点,以减少总的迁移时间。我们将一次迁移2-3个存储节点,每个节点位于不同的机架中(我们的故障域单位为机架),并在删除以及填充数据过程中尽量保持在20%的“misplaced objects
”以下。
为了使此操作成功,您必须确保集群有足够的可用空间,以应对当一个节点必须将其所有数据迁移到集群的其余节点