任何普通的linux主机都可以充当ceph客户机,客户机通过网络与ceph存储集群交互以存储或检索用户数据。Ceph RBD支持已经添加到linux主线内核中,从2.6.34以及以后版本开始。

===================在管理端192.168.20.181操作================================

su - ceph-admin

cd my-cluster

创建ceph块客户端用户名和认证密钥

ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd' |tee ./ceph.client.rbd.keyring

===================在客户端192.168.20.184操作================================

修改hosts文件:

cat /etc/hosts

192.168.20.181 c720181

192.168.20.182 c720182

192.168.20.183 c720183

192.168.20.184 c720184

创建存放密钥和配置文件目录:

mkdir -p /etc/ceph

===================在管理端192.168.20.181操作================================

把密钥和配置文件拷贝到客户端

scp ceph.client.rbd.keyring /etc/ceph/ceph.conf root@192.168.20.184:/etc/ceph/

===================在客户端192.168.20.184操作================================

检查客户端是否符合块设备环境要求

[root@c720184 ~]# uname -r

3.10.0-957.el7.x86_64                 #高于2.6.34就可以

[root@c720184 ~]# modprobe rbd

[root@c720184 ~]# echo $?

0                                            #说明执行成功

安装ceph客户端

yum -y install ceph   (如果没有配置ceph.repo 和 epel.repo 要先配置,否则安装不成功)

连接ceph集群:

ceph -s --name client.rbd

(1)集群创建存储池

默认创建块设备,会直接创建在rbd池中,但使用ceph-deploy安装(L版ceph)后,该rbd池并没有创建

#创建池

===================在管理端192.168.20.181操作================================

[ceph-admin@c720181 my-cluster]$ ceph osd lspools   #查看集群池存储池

[ceph-admin@c720181 my-cluster]$ ceph osd pool create rbd 128   #128为place group 数量

pool 'rbd' created

[ceph-admin@c720181 my-cluster]$ ceph osd lspools

1 rbd,

(2)客户端创建块设备

[root@c720184 ~]# rbd create rbd1 --size 10240 --name client.rbd

[root@c720184 ~]# rbd ls -p rbd --name client.rbd

rbd1

[root@c720184 ~]# rbd list --name client.rbd

rbd1

[root@c720184 ~]# rbd --image rbd1 info --name client.rbd

rbd image 'rbd1':

size 10GiB in 2560 objects

order 22 (4MiB objects)

block_name_prefix: rbd_data.106b6b8b4567

format: 2

features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

flags:

create_timestamp: Sun Aug 18 18:56:02 2019

(3)客户端映射块设备

[root@c720184 ~]# rbd map --image rbd1 --name client.rbd

直接映射会报如下错误,是因为创建的块设备属性对于该内核版本不支持。

features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

解决方式有如下三种:

a.动态禁用 (建议)

rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd

b.创建RBD块设备时,只启用分层特性

rbd create rbd1 --size 10240 --image-feature layering --name client.rbd

c.ceph配置文件中禁用

rbd_default_features = 1

比如这里使用动态禁用:(截图里面少了--name client.rbd,不然会报错)

rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd

重新映射块设备:

[root@c720184 ~]# rbd map --image rbd1 --name client.rbd

(4)创建文件系统并挂载

[root@c720184 ~]# fdisk -l /dev/rbd0

Disk /dev/rbd0: 10.7 GB, 10737418240 bytes, 20971520 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes

[root@c720184 ~]# mkfs.xfs /dev/rbd0

meta-data=/dev/rbd0              isize=512    agcount=16, agsize=163840 blks

=                       sectsz=512   attr=2, projid32bit=1

=                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=2621440, imaxpct=25

=                       sunit=1024   swidth=1024 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=2560, version=2

=                       sectsz=512   sunit=8 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@c720184 ~]# mkdir /mnt/ceph-disk1

[root@c720184 ~]# mount /dev/rbd0 /mnt/ceph-disk1

[root@c720184 ~]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   17G  1.5G   16G   9% /

devtmpfs                 908M     0  908M   0% /dev

tmpfs                    920M     0  920M   0% /dev/shm

tmpfs                    920M  8.5M  911M   1% /run

tmpfs                    920M     0  920M   0% /sys/fs/cgroup

/dev/sda1               1014M  145M  870M  15% /boot

tmpfs                    184M     0  184M   0% /run/user/0

/dev/rbd0                 10G   33M   10G   1% /mnt/ceph-disk1

(5)写入数据测试

[root@c720184 ~]# dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 1.04015 s, 101 MB/s

[root@c720184 ~]# ll -h /mnt/ceph-disk1/

total 100M

-rw-r--r--. 1 root root 100M Aug 18 19:11 file1

(6)做成服务,设置开机自动挂载

wget -O /usr/local/bin/rbd-mount https://raw.githubusercontent.com/aishangwei/ceph-demo/master/client/rbd-mount

#注意需要修改里面的配置参数

#!/bin/bash

# Pool name where block device image is stored
export poolname=rbd

# Disk image name
export rbdimage=rbd1

# Mounted Directory
export mountpoint=/mnt/ceph-disk1

# Image mount/unmount and pool are passed from the systemd service as arguments
# Are we are mounting or unmounting
if [ "$1" == "m" ]; then
   modprobe rbd
   rbd feature disable $rbdimage object-map fast-diff deep-flatten
   rbd map $rbdimage --id rbd --keyring /etc/ceph/ceph.client.rbd.keyring
   mkdir -p $mountpoint
   mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
   umount $mountpoint
   rbd unmap /dev/rbd/$poolname/$rbdimage
