1

我在自己的虚拟机上搭建了一个cephfs集群,然后想用这个集群来存储一批镜像数据(共1.4G,每个镜像8KB左右)。集群存储两个副本,总共有12G的可用空间。但是当我在里面存储数据时,系统提示可用空间不足。如何解决?集群的详细信息如下:

集群信息:

簇:

id:     891fb1a7-df35-48a1-9b5c-c21d768d129b

health: HEALTH_ERR

        1 MDSs report slow metadata IOs

        1 MDSs report slow requests

        1 full osd(s)

        1 nearfull osd(s)

        2 pool(s) full

        Degraded data redundancy: 46744/127654 objects degraded (36.618%), 204 pgs degraded

        Degraded data redundancy (low space): 204 pgs recovery_toofull

        too many PGs per OSD (256 > max 250)

        clock skew detected on mon.node2, mon.node3

服务:

mon: 3 daemons, quorum node1,node2,node3

mgr: node2(active), standbys: node1, node3

mds: cephfs-1/1/1 up  {0=node1=up:active}, 2 up:standby

osd: 3 osds: 2 up, 2 in

数据:

pools:   2 pools, 256 pgs

objects: 63.83k objects, 543MiB

usage:   10.6GiB used, 1.40GiB / 12GiB avail

pgs:     46744/127654 objects degraded (36.618%)

         204 active+recovery_toofull+degraded

         52  active+clean

Cephfs 空间使用:

[root@node1 0]# df -hT 文件系统类型 容量已用 可用已用%挂载点</p>

/dev/mapper/nlas-root xfs 36G 22G 14G 62% /

devtmpfs devtmpfs 2.3G 0 2.3G 0% /dev

tmpfs tmpfs 2.3G 0 2.3G 0%

/dev/shm

tmpfs tmpfs 2.3G 8.7M 2.3G 1%/运行

tmpfs tmpfs 2.3G 0 2.3G 0%

/sys/fs/cgroup

/dev/sda1 xfs 1014M 178M 837M 18% /boot

tmpfs tmpfs 2.3G 28K 2.3G 1%

/var/lib/ceph/osd/ceph-0

tmpfs tmpfs 471M 0 471M 0%

/运行/用户/0

192.168.152.3:6789,192.168.152.4:6789,192.168.152.5:6789:/ceph 12G 11G 1.5G 89% /mnt/test

头显 OSD:

[root@node1 mnt]# ceph osd pool ls

cephfs_data

cephfs_metadata

[root@node1 mnt]# ceph osd pool 获取 cephfs_data 大小

尺寸:2

[root@node1 mnt]# ceph osd pool 获取 cephfs_metadata 大小

尺寸:2

ceph.dir.layout:

[root@node1 mnt]# getfattr -n ceph.dir.layout /mnt/test

getfattr:从绝对路径名中删除前导“/”

# 文件:mnt/test

ceph.dir.layout="stripe_unit=65536 stripe_count=1 object_size=4194304 pool=cephfs_data"

4

2 回答 2

0

存储小文件时,需要注意最小分配大小。在Nautilus发布之前,SSD 默认为 16k,HDD 为 64k,但在新的 Ceph Pacific中,两者的默认最小分配已调整为 4k。

我建议你使用太平洋,或者如果你安装的版本是手动调整八达通到相同的数字。

如果您的文件小于最小分配大小的倍数,您还希望使用复制(而不是擦除编码),因为 EC 的块将使用相同的最小分配,否则会浪费松弛空间。您已经通过使用复制在这里做出了正确的选择,我只是在这里提到它,因为您可能会被 EC 吹捧的节省空间的属性所吸引——不幸的是,这不适用于小文件。

于 2021-11-25T19:08:58.517 回答
0

您需要bluestore_min_alloc_size默认设置为 4096,其值为 64kb

[osd]
    bluestore_min_alloc_size = 4096
    bluestore_min_alloc_size_hdd = 4096
    bluestore_min_alloc_size_ssd = 4096
于 2021-11-28T13:53:14.347 回答