大多数 Ceph 用户不会直接往 Ceph 存储集群里存储对象,他们通常会使用 Ceph 块设备、 Ceph 文件系统、或 Ceph 对象存储这三大功能中的一个或多个。

前提条件

先完成存储集群快速入门 ,并确保 Ceph 存储集群处于 active + clean 状态,这样才能使用 Ceph 块设备。

块设备快速入门

Ceph 块设备也叫 RBD 或 RADOS 块设备。

可以在虚拟机上运行 ceph-client 节点,但是不能在与 Ceph 存储集群(除非它们也用 VM )相同的物理节点上执行下列步骤。

这里采用新添加一台主机来操作,还需要进行预检工作,具体查看网址:https://www.cnblogs.com/sanduzxcvbnm/p/15080342.html

添加hosts解析,ntp时间同步,升级内核版本,普通用户免登录,关闭卸载firewalld,关闭selinux

主机名是:ceph-clinet,ip是:10.16.16.114

安装 Ceph

1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations),查看ceph-client主机

lsb_release -a
uname -r

2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

$ cd my_cluster
$ ceph-deploy install ceph-client

3.在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client (ceph-deploy主机上操作)

$ ceph-deploy admin ceph-client

ceph-deploy 工具会把密钥环复制到ceph-client主机的 /etc/ceph 目录,要确保此密钥环文件有读权限(如 sudo chmod +r /etc/ceph/ceph.client.admin.keyring )。

# 在ceph-client主机上操作

$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

配置块设备

1.在 ceph-client 节点上创建一个块设备 image (ceph-client主机上操作)

# 前提条件,已经创建名为rbd的pool,具体查看:https://www.cnblogs.com/sanduzxcvbnm/p/15625374.html
# 命令示例: rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] $ rbd create foo --size 4096 -m node1 -k /etc/ceph/ceph.client.admin.keyring

2.在 ceph-client 节点上,把 image 映射为块设备 (ceph-client主机上操作)

# 命令示例: sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

$ sudo rbd map foo --name client.admin -m node1 -k /etc/ceph/ceph.client.admin.keyring
/dev/rbd0

3.在 ceph-client 节点上,创建文件系统后就可以使用块设备了,此命令可能耗时较长 (ceph-client主机上操作)

# 命令示例: sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo

$ sudo mkfs.ext4 -m0 /dev/rbd0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=16 blocks, Stripe width=16 blocks
262144 inodes, 1048576 blocks
0 blocks (0.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

4.在 ceph-client 节点上挂载此文件系统 (ceph-client主机上操作)

$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd0 /mnt/ceph-block-device
$ cd /mnt/ceph-block-device $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 251:0 0 4G 0 disk /mnt/ceph-block-device

有个疑问,使用的pool,创建命令是:ceph osd pool create rbd 128 128

这里创建块设备后的大小是4G,有待进一步研究。

问题

此时查看ceph状态,会发现有提示:application not enabled on 1 pool(s)

$ ceph -s
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_WARN
application not enabled on 1 pool(s) services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

查看错误详情

$ ceph health detail
HEALTH_WARN application not enabled on 1 pool(s)
POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)
application not enabled on pool 'rbd'
use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.

通过查看错误详情,可知解决办法如下:

# 第一个rbd是pool-name,第二个rbd是app-name,其中app-name只能是'cephfs', 'rbd', 'rgw'中的一个
$ ceph osd pool application enable rbd rbd
enabled application 'rbd' on pool 'rbd' $ ceph -s
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_OK services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

Ceph 文件系统快速入门

准备工作

1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations) (ceph-client主机上操作)

lsb_release -a
uname -r

2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

$ cd my_cluster
$ ceph-deploy install ceph-client

3.确保 Ceph 存储集群在运行,且处于 active + clean 状态。同时,确保至少有一个 Ceph 元数据服务器在运行

# 命令示例:ceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]

# 因为元数据服务器mds在node1主机上  (ceph-client主机上操作)
$ ceph -s -m node1 -k /etc/ceph/ceph.client.admin.keyring
cluster:
id: cbbcd33f-95c1-438b-90b7-d57f9ca5835f
health: HEALTH_OK services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active)
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active data:
pools: 5 pools, 160 pgs
objects: 267 objects, 138 MiB
usage: 3.4 GiB used, 57 GiB / 60 GiB avail
pgs: 160 active+clean

创建文件系统