fi

#添加可执行权限

chmod +x /usr/local/bin/rbd-mount

wget -O /etc/systemd/system/rbd-mount.service https://raw.githubusercontent.com/aishangwei/ceph-demo/master/client/rbd-mount.service

[root@c720184 ~]# systemctl daemon-reload

[root@c720184 ~]# systemctl enable rbd-mount.service

测试重启是否自动挂载:

reboot -f

df -h

这里为了节省时间,没有重启,而是先取消挂载,启动挂载服务看是否挂载上。

[root@c720184 ~]# umount /mnt/ceph-disk1/

[root@c720184 ~]# systemctl start rbd-mount.service

[root@client ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/cl_-root   50G  1.8G   49G   4% /
devtmpfs              910M     0  910M   0% /dev
tmpfs                 920M     0  920M   0% /dev/shm
tmpfs                 920M   17M  904M   2% /run
tmpfs                 920M     0  920M   0% /sys/fs/cgroup
/dev/sda1            1014M  184M  831M  19% /boot
/dev/mapper/cl_-home  196G   33M  195G   1% /home
tmpfs                 184M     0  184M   0% /run/user/0
ceph-fuse              54G  1.0G   53G   2% /mnt/cephfs
c720182:/              54G  1.0G   53G   2% /mnt/cephnfs
/dev/rbd1              20G   33M   20G   1% /mnt/ceph-disk1

Ceph 块存储的更多相关文章

  1. 二十八. Ceph概述 部署Ceph集群 Ceph块存储

    client   :192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13   1.实验环境 准备四台KVM虚 ...

  2. Ceph块存储介绍

    1. 块存储是什么 块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 ,Ceph的块存储是基于RADOS的,因此它也借助R ...

  3. ceph块存储场景

    1.创建rbd使用的存储池. admin节点需要安装ceph才能使用该命令,如果没有,也可以切换到ceph-node1节点去操作. [cephfsd@ceph-admin ceph]$ ceph os ...

  4. Ceph 块存储 创建的image 映射成块设备

    将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...

  5. ceph rbd块存储挂载及文件存储建立

    一.rbd块存储挂载 1 创建一个OSD pool # ceph osd pool create rbd1 128 查询存储空间使用 # ceph df GLOBAL: SIZE AVAIL RAW ...

  6. 我们为什么选择Ceph来建立块存储

    我们为什么选择Ceph来建立块存储?国内知名黑客组织东方联盟是这样回答的,卷管理器的大小和增长受到管理程序的驱动器补充的限制,与其他Droplet共享.一旦Droplet被摧毁,储存就会被释放.术语“ ...

  7. 3.Ceph 基础篇 - RBD 块存储使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485253&idx=1&sn=24d9b06a ...

  8. Ceph分层存储分析

    最近弄Ceph集群考虑要不要加入分层存储 因此花了点时间研究了下 1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示 缓存层(A cache tier)为Ceph客户端提供更好的I/O ...

  9. 探索 OpenStack 之(9):深入块存储服务Cinder (功能篇)

    继研究了Neutron之后,继续Nova的外围研究之旅.本站是研究块存储服务Cinder. 0.验证环境 环境包括: 1.一个controller节点,运行nova-api, nova-schedul ...

随机推荐

  1. (C#)WPF:Grid面板介绍

    Grid:网格面板 Grid和其他各个Panel比较起来,功能最多也最为复杂.要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefi ...

  2. PHP 修改数组中的值

    PHP 修改数组中的值 ①.二维数组可以通过 for($i = 0; $i < count(Array()); ++ $i) 这种形式修改 实例代码: // 修改 二维数组中的 name为 Ge ...

  3. 【Java】抽象类和接口详解

    抽象类 一.抽象类的概述 现在请思考一个问题:假如我现在又Dog.Cat.Pig等实例对象,现在我们把它们都抽象成一个Animal类,这个类应该包含了这些Dog.Cat.Pig等实例对象eat的功能, ...

  4. C语言|博客作业07

    这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9935 我在这个课程的 ...

  5. 通过django 速成 blog

    1.            创建项目 33进入在python目录下的scripts文件后执行 django-admin.py   startproject  mysite 这样就生成了名为mysite ...

  6. 十、CSR8670的DFU功能[补充]

    前一篇转载的博文很清楚,全面的介绍了DFU功能的实现步骤.关于DFU功能,你还需要知道以下信息: 一.image.fs,firmware,loader,psr之间的关系 图1-1 image.fs示意 ...

  7. flex盒子布局

    看过很多对于弹性盒子flex的简介,但还是觉得阮一峰大神的解析和张鑫旭大神(旧版flex)的解析比较容易理解,下面,我以自己的理解来叙述关于flex弹性布局! 1.概念(容器和项目) 在flex中,有 ...

  8. python3 之 内置函数enumerate

    python3 内置函数enumerate一.简介: 该函数在字面上是枚举.列举的意思,用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列, 同时列出数据和数据下标,一般用在 for ...

  9. 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发

    1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...

  10. SpringBoot学习(六)—— springboot快速整合RabbitMQ

    目录 Rabbit MQ消息队列 简介 Rabbit MQ工作模式 交换机模式 引入RabbitMQ队列 代码实战 Rabbit MQ消息队列 @ 简介 优点 erlang开发,并发能力强. 社区活跃 ...