Ceph常用命令
目录
【1、环境准备】
【2、部署管理】
【3、集群扩容】
【4、用户管理】
【5、密钥环管理】
【6、块设备管理】
【7、快照管理】
【8、参考链接】
简要说明:
最近心血来潮,对分布式存储感兴趣,听说Ceph不错,查看Ceph中文官方文档,发现讲解得非常详细,为了以后方便查找相关命令,决定整理一下Ceph的常用命令,以下所有内容来源于官方文档。只为方便自己查找、学习,未经验证。
【1、环境准备】
#1.1 ceph-deploy 管理节点]
#把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy 。
#1、添加 release key :
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
#2、添加Ceph软件包源,(Ceph稳定版 10.2 jewel, 12.2 luminous)
#echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
echo deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
#3、更新仓库并安装 ceph-deploy :
sudo apt-get update && sudo apt-get install ceph-deploy
#*创建部署用户(已有)
#ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。建议在集群内的所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,但不要用 “ceph” 这个名字。全集群统一的用户名可简化操作。
#允许无密码ssh登录
#因为 ceph-deploy 不支持输入密码,你必须在管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对。生成 SSH 密钥对,但不要用 sudo 或 root 用户。提示 “Enter passphrase” 时,直接回车,口令即为空:
#在管理节点上生成秘钥对
ssh-keygen
#把公钥拷贝到各 Ceph 节点
ssh-copy-id {username}@node1
ssh-copy-id {username}@node2
ssh-copy-id {username}@node3
#修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点,简化了 ssh 和 scp 的用法
Host node1
Hostname node1
User {username}
Host node2
Hostname node2
User {username}
Host node3
Hostname node3
User {username}
#1.2 ceph所有节点和管理节点安装]
#管理节点必须能够通过 SSH 无密码地访问各 Ceph 节点,部署的用户必须有无密码使用 sudo 的权限
#ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。建议在集群内的所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,但不要用 “ceph” 这个名字。全集群统一的用户名可简化操作。
#安装NTP(所有节点)
sudo apt-get install ntp
#访问:<http://www.pool.ntp.org/zone/cn>,获取中国区公用时间同步服务器。如:
server 0.cn.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
#将这三个服务器添加到/etc/ntp.conf,删除文件中原有的:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
#再执行下面的命令手工从服务器同步并启动ntp服务:
sudo ntpdate 0.cn.pool.ntp.org
sudo hwclock -w
sudo systemctl enable ntpd.service
sudo systemctl start ntpd.service
#安装SSH Server(所有节点)
sudo apt-get install openssh-server
#防火墙规则
#Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信。测试时可关闭防火墙。
【2、部署管理】
#创建目录,用于保存 ceph-deploy 生成的配置文件和密钥对。ceph-deploy 会把文件输出到当前目录,确保在此目录下执行 ceph-deploy 。如果是用普通用户登录的,不要用 sudo 运行 ceph-deploy ,因为它不会在远程主机上调用所需的 sudo 命令。
mkdir my-cluster
cd my-cluster
#2.1清除环境、回到初始状态
#如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
#ceph-deploy purgedata {ceph-node} [{ceph-node}]
#ceph-deploy forgetkeys
ceph-deploy purgedata node1 node2 node3
ceph-deploy forgetkeys
#用下列命令可以连 Ceph 安装包一起清除
#如果执行了 purge ,你必须重新安装 Ceph 。
#ceph-deploy purge {ceph-node} [{ceph-node}]
ceph-deploy purge node1 node2 node3
#2.2创建集群
#在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy 执行如下步骤。
#初始化安装moniter所在节点node1
#ceph-deploy new {initial-monitor-node(s)}
ceph-deploy new node1
#把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:osd pool default size = 2
sudo vi /etc/ceph/ceph.conf
#安装 Ceph 其他节点。
#ceph-deploy install {ceph-node} [{ceph-node} ...]
ceph-deploy install admin-node node1 node2 node3
#配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial
#完成上述操作后,当前目录里应该会出现这些密钥环:
#{cluster-name}.client.admin.keyring
#{cluster-name}.bootstrap-osd.keyring
#{cluster-name}.bootstrap-mds.keyring
#{cluster-name}.bootstrap-rgw.keyring
#添加两个OSD
#为了快速地安装,快速入门中把目录而非整个硬盘用于 OSD 守护进程。
ssh node2
sudo mkdir /var/local/osd2
exit
ssh node3
sudo mkdir /var/local/osd3
exit
#再从管理节点执行 ceph-deploy 来准备 OSD
#ceph-deploy osd prepare {ceph-node}:/path/to/directory
ceph-deploy osd prepare node2:/var/local/osd2 node3:/var/local/osd3
#最后激活 OSD
#ceph-deploy osd activate {ceph-node}:/path/to/directory
ceph-deploy osd activate node2:/var/local/osd2 node3:/var/local/osd3
#用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,
#这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。
#ceph-deploy admin {admin-node} {ceph-node}
ceph-deploy admin admin-node node1 node2 node3
#确保你对 ceph.client.admin.keyring 有正确的操作权限。
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
#检查集群的健康状况。
ceph health
【3、集群扩容】
#一个基本的集群启动并开始运行后,下一步就是扩展集群。在 node1 上添加一个 OSD 守护进程和一个元数据服务器。然后分别在 node2 和 node3 上添加 Ceph Monitor ,以形成 Monitors 的法定人数。
#3.1添加 OSD
#你运行的这个三节点集群只是用于演示的,把 OSD 添加到 monitor 节点就行。
#在node1上添加OSD目录
ssh node1
sudo mkdir /var/local/osd1
exit
#然后,从 ceph-deploy 节点准备 OSD
#ceph-deploy osd prepare {ceph-node}:/path/to/directory
ceph-deploy osd prepare node1:/var/local/osd1
#最后,激活 OSD
#ceph-deploy osd activate {ceph-node}:/path/to/directory
ceph-deploy osd activate node1:/var/local/osd1
#一旦你新加了OSD,Ceph 集群就开始重均衡,把归置组迁移到新 OSD 。
#可以用下面的 ceph 命令观察此过程:
ceph -w
#你应该能看到归置组状态从 active + clean 变为 active ,还有一些降级的对象;
#迁移完成后又会回到 active + clean 状态( Control-C 退出)。
#3.2添加元数据服务器
#至少需要一个元数据服务器才能使用 CephFS ,
#执行下列命令创建元数据服务器:
#ceph-deploy mds create {ceph-node}
ceph-deploy mds create node1
#Note 当前生产环境下的 Ceph 只能运行一个元数据服务器。
#你可以配置多个,但现在还不会为多个元数据服务器的集群提供商业支持。
#3.3添加 RGW 例程
#要使用 Ceph 的 Ceph 对象网关组件,必须部署 RGW 例程。
#用下列方法创建新 RGW 例程:
#ceph-deploy rgw create {gateway-node}
ceph-deploy rgw create node1
#Note 这个功能是从 Hammer 版和 ceph-deploy v1.5.23 才开始有的。
#RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:
[client]
rgw frontends = civetweb port=80
#3.4添加 MONITORS
#Ceph 存储集群需要至少一个 Monitor 才能运行。
#为达到高可用,典型的 Ceph 存储集群会运行多个 Monitors,
#这样在单个 Monitor 失败时不会影响 Ceph 存储集群的可用性。
#Ceph 使用 PASOX 算法,此算法要求有多半 monitors,即 1 、3、5形成法定人数。
#新增两个监视器到 Ceph 集群。
#ceph-deploy mon add {ceph-node}
ceph-deploy mon add node2 node3
#新增 Monitor 后,Ceph 会自动开始同步并形成法定人数。
#你可以用下面的命令检查法定人数状态:
ceph quorum_status --format json-pretty
#Tip 当你的 Ceph 集群运行着多个 monitor 时,
#各 monitor 主机上都应该配置 NTP ,
#而且要确保这些 monitor 位于 NTP 服务的同一级。
#3.5存入/检出对象数据
#要把对象存入 Ceph 存储集群,客户端必须做到:
#指定对象名
#指定存储池
#Ceph 客户端检出最新集群运行图,用 CRUSH 算法计算出如何把对象映射到归置组,
#然后动态地计算如何把归置组分配到 OSD 。
#要定位对象,只需要对象名和存储池名字即可,例如:
#ceph osd map {poolname} {object-name}
#练习:定位某个对象。我们先创建一个对象,
#用 rados put 命令加上对象名、一个有数据的测试文件路径、并指定存储池。例如:
echo {Test-data} > testfile.txt
#rados put {object-name} {file-path} --pool=data
rados put test-object-1 testfile.txt --pool=data
#为确认 Ceph 存储集群存储了此对象,可执行:
rados -p data ls
#现在,定位对象:
#ceph osd map {pool-name} {object-name}
ceph osd map data test-object-1
#Ceph 应该会输出对象的位置,例如:
#osdmap e537 pool 'data' (0) object 'test-object-1' -> pg 0.d1743484 (0.4) -> up [1,0] acting [1,0]
#用``rados rm`` 命令可删除此测试对象,例如:
rados rm test-object-1 --pool=data
#随着集群的运行,对象位置可能会动态改变。
#Ceph 有动态均衡机制,无需手动干预即可完成。
【4、用户管理】
#使用默认密钥环文件查看ceph集群健康状况
ceph health
#使用指定密钥环文件查看ceph集群健康状况
ceph -n client.admin --keyring=/etc/ceph/ceph.client.admin.keyring health
#列出ceph 集群中所有用户信息
ceph auth list
#单独获取client.admin用户信息
#ceph auth get {TYPE.ID}
ceph auth get client.admin
#获取用户的auid 和key,以及授权信息Caps(能力)
#ceph auth export {TYPE.ID}
ceph auth export client.admin
#增加用户client.john并授权
#ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'
#如果没有用户就创建并授权,如果有用户列出授权信息
ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'
ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring
#如果没有用户key就创建并授权,如果有用户key,则该用户的列出授权信息,输出到指定文件
ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key
#增加用户client.john并授权
ceph auth add client.john mon 'allow *' osd 'allow * '
#修改用户client.john的授权
ceph auth caps client.john mds 'allow ' mon 'allow *' osd 'allow * '
#删除用户
#ceph auth del {TYPE}.{ID}
ceph auth del client.john
#查看用户秘钥
#ceph auth print-key {TYPE}.{ID}
ceph auth print-key client.john
#使用用户和秘钥挂载卷
mount -t ceph cephserverhost:/mountpoint -o name=client.user,secret=`ceph auth print-key client.user`
#从文件导入用户及秘钥信息,备份恢复?会更新已有的用户、秘钥、权限
sudo ceph auth import -i /etc/ceph/ceph.keyring
【5、密钥环的管理 ceph-authtool】
#创建密钥环
#sudo ceph-authtool --create-keyring /path/to/keyring
sudo ceph-authtool -C /etc/ceph/ceph.keyring
#把用户加入密钥环文件
#获取用户client.admin的密钥、能力,并存入到ceph.client.admin.keyring文件中。
sudo ceph auth get client.admin -o /etc/ceph/ceph.client.admin.keyring
#再从密钥环文件ceph.client.admin.keyring中导入信息到ceph.keyring中。
sudo ceph-authtool /etc/ceph/ceph.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
#创建用户
sudo ceph-authtool -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.keyring
sudo ceph-authtool -C /etc/ceph/ceph.keyring -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx' --gen-key
sudo ceph auth add client.ringo -i /etc/ceph/ceph.keyring
#修改用户属性
sudo ceph-authtool /etc/ceph/ceph.keyring -n client.ringo --cap osd 'allow rwx' --cap mon 'allow rwx'
sudo ceph auth import -i /etc/ceph/ceph.keyring
【6、块设备管理】
#创建块设备映像
#rbd create --size {megabytes} {pool-name}/{image-name}
#在swimmingpool存储池中,创建一个1GB大小的名为bar的块映像
rbd create --size 1024 swimmingpool/bar
#如果不指定pool的名字,会将映像创建到默认的存储池rbd中
rbd create --size 1024 bar
#列出默认存储池中的映像
rbd ls
#列出指定存储池中的映像
#rbd ls {poolname}
rbd ls swimmingpool
#查看映像bar的信息
rbd info bar
#查看指定存储池中的映像的信息
#rbd info {pool-name}/{image-name}
rbd info swimmingpool/bar
#调整块设备映像的大小
rbd resize --size 2048 foo (to increase)
rbd resize --size 2048 foo --allow-shrink (to decrease)允许收缩
#删除块设备映像
#rbd rm {image-name}
rbd rm bar
#删除指定存储池的中的映像
#rbd rm {pool-name}/{image-name}
rbd rm swimmingpool/bar
#获取映像列表
rbd list
#映射块设备
#sudo rbd map {pool-name}/{image-name} --id {user-name}
sudo rbd map rbd/myimage --id admin
#如果你启用了 cephx 认证,还必须提供密钥,可以用密钥环或密钥文件指定密钥。
#sudo rbd map rbd/myimage --id admin --keyring /path/to/keyring
#sudo rbd map rbd/myimage --id admin --keyfile /path/to/file
#查看已映射的块设备
rbd showmapped
#取消块设备映射
#sudo rbd unmap /dev/rbd/{poolname}/{imagename}
sudo rbd unmap /dev/rbd/rbd/foo
#怎么使用id?怎么使用name?
rbd --id admin --keyring=/etc/ceph/ceph.keyring [commands]
rbd --name client.admin --keyring=/etc/ceph/ceph.keyring [commands]
【7、快照管理】
#创建快照
#rbd snap create {pool-name}/{image-name}@{snap-name}
rbd snap create rbd/foo@snapname
#列出快照(需要指定名称)
#rbd snap ls {pool-name}/{image-name}
rbd snap ls rbd/foo
#回滚快照
#rbd snap rollback {pool-name}/{image-name}@{snap-name}
rbd snap rollback rbd/foo@snapname
#删除某一个快照
#Ceph OSDs 异步地删除数据,所以删除快照后不会立即释放磁盘空间。
#rbd snap rm {pool-name}/{image-name}@{snap-name}
rbd snap rm rbd/foo@snapname
#删除某一个映像的所有快照
#rbd snap purge {pool-name}/{image-name}
rbd snap purge rbd/foo
#保护父快照,防止误删除导致所有快照无法使用
#bd snap protect {pool-name}/{image-name}@{snapshot-name}
rbd snap protect rbd/myimage@my-snapshot
#克隆快照
#rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}#
rbd clone rbd/my-image@my-snapshot rbd/new-image
#取消快照保护
#rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}
rbd snap unprotect rbd/my-image@my-snapshot
#列出快照的子孙
#rbd children {pool-name}/{image-name}@{snapshot-name}
rbd children rbd/my-image@my-snapshot
#拍平克隆映像
#rbd flatten {pool-name}/{image-name}
rbd flatten rbd/my-image
【8、参考链接】
Ceph英文文档(最新12.2版本)
http://docs.ceph.com/docs/master/
Ceph中文文档(10.0版)
http://docs.ceph.org.cn/start/intro/
Ceph分布式存储集群在CentOS 7.1上手动安装部署指南
http://bbs.ceph.org.cn/question/138
Ceph常用命令的更多相关文章
- ceph常用命令(转)
原文:http://michaelkang.blog.51cto.com/1553154/1698287 一:ceph集群启动.重启.停止 1:ceph 命令的选项如下: 选项简写描述 --verbo ...
- ceph常用命令(3)
1.查看集群配置信息 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show 2.在部署节点修改了ceph.conf文件, ...
- 分布式存储ceph——(3)ceph常用命令
1.查看ceph集群配置信息 1 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show 2.在部署节点修改了ceph ...
- 最新ceph集群常用命令梳理
结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启 ...
- ceph部署-常用命令
常用命令:1.ceph healthceph -s 2.ceph osd treeceph osd lspoolsceph osd pool [poolname] rbd pg_numceph osd ...
- OpenStack各组件的常用命令
openstack命令 openstack-service restart #重启openstack服务 openstack endpoint-list #查看openstack的 ...
- Linux 常用命令(持续补充)
常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
随机推荐
- Prime Flip AtCoder - 2689
发现我们每次区间取反,相邻位置的正反关系只有两个位置发生改变 我们定义bi为ai和ai-1的正反关系,即ai=ai-1时bi=0,否则bi=1,每次取反l~r,b[l]和b[r+1]会发生改变 容易发 ...
- 删除已渲染select标签的值
var removeSaleTypeEnumIs2 = function(){ var sel = document.getElementById('saleType'); sel.remove(se ...
- Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...
- [js]js设计模式小结
js设计模式小结 工厂模式/构造函数--减少重复 - 创建对象有new - 自动创建obj,this赋值 - 无return 原型链模式 - 进一步去重 类是函数数据类型,每个函数都有prototyp ...
- 467A
#include <stdio.h> int main() { int n; int p, q; int rooms=0; scanf("%d", &n); i ...
- 【JVM】-NO.115.JVM.1 -【JDK11 HashMap详解-4-伸展树、B树】
.Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- Linux C++ IDEs
个人推荐CLion, Visual Studio, Netbeans, Eclipse CDT排名部分先后,纯属个人偏好. 还有一点需要说明的是,笔者只用这几个工具写代码,也就是用他们提供的代码提示, ...
- git help 机器翻译
该篇发布仅为博主个人保存并参考,内容可能不对 usage: git [--version] [--help] [-C <path>] [-c <name>=<value& ...
- Internet spirit
互联网思维精髓总结为 :1.用户思维:2.简约思维:3.极致思维:4.迭代思维:5.流量思维:6.社会化思维:7.大数据思维:8.平台思维:9.跨界思维.
- java学习路线之必会的java基础教程
大数据产业已进入发展的“快车道”,急需大量优秀的大数据人才作为后盾.如果你是Java编程出身,那学习大数据自然是锦上添花:但如果你是刚刚接触大数据技术,还在Java编程基础阶段,这篇文章非常值得你看! ...