目录

【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常用命令的更多相关文章

  1. ceph常用命令(转)

    原文:http://michaelkang.blog.51cto.com/1553154/1698287 一:ceph集群启动.重启.停止 1:ceph 命令的选项如下: 选项简写描述 --verbo ...

  2. ceph常用命令(3)

    1.查看集群配置信息 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show 2.在部署节点修改了ceph.conf文件, ...

  3. 分布式存储ceph——(3)ceph常用命令

    1.查看ceph集群配置信息 1 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show   2.在部署节点修改了ceph ...

  4. 最新ceph集群常用命令梳理

    结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启 ...

  5. ceph部署-常用命令

    常用命令:1.ceph healthceph -s 2.ceph osd treeceph osd lspoolsceph osd pool [poolname] rbd pg_numceph osd ...

  6. OpenStack各组件的常用命令

    openstack命令 openstack-service restart    #重启openstack服务 openstack endpoint-list        #查看openstack的 ...

  7. Linux 常用命令(持续补充)

    常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...

  8. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

  9. Linux学习笔记(一):常用命令

    经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...

随机推荐

  1. Changing Ethernet Media Speed for AIX

    ITS UNIX Systems Changing Ethernet Media Speed for AIX First you need to find out the device name of ...

  2. PAT1018 Public Bike Management【dfs】【最短路】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805489282433024 题意: 给定一个图,一个目的地和每个节 ...

  3. plsvo

    1 图像对齐 std::for_each(ref_frame->seg_fts_.begin(), ref_frame->seg_fts_.end(), [&](plsvo::Fe ...

  4. 在vue项目里使用jquery

    1.NPM 安装 jQuery,项目根目录下运行以下代码 npm install jquery --save 2.webpack配置在项目根目录下的build目录下找到webpack.base.con ...

  5. win10系统激活

    我们常常使用一些激活工具来激活,效果可能比较差.比如我激活win10教育版,下载了很多软件无论如何都不能激活.但是使用命令行很容易就激活了. 1. 2.在命令提示符中依次输入: slmgr.vbs / ...

  6. RGBA与Opacity

    rgba(r,g,b,a) 都与透明度有关,rgba不会影响文字,opacity则会.

  7. qemu对虚拟机的内存管理(一)

    在分析了KVM中对虚拟机各级地址(gva->gpa->hva->hpa)的转换之后,想要知道qemu中又是如何完成各级地址转换的,因此对qemu中对虚拟机内存管理的相关数据结构与源码 ...

  8. centos----------centos下如何安装phpstorm

    1.首先打开centos下的谷歌浏览器,找到phpstorm官网下载linux版本.PhpStorm-2016.3.2.tar.gz 2.然后gunzip PhpStorm-2016.3.2.tar. ...

  9. armv8 memory translation

    AArch32,arm的32bit架构: AArch64,arm的64bit架构: ARMv8.2-LPA,是armv8.2中的新feature,扩大了IPA和PA的支持范围,从48bit扩展到52b ...

  10. jqueryd的post传递表单以及取消表单的默认传递

    //取消表单的默认传递: <form method="post" onsubmit="return false;"> 在FORM属性里添加 onsu ...