Replicated Pool(拷贝型Pool,默认)
-
概述:
这是Ceph的默认存储池类型。它通过生成对象的多份拷贝来确保数据的冗余和高可用性。 -
工作原理:
每个存入的对象(Object)都会被存储为多个副本,包括一个主副本和多个从副本。从副本相当于备份副本,用于在主副本所在的OSD丢失时保证数据不丢失。 -
副本数量:
如果客户端在上传对象时不指定副本数,系统默认为3个副本。在开始存储数据之前,系统会计算出对象的主副本和从副本的位置。数据首先被存储到主副本,然后主副本将数据同步到从副本。所有副本同步完毕后,主副本会通知客户端数据上传成功。 -
空间需求:
这种类型的Pool需要更多的裸存储空间,因为它会存储每个对象的多个副本。但是,它支持所有的Pool操作。
Erasure-coded Pool(纠删码Pool)
-
概述:
这种Pool类型将数据存储为K+M的形式,其中K是数据块的数量,M是编码块的数量,也代表最多可以容忍的数据块丢失数量。 -
工作原理:
每个对象被存储到Ceph集群时会被分成多个数据块进行存储。编码块用于在数据块丢失时恢复数据。这种类型类似于磁盘阵列RAID5,可以在最大化利用存储空间的同时保证数据的可恢复性。 -
空间效率:
与副本Pool相比,纠删码Pool更节约磁盘空间。但是,它更浪费计算资源。例如,存储一个100M的资源,如果使用副本Pool并按3副本计算,实际上需要使用300M的空间。而使用纠删码Pool,如果将100M资源分为25块,并将M指定为2,那么总共只需要约108M的空间(计算公式为100+100/25*2)。 -
限制:
需要注意的是,如果存储RBD镜像(Rados Block Device镜像),则不支持使用纠删码Pool