虽然已创建了元数据服务器,但如果你没有创建存储池和文件系统,它是不会变为活动状态的。(http://docs.ceph.org.cn/cephfs/createfs/)

# 命令示例:ceph osd pool create cephfs_data <pg_num>
# 命令示例:ceph osd pool create cephfs_metadata <pg_num>
# 命令示例:ceph fs new <fs_name> cephfs_metadata cephfs_data # 一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据 (ceph-client主机上操作) $ ceph osd pool create cephfs_data 32 32
pool 'cephfs_data' created $ ceph osd pool create cephfs_metadata 32 32
pool 'cephfs_metadata' created $ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 8 and data pool 9

文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:(ceph-client主机上操作)

$ ceph mds stat
cephfs-1/1/1 up {0=node1=up:active}

建好文件系统且 MDS 活跃后,你就可以挂载此文件系统了.

创建密钥文件

Ceph 存储集群默认启用认证,你应该有个包含密钥的配置文件(但不是密钥环本身)。用下述方法获取某一用户的密钥: (ceph-client主机上操作)

1.在密钥环文件中找到与某用户对应的密钥,例如:
$ cat /etc/ceph/ceph.client.admin.keyring 2.找到用于挂载 Ceph 文件系统的用户,复制其密钥。大概看起来如下所示:
[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 3.打开文本编辑器
4.把密钥粘帖进去,大概像这样:
AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 5.保存文件,并把其用户名 name 作为一个属性(如 admin.secret )。
$ echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >> admin.secret
6.确保此文件对用户有合适的权限,但对其他用户不可见。

内核驱动

把 Ceph FS 挂载为内核驱动。

# 命令示例:sudo mkdir /mnt/mycephfs
# 命令示例:sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs

Ceph 存储集群默认需要认证,所以挂载时需要指定用户名 name 和创建密钥文件一节中创建的密钥文件 secretfile ,例如:(ceph-client主机上操作)

# 命令示例:sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret

$ sudo mount -t ceph node1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
$ mount -l
10.16.16.111:6789:/ on /mnt/mycephfs type ceph (rw,relatime,name=admin,secret=<hidden>,acl)

从管理节点而非服务器节点挂载 Ceph FS 文件系统

用户空间文件系统( FUSE )

注:找不到ceph-fuse命令,这一步暂时不做

把 Ceph FS 挂载为用户空间文件系统( FUSE )

# 命令示例:sudo mkdir ~/mycephfs
# 命令示例:ceph-fuse -m node1:6789 ~/mycephfs # Ceph 存储集群默认要求认证,需指定相应的密钥环文件,除非它在默认位置(即 /etc/ceph ):
# 命令示例:sudo ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 ~/mycephfs

Ceph 对象存储快速入门

从 firefly(v0.80)起,Ceph 存储集群显著地简化了 Ceph 对象网关的安装和配置。网关守护进程内嵌了 Civetweb,无需额外安装 web 服务器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 来安装网关软件包、生成密钥、配置数据目录以及创建一个网关实例。

Civetweb 默认使用 7480 端口。要么直接打开 7480 端口,要么在你的 Ceph 配置文件中设置首选端口(例如 80 端口)。

安装 Ceph 对象网关

1.在 client-node 上执行预安装步骤。如果你打算使用 Civetweb 的默认端口 7480 ,必须通过 firewall-cmd 或 iptables 来打开它.

2.从管理节点的工作目录,在 client-node 上安装 Ceph 对象网关软件包。例如:

# 命令示例:ceph-deploy install --rgw <client-node> [<client-node> ...]
$ ceph-deploy install --rgw ceph-client

新建 Ceph 对象网关实例

从管理节点的工作目录,在 client-node 上新建一个 Ceph 对象网关实例。例如:

$ ceph-deploy rgw create ceph-client

一旦网关开始运行,你就可以通过 7480 端口来访问它(比如 http://ceph-client:7480 )。

配置 Ceph 对象网关实例

这一步相当于是修改访问的端口号,从默认的7480换成80

1.通过修改 Ceph 配置文件可以更改默认端口(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:

# 命令示例
[client.rgw.client-node]
rgw_frontends = "civetweb port=80" 实际情况
[client.rgw.ceph-client]
rgw_frontends = "civetweb port=80"

确保在 rgw_frontends 键值对的 port= 中没有空格。

如果你打算使用 80 端口,确保 Apache 服务器没有在使用该端口,否则会和 Civetweb 冲突。出现这种情况时我们建议移除 Apache 服务。

$ ceph-deploy --overwrite-conf config push node1 node2 node3

2.为了使新端口的设置生效,需要重启 Ceph 对象网关。在 RHEL 7 和 Fedora 上 ,执行:

# 示例命令:sudo systemctl restart ceph-radosgw.service

$ sudo systemctl restart ceph-radosgw.service

3.最后,检查节点的防火墙,确保你所选用的端口(例如 80 端口)处于开放状态。如果没有,把该端口加入放行规则并重载防火墙的配置。例如:

sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port
80/tcp --permanent
sudo firewall-cmd --reload

你应该可以生成一个未授权的请求,并收到应答。例如,一个如下不带参数的请求:

http://<client-node>:80

应该收到这样的应答:

<ListAllMyBucketsResult>
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

安装ceph (快速) 步骤三: Ceph 客户端的更多相关文章

  1. 安装ceph (快速) 步骤二:存储集群

    用 ceph-deploy 从管理节点建立一个 Ceph 存储集群,该集群包含三个节点,以此探索 Ceph 的功能. 创建一个 Ceph 存储集群,它有一个 Monitor 和两个 OSD 守护进程. ...

  2. 安装ceph (快速) 步骤一:预检

    官网地址:http://docs.ceph.org.cn/start/ 预检 安装一个 ceph-deploy 管理节点和一个三节点的Ceph 存储集群来研究 Ceph 的基本特性.这篇预检会帮你准备 ...

  3. Ubuntu CEPH快速安装

    一.CEPH简介 不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Cep ...

  4. SUSE Ceph 快速部署 - Storage6

    学习 SUSE Storage 系列文章 (1)SUSE Storage6 实验环境搭建详细步骤 - Win10 + VMware WorkStation (2)SUSE Linux Enterpri ...

  5. 2021最新WordPress安装教程(三):安装WordPress详细步骤

    前面已经通过< 2021最新WordPress安装教程(一):Centos7安装Apache>和< 2021最新WordPress安装教程(二):配置PHP和MySQL>两篇文 ...

  6. 分布式文件系统ceph快速部署

    架构图 配置ceph-deploy节点 管理节点配置ceph yum源 vim /etc/yum.repos.d/ceph.repo [ceph-noarch] name=Ceph noarch pa ...

  7. 理解 OpenStack + Ceph (7): Ceph 的基本操作和常见故障排除方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  8. Ceph浅析”系列之四——Ceph的结构

    本文将从逻辑结构的角度对Ceph进行分析. Ceph系统的层次结构 Ceph存储系统的逻辑层次结构如下图所示[1]. Ceph系统逻辑层次结构 自下向上,可以将Ceph系统分为四个层次: (1)基础存 ...

  9. Exchange Server 2013 一步步安装图解[完全步骤截图]

    前言: 这是一份为Exchange菜鸟准备的2013版本安装文档,安装环境为Windows Server 2012 DataCenter 版本,在安装之前,我对安装Exchange也是处于一无所知的状 ...

随机推荐

  1. 记一次 Druid 超时配置的问题 → 引发对 Druid 时间配置项的探究

    开心一刻 一天在路边看到一个街头采访 记者:请问,假如你儿子娶媳妇,给多少彩礼合适呢 大爷:一百万吧,再给一套房,一辆车 大爷沉思一下,继续说到:如果有能力的话再给老丈人配一辆车,毕竟他把女儿养这么大 ...

  2. SQL Server 中的 ACID 属性

    SQL Server 中的事务是什么? SQL Server 中的事务是一组被视为一个单元的 SQL 语句,它们按照"做所有事或不做任何事"的原则执行,成功的事务必须通过 ACID ...

  3. DENIED Redis is running in protected mode because protected mode is enabled

    DENIED Redis is running in protected mode because protected mode is enabled redisson连接错误 Unable to i ...

  4. yum-config-manager: command not found

    yum-config-manager: command not found ,这个是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum- ...

  5. Kubernetes组件介绍

    一.api-server   基本概念 该端口默认值为6443,可通过启动参数"--secure-port"的值来修改默认值. 默认IP地址为非本地(Non-Localhost)网 ...

  6. 算法竞赛进阶指南0x41并查集

    并查集简介 并查集的两类操作: Get 查询任意一个元素是属于哪一个集合. Merge 把两个集合合并在一起. 基本思想:找到代表元. 注意有两种方法: 使用一个固定的值(查询方便,但是在合并的时候需 ...

  7. ArrayList的操作和对象数组

    ArrayList是List接口的一个实现类,它是程序中最常见的一种集合. ArrayList内部的数据存储结构时候数组形式,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量 ...

  8. 20220727-Java中方法重写override

    目录 代码示例 注意事项 代码示例 public class OverrideExercise { public static void main(String[] args) { Person ja ...

  9. BS架构与CS架构

    BS与CS的区别:1.BS是标准规范的,CS的协议自定义:2.BS核心运算都在服务器端,CS客户端和服务器端都可以运算:3.BS只需要部署服务器端,CS需要同时升级客户端和服务器端. CS(Clien ...

  10. Java学习--流程控制

    Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...