天天看点

分布式文件存储|Ceph常用命令来管理和维护集群

作者:leenhem
分布式文件存储|Ceph常用命令来管理和维护集群

Ceph

简介

Ceph是一个分布式文件系统,它使用对象存储来管理数据。Ceph运维是一项非常重要的工作,需要运维人员掌握一些核心命令,以便快速发现和解决问题。本文将介绍ceph运维中常用的命令,同时提供一些注意事项和管理心得。

当使用 Ceph 进行分布式存储时,我们需要使用一些常用的命令来管理和维护集群。以下是一些常见的 Ceph 运维命令:

集群状态查询

ceph status:查看集群状态
ceph health:查看集群健康状态
ceph osd df:查看 OSD 磁盘使用情况
ceph osd tree:查看 OSD 树状图
ceph -s:查看集群状态的摘要信息
ceph osd map {pool name} {object ID}:查找指定 object 所在的 OSD 节点
ceph config show:列出当前集群的配置信息
ceph health detail:查看集群健康状态的详细信息
ceph pg ls:列出所有 PG 及其状态
ceph pg dump --format=json-pretty:以 JSON 格式打印 PG 映射           

数据管理

rados mkpool {pool name}:创建一个新的 pool
rados lspools:列出所有 pool 的名称
rados df:查看 pool 的使用情况和状态
rados ls {pool name}:列出指定 pool 中的所有对象
rados -p {pool name} put {object name} {file name}:将本地文件上传到指定 pool 中
rados -p {pool name} get {object name} {file name}:将指定 pool 的对象下载到本地文件系统中
rados -p {pool name} rm {object name}:删除指定 pool 中的对象           

存储池管理

ceph osd lspools:列出当前 OSD 中所有 pool 的名称和 ID
ceph osd pool create {pool name} {pg num}:创建一个新的 pool,并指定 PG 数量
ceph osd pool rm {pool name} {pool name} --yes-i-really-really-mean-it:删除指定 pool。请谨慎使用该命令
ceph osd pool set {pool name} {key} {value}:设置指定 pool 的属性
ceph osd pool get {pool name} {key}:获取指定 pool 的属性值
ceph osd pool application enable {pool name} {application name}:启用指定 pool 中指定的应用程序           

监控管理

ceph mon stat:查看 Monitor 的状态
ceph mon dump:查看所有 Monitor 的详细信息
ceph mon getmap -o {file name}:将当前 Monitor 映射写入到指定文件中
ceph quorum_status:查看当前集群的 quorum 状态
ceph mon remove {Monitor name}:从 Monitor 集合中删除指定的 Monitor
ceph mon add {new Monitor name}:{IP address}:向集群添加一个新的 Monitor 节点
ceph auth get {client name}:查看指定客户端的认证信息           

RADOSGW管理

radosgw-admin user create --uid={user ID} --display-name={user name} --email={email address}:创建 RADOSGW 用户
radosgw-admin user modify --uid={user ID} --display-name={new name} --email={new email}:修改指定 RADOSGW 用户的信息
radosgw-admin user rm --uid={user ID}:删除指定的 RADOSGW 用户
radosgw-admin bucket list --uid={user ID}:列出指定用户的所有 bucket
radosgw-admin bucket rm --uid={user ID} --bucket={bucket name}:删除指定用户的指定 bucket           

集群管理

systemctl start ceph-mon@{Monitor name}:启动指定 Monitor 服务
systemctl stop ceph-mon@{Monitor name}:停止指定 Monitor 服务
ceph osd crush reweight {OSD ID} {weight}:重新分配 OSD 负载
ceph quorum_status:查看当前集群的 quorum 状态
ceph tell osd.* injectargs --osd-data /path/to/new/data:为 OSD 添加新的参数并重启 OSD 进程
ceph mgr module enable {module name}:启用指定的 MGR 模块
ceph mgr dump:查看 MGR 的状态信息           

节点管理

ssh {node ip address}:登陆指定节点
systemctl start ceph-osd@{OSD ID}:启动指定 OSD 服务
systemctl stop ceph-osd@{OSD ID}:停止指定 OSD 服务
systemctl restart ceph-osd@{OSD ID}:重启指定 OSD 服务
ceph-disk prepare {disk}:准备一个磁盘以被用于 OSD
ceph-disk activate {disk}:激活 OSD 使用的磁盘
ceph-disk zap {disk}:将 OSD 使用的磁盘清空           

故障排除

ceph daemon {daemon-type}.{daemon-id} log {level}:设置指定的 daemon 的日志级别
ceph tell osd.* injectargs --osd-debug {debug-level}:启用 OSD 的 debug 日志
ceph tell mon.* injectargs --mon-debug {debug-level}:启用 Monitor 的 debug 日志
ceph health detail:查看集群健康状态的详细信息
ceph pg repair {PG ID}:修复指定 PG
ceph pg scrub {PG ID}:对指定 PG 进行 scrub 操作
ceph pg deep-scrub {PG ID}:对指定 PG 进行 deep-scrub 操作           

这些命令都可以协助你更好的管理ceph集群。同时,要想做好ceph运维工作,还需要掌握一定的Linux基础知识和Ceph理论知识。此外,在进行ceph运维时,需要特别注意以下事项:

  • 集群安全:ceph集群管理涉及到大量数据,因此安全非常重要。必须保证集群的安全性。
  • 数据备份:备份是数据安全的关键。必须定期备份ceph集群中的关键数据,以备不时之需。
  • 维护文档:维护ceph集群运维文档,随时记录问题和解决方案,这有助于快速排除故障和提高工作效率。

在进行ceph运维工作时,还需要具备一定的管理心得。以下是一些管理心得:

  • 更好的了解ceph集群:ceph集群是一个分布式系统,要想更好地管理它,需要对其有深入的了解。通过学习ceph理论知识、参加培训等方式,可以更好的了解ceph集群的运行机制、架构、组件等信息。
  • 学会利用日志:ceph集群中存在大量的日志信息,以分析问题和确定原因非常有用。掌握如何利用日志信息来监控和调试集群是非常重要的。
  • 建立良好的沟通渠道:ceph运维是团队合作的过程,建立良好的沟通渠道可以更好地协作和解决问题,提高工作效率。

总之,ceph运维是一项非常重要的工作,需要掌握一些核心命令、注意事项以及管理心得。希望本文可以为ceph运维人员的工作提供一些帮助,欢迎收藏。

继续阅读