其他问题 =================================================================================================================== 一、pg_num数量的选择 1、通过 https://ceph.com/pgcalc/ 计算 2、若少于5个OSD, 设置pg_num为128 5~10个OSD,设置pg_num为512 10~50个OSD,设置pg_num为4096 超过50个OSD,可以参考pgcalc计算 total PGs = ((Total_number_of_OSD * 100) / max_replication_count) / pool_count 在更改pool的PG数量时,需同时更改PGP的数量。PGP是为了管理placement而存在的专门的PG,它和PG的数量应该保持一致。 如果你增加pool的pg_num,就需要同时增加pgp_num,保持它们大小一致,这样集群才能正常rebalancing。下面介绍如何 修改pg_num和pgp_num 二、计算所有PG数量 ceph pg dump 2>/dev/null | egrep '^[0-9]+\.[0-9a-f]+\s' | wc -l 或者 ceph pg ls | grep -v '^pg_stat' | wc -l 或者 for i in `ceph osd pool ls`;do ceph pg ls-by-pool $i | grep -v '^pg_stat' | wc -l;done | awk '{a+=$1} END{print a}' 三、查看pg于osd的映射关系 ceph pg dump | grep '1.fc' | awk '{print $1,$15}' ceph pg dump pgs|grep ^1|awk '{print $1,$2,$15}' 四、osd状态 down osd进程停止 up osd进程处于运行状态 in osd在集群内 out osd不在集群内 五、Linux 系统针对ceph集群的设置 1、内核PID个数配置 具有大量OSD(例如,大于20)的主机可能产生大量线程,尤其是在恢复和重新平衡期间。许多Linux内核默认为相对较小的最大线程 数(例如,32k)。如果在具有大量OSD的主机上启动OSD时遇到问题,请考虑将kernel.pid_max设置为更多线程。理论最大值为4,194,303 个线程。例如,您可以将以下内容添加到/etc/sysctl.conf文件中: kernel.pid_max = 4194303 五、块存储 1、在管理节点上,使用ceph-deploy在ceph-client节点上安装Ceph ceph-deploy install node5 2、在管理节点上,使用ceph-deploy将Ceph配置文件和ceph.client.admin.keyring复制到ceph-client ceph-deploy --overwrite-conf config push node5 3、创建一个存储池 (可省略) ceph osd pool create block 6 4、在管理节点上,使用rbd工具初始化RBD使用的池 rbd pool init block 5、在ceph-client节点上,创建一个块设备映像 rbd create foo --size 4096 --image-feature layering -p block 删除镜像:rbd rm block/block 查看镜像:rbd info block/foo 注:注意到上面的rbd info显示的RBD镜像的format为2,Format 2的RBD镜像支持RBD分层, 是实现Copy-On-Write的前提条件。 6、在ceph-client节点上,将映像映射到块设备 rbd map block/foo 7、通过在ceph-client节点上创建文件系统来使用块设备 mkfs.ext4 -m0 /dev/rbd/block/foo 8、挂载设备 mount /dev/rbd/block/foo /root/ceph-rbdblock-foo/ mount /dev/rbd/block/foo /root/ceph-rbdblock-foo/ 9、块设备删除 umount /dev/rbd0 删除/etc/ceph/rbdmap和/etc/fstab或/etc/rc.local中的相关内容 rbd unmap /dev/rbd0 rbd rm yjk01 --pool vms 10、块设备自动挂载 /usr/bin/rbdmap是一个shell脚本,可以开机自动映射挂载块设备,关机自动卸载取消映射的操作。此脚本可以有rbdmap.service 服务脚本进行触发。rbdmap的配置文件为 /etc/ceph/rbdmap,此配置文件的路径也可以由环境变量 RBDMAPFILE 配置。 配置文件格式:IMAGESPEC RBDOPTS IMAGESPEC:格式是PoolName/ImageName,如果只有ImageName则PoolName默认是rbd RBDOPTS:传入rbd map命令的参数 示例: /etc/ceph/rbdmap Block/foo01 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring /etc/fstab /dev/rbd/Block/foo01 /Docker-Data ext4 noauto 0 0 注:最好加上 noauto (或者 nofail )挂载选项。这样可防止 init 系统过早地挂载设备——甚至早于相应设备存在时。 注:CephFS相对于块存储和对象存储还不够稳定。 确保Ceph存储群集正在运行并处于活动+清理状态。另外,确保至少有一个Ceph Metadata Server正在运行。MDS服务在没有创建存储池 和文件系统之前不会处于活跃状态。 1、一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。接下来,我们先创建两个存储池。 ceph osd pool create cephfs_data 64 ceph osd pool create cephfs_metadata 64 2、创建文件系统 ceph fs new cephfs cephfs_metadata cephfs_data 命令格式:fs new {--force} {--allow-dangerous-metadata-overlay} 3、查看文件系统状态 ceph fs ls 4、客户端挂载使用CephFS 1、Kernel内核驱动:Linux内核从2.6.34版本开始加入对CephFS的原生支持 mount -t ceph 10.53.50.201:6789:/ /root/ceph-fs -o name=admin,secretfile=/etc/ceph/admin.secret mount -t ceph 10.53.50.201:6789:/ /root/ceph-fs -o name=admin,secret=AQD/6ShariweMRAAkc1xN/H0ocAlpjp09z5blw== 注:也可以将挂载写入配置文件 使用du -h查看是否挂载 2、使用 FUSE 工具将 Ceph FS 挂载为用户空间文件系统 安装ceph-fuse.x86_64工具 yum install ceph-fuse.x86_64 挂载文件系统 ceph-fuse -m 10.53.50.201:6789 /root/ceph-fs-userspace # LRU 最少使用算法。一个竖着的数据结构,每次查询缓存,都会将节点中数据移动到顶部,很少使用的数据就会下沉到底部,通常情况下,新数据插入列表头部,缓存命中,数据移动到头部,数据满,移除底部的数据。此参数配置,LRU 算法中,新的缓存插入点设置,默认值为0.7 mds cache mid 0.7