1 PG介绍
pg的全称是placement group,中文译为放置组,是用于放置object的一个载体,pg的创建是在创建ceph存储池的时候指定的,同时跟指定的副本数也有关系,比如是3副本的则会有3个相同的pg存在于3个不同的osd上,pg其实在osd的存在形式就是一个目录,可以列出来看下:
[root@abc ~]# ll /var/lib/ceph/osd/ceph-2/current/total332drwxr-xr-x 2 root root 32 Sep 19 15:27 1.11_head
drwxr-xr-x 2 root root 98 Sep 21 15:12 1.14_head
drwxr-xr-x 2 root root 83 Sep 21 14:12 1.1f_head
drwxr-xr-x 2 root root 98 Sep 21 18:43 1.24_head
drwxr-xr-x 2 root root 6 Sep 21 18:43 1.24_TEMP
drwxr-xr-x 2 root root 32 Sep 19 15:27 1.25_head
drwxr-xr-x 2 root root 164 Sep 21 15:14 1.2d_head
drwxr-xr-x 2 root root 32 Sep 19 15:27 1.2_head
drwxr-xr-x 2 root root 98 Sep 21 15:15 1.34_head
这里只列出来一部分,可以看到有1.24这样开头的,这其实就是pg的id,前面的1表示这个pg是对应哪个存储池的,存储池id可以通过ceph df看到:
[root@u131Oi ~]# ceph dfGLOBAL:
SIZE AVAIL RAW USED%RAW USED
10704G 9808G 896G8.37POOLS:
NAME ID USED%USED MAX AVAIL OBJECTS
volumes1 116M 0 3059G 46images2 29218M 0.92 3059G 3669backups3 0 0 3059G 0vms4 269G 8.09 3059G 103678snapshots5 0 0 3059G 0gnocchi6 394M 0.01 3059G 23310
说明该pg是属于volumes存储池的,后面的24是用于区分同个池中的不同的pg的,两者结合起来就作为pg的id了,crush map通过pgid可以计算出该pg是分布在哪组osd上的,可以通过如下命令查看pg分布于哪些osd上:
[root@abc ~]# ceph pg map 1.24osdmap e1008 pg1.24 (1.24)