任何普通的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. 总结一下 IEnumerable 的例子

    本篇将围绕 <试试 IEnumerable 的 10 个小例子>和<试试 IEnumerable 的另外 6 个小例子>给出的例子,总结一下对于 IEnumerable 接口的 ...

  2. java多线程与线程并发一:线程基础回顾

    本文章内容整理自:张孝祥_Java多线程与并发库高级应用视频教程 线程简单来讲就是程序正在做的事情.多线程即一个程序同时做多件事情,一个线程就是一件事情. 在java中创建线程的方法有两种. 方法一是 ...

  3. 018.Kubernetes二进制部署插件coredns

    一 修改配置文件 1.1 下载解压 [root@k8smaster01 ~]# cd /opt/k8s/work/kubernetes/ [root@k8smaster01 kubernetes]# ...

  4. ES6,import时如何正确使用花括号'{ }'

    在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取 ...

  5. 怎样用JS给,option添加“选中”属性

    <html> <head> <script> window.onload = function(){ var opts = document.getElementB ...

  6. 二.整体预览tomcat

    一.概述 如果将tomcat内核高度抽象,则它可以看成由连接器(Connector)组件和容器(Container)组件组成,其中Connector组件负责在服务器端处理客户端链接,包括接受客户端链接 ...

  7. secureCRT安装与激活

    SecureCRT安装及激活方式 百度网盘地址: SecureCRT及激活软件的地址: 1. 安装secureCRT 百度网盘下载,点击scrt814-x64.exe,按照提示安装secureCRT, ...

  8. 【dp】you are the one

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 题解: 当最优解下, a1在j的位置排出, 则a2 ——aj-1 和 aj——an为两个独立事件 ...

  9. gcc悄无声色将静态函数内联了

    说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分.c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字 ...

  10. zip的压缩和解压命令

    以下命令均在/home目录下操作cd /home #进入/home目录 1.把/home目录下面的data目录压缩为data.zip zip -r data.zip data #压缩data目录   ...