1. 存储池的类型副本池 replicated数据按照指定副本数量存储默认为3副本。纠删码池: erasure相比于副本池而言更加节省磁盘空间。有点类似于RAID5。在实际工作中推荐大家使用副本池。池管理的官方文档:https://docs.ceph.com/en/squid/rados/operations/pools/2.增一.创建存储池流程1.创建存储池[rootceph141 ~]# ceph osd pool create pool1poolpool1created[rootceph141 ~]# ceph osd pool ls.mgr pool1[rootceph141 ~]#2.声明存储池存储池创建后要申明否则ceph -s会报错声明存储池[rootceph141 ~]# rbd pool init pool1[rootceph141 ~]# ceph osd pool ls detailpool1.mgrreplicated size3min_size2crush_rule0object_hash rjenkins pg_num1pgp_num1autoscale_mode on last_change30flags hashpspool stripe_width0pg_num_max32pg_num_min1application mgr read_balance_score9.09pool6pool1replicated size3min_size2crush_rule0object_hash rjenkins pg_num32pgp_num32autoscale_mode on last_change339lfor0/0/331 flags hashpspool,selfmanaged_snaps stripe_width0application rbd read_balance_score2.81[rootceph141 ~]#3.查一.查看存储池1.查看存储池列表[rootceph141 ~]# #查看存储池列表[rootceph141 ~]# ceph osd pool ls.mgr pool1[rootceph141 ~]#2.查看存储池及其编号[rootceph141 ~]# #查看存储池编号[rootceph141 ~]# ceph osd lspools1.mgr6pool1[rootceph141 ~]#3.查看存储池的详细信息[rootceph141 ~]# ceph osd pool ls detailpool1.mgrreplicated size3min_size2crush_rule0object_hash rjenkins pg_num1pgp_num1autoscale_mode on last_change30flags hashpspool stripe_width0pg_num_max32pg_num_min1application mgr read_balance_score9.09pool6pool1replicated size3min_size2crush_rule0object_hash rjenkins pg_num32pgp_num32autoscale_mode on last_change339lfor0/0/331 flags hashpspool,selfmanaged_snaps stripe_width0application rbd read_balance_score2.81[rootceph141 ~]#4.查看存储池利用率统计信息[rootceph141 ~]# ceph df[rootceph141 ~]# rados df5.查看池的i/o信息[rootceph141 ~]# ceph osd pool statspool .mgrid1nothing is going on pool pool1id6nothing is going on[rootceph141 ~]# ceph osd pool stats pool1pool pool1id6nothing is going on[rootceph141 ~]#二、查看存储池中的文件1.查看存储池中的文件[rootceph141 ~]# rados ls -p pool1rbd_info rbd_trash[rootceph141 ~]#2.查看存储池文件的状态信息[rootceph141 ~]# rados -p pool01 stat sys.txtpool01/sys.txt mtime2026-10-15T11:29:48.0000000800, size283[rootceph141 ~]#3.查看存储池中文件PG的副本在哪些osd上[rootceph141 ~]# ceph osd map pool01 sys.txtosdmap e145 poolpool01(3)objectsys.txt-pg3.486f5322(3.2)-up([2,8,5], p2)acting([2,8,5], p2)4.改1.修改存储池的配置参数[rootceph141 ~]# ceph osd pool set pool05 size 2setpool6size to2[rootceph141 ~]#2…修改存储池的名称[rootceph141 ~]# ceph osd pool rename pool05 pool5poolpool05renamed topool5[rootceph141 ~]#5.删1.删除存储池1.删除存储池里面的文件[rootceph141 ~]# rados -p pool01 rm sys.txt[rootceph141 ~]#[rootceph141 ~]# rados -p pool01 ls[rootceph141 ~]#[rootceph141 ~]# ceph osd map pool01 sys.txtosdmap e152 poolpool01(3)objectsys.txt-pg3.486f5322(3.2)-up([2,8,5], p2)acting([2,8,5], p2)[rootceph141 ~]#2.删除存储池[rootceph141 ~]# ceph osd pool delete pool01 pool01 --yes-i-really-really-mean-it2.删除存储池的两种保护机制1.删除存储池的机制概述一旦一个存储池被删除那么该存储池的所有数据都会被删除且无法找回。因此为了安全起见ceph有存储池保护机制ceph支持两种保护机制:“nodelete和mon_allow_pool_delete”- nodelete: 一旦一个存储池被打上该标记则意味着存储池不可被删除默认值为false表示可以被删除。true不可以删除- mon_allow_pool_delete: 告诉所有mon组件可以删除存储池。 默认值为false表示不可以被删除。 true 可以删除生产环境中为了安全起见建议大家将存储池设置为nodelete的属性为turemon_allow_pool_delete的值为false。nodelete’和’mon_allow_pool_delete’任意一种机制都具有一票否决权如果想要删除一个存储池2者都得允许删除这就是ceph的存储池保护机制。2.查看参数[rootceph141 ~]# ceph osd pool get pool5 nodeletenodelete:false[rootceph141 ~]# ceph config get mon mon_allow_pool_delete3.调整参数nodeleteceph osd poolset存储池 nodeletetruemon_allow_pool_deleteceph tell mon.* injectargs--mon_allow_pool_deletetrue4.删除存储池[rootceph141 ~]# ceph osd pool delete pool01 pool01 --yes-i-really-really-mean-it6.存储池的pgpgpsizemin_size数量配置参考链接:https://docs.ceph.com/en/squid/rados/operations/placement-groups/https://docs.ceph.com/en/squid/rados/operations/placement-groups/#choosing-number-of-placement-groups1.官方推荐合理设置PG数量OSD数量 * 100----------------- — PG数量pool存储池的size假设你有9块磁盘则配置如下9*100------- ---- 300PG3但是得到的结果是300官方建议是2的次方和300比较接近的是256因此集群的合理PG数量为256。比如我们一个存储池默认32个pG则整个ceph集群最多可以支持300pG/32个存储池。如果空间不够就扩容主机然后扩容osd磁盘按照之前部署集群时候的方法不要想着优化不够就加 机器加磁盘。2.当autoscale_mode开启式修改pg的数量时会自动变会默认的pg数量32不推荐生产上修改测试1.调整pg数量[rootceph141 ~]# ceph osd pool set 存储池 pg_num 2setpool2pg_num to22.查看 ceph osd poollsdetail3.关闭autoscale_mode模式再次修改pg和pgp数量[rootceph141 ~]# ceph osd pool set 存储池 pg_autoscale_mode off查看 ceph osd poollsdetail7.rbd存储池的资源配额实战ceph集群官方支持基于对象存储数量和数据存储的大小两种方式限制存储资源配额。对象存储数量 限制最多存储多少object数据存储的大小 限制最多存储多少大小官网连接:https://docs.ceph.com/en/latest/rados/operations/pools/#setting-pool-quotas1.创建存储池[rootceph141 ~]# ceph osd pool create pool2 32 32 --size 3 --autoscale_mode offpoolpool2created2.查看资源限制[rootceph141 ~]# ceph osd pool get-quota pool2quotasforpoolpool2:max objects: N/A max bytes:N/A#什么都没有限制[rootceph141 ~]#3.限制存储池最大上限有3w个对象最大存储10M[rootceph141 ~]# ceph osd pool set-quota pool2 max_bytes 10485760set-quota max_bytes10485760forpool pool2[rootceph141 ~]# ceph osd pool set-quota pool2 max_objects 30000set-quota max_objects30000forpool pool2[rootceph141 ~]#两个条件满足一个都无法存数据。4.验证往存储池存数据超过10M省略就会发现超过条件限制就存不进去了5.清除资源限制[rootceph141 ~]# ceph osd pool set-quota pool2 max_bytes 0set-quota max_bytes0forpool pool2[rootceph141 ~]# ceph osd pool set-quota pool2 max_objects 0set-quota max_objects0forpool pool2[rootceph141 ~]#