Ceph集群使用—常用命令
背景知识
ceph中的pool、PG、OSD的关系
Pool每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:副本(replicated)和 纠删码( Erasure Code)
PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略;简单点说就是相同PG内的对象都会放到相同的硬盘上; PG是 ceph的核心概念, 服务端数据均衡和恢复的最小粒度就是PG;
OSD是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程;
关系如下:
- 一个Pool里有很多PG
- 一个PG里包含一堆对象;一个对象只能属于一个PG
- PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型)
下图来区别:
Ceph架构
其架构如下;
常用命令
sudo ceph health 查看健康状况
sudo ceph -s 查看集群状况
sudo ceph osd tree 查看OSD信息
pool
1 | sudo ceph osd pool create lhbpool 128 128 |
创建名为
lhbpool
的pool,这个pool中的pg,pgp都为128;
1 | sudo ceph osd pool get lhbpool pg_num |
获取
pg_num
,或pgp_num
的大小;
1 | sudo ceph osd pool rename rlhbpool lhbpool |
重命名pool
1 | ceph osd pool set-quota test-pool max_objects 100 |
设置允许最大object数量为100
取消配额限制只需要把对应值设为0即可。
1 | ceph osd pool set-quota test-pool max_bytes $((10 * 1024 * 1024 * 1024)) |
设置允许容量限制为10GB
取消配额限制只需要把对应值设为0即可。
1 | sudo ceph osd lspools |
打印pool列表
1 | ceph osd pool delete test-pool test-pool --yes-i-really-really-mean-it |
删除pool,删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要求必须输入两次pool名称,同时加上–yes-i-really-really-mean-it选项。
1 | sudo rados df |
查看pool状态信息
1 | ceph osd pool set/get {pool-name} {key} {value} |
通过上述语法设置获取pool的元数据
1 | ceph osd pool set test-pool size 3 |
设置pool的冗余副本数量为3
Crush MAP 相关
- 获取现有集群的crush map
1 | sudo ceph osd getcrushmap -o crush.map |
为二进制文件,需要反编译;反编译命令为:
crushtool -d crush.map -o crushmap-decompile
- 运用新的crush map
当你修改了crush map后需要编译,如下命令:
1 | crushtool -c crushmap-decompile -o crush.map |
接着设置到集群中,用如下命令:
1 | sudo ceph osd setcrushmap -i crush.map |
Ceph 管理接口 (radosgw-admin)
- 列出所有用户
1 | radosgw-admin metadata list user |
还可以列出桶:radosgw-admin metadata list bucket
- 创建用户
1 | sudo radosgw-admin user create --uid="lhb" --display-name="First User" |
sudo radosgw-admin user create
- 显示用户信息,以及可能存在的子用户和密钥
1 | sudo radosgw-admin user info --uid=testuser |
sudo radosgw-admin user info
- 显示配额子系统统计的用户状态
1 | sudo radosgw-admin user stats --uid=testuser |
sudo radosgw-admin user stats
- 其他功能
1 | user rm 删除用户 |
总结
摘自某处的一个图,是相关命令的总结,如下:
另外还有一个知识树: