Ceph 块存储

任何普通的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 块存储的更多相关文章
- 二十八. 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虚 ...
- Ceph块存储介绍
1. 块存储是什么 块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 ,Ceph的块存储是基于RADOS的,因此它也借助R ...
- ceph块存储场景
1.创建rbd使用的存储池. admin节点需要安装ceph才能使用该命令,如果没有,也可以切换到ceph-node1节点去操作. [cephfsd@ceph-admin ceph]$ ceph os ...
- Ceph 块存储 创建的image 映射成块设备
将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...
- ceph rbd块存储挂载及文件存储建立
一.rbd块存储挂载 1 创建一个OSD pool # ceph osd pool create rbd1 128 查询存储空间使用 # ceph df GLOBAL: SIZE AVAIL RAW ...
- 我们为什么选择Ceph来建立块存储
我们为什么选择Ceph来建立块存储?国内知名黑客组织东方联盟是这样回答的,卷管理器的大小和增长受到管理程序的驱动器补充的限制,与其他Droplet共享.一旦Droplet被摧毁,储存就会被释放.术语“ ...
- 3.Ceph 基础篇 - RBD 块存储使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485253&idx=1&sn=24d9b06a ...
- Ceph分层存储分析
最近弄Ceph集群考虑要不要加入分层存储 因此花了点时间研究了下 1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示 缓存层(A cache tier)为Ceph客户端提供更好的I/O ...
- 探索 OpenStack 之(9):深入块存储服务Cinder (功能篇)
继研究了Neutron之后,继续Nova的外围研究之旅.本站是研究块存储服务Cinder. 0.验证环境 环境包括: 1.一个controller节点,运行nova-api, nova-schedul ...
随机推荐
- [LC]643题 Maximum Average Subarray I(子数组最大平均数 I)
①英文题目 Given an array consisting of n integers, find the contiguous subarray of given length k that h ...
- 用这个库 3 分钟实现让你满意的表格功能:Bootstrap-Table
本文作者:HelloGitHub-kalifun 这是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家推荐一个基于 Bootstrap 和 jQuery 的表格插件:Boo ...
- 【Java】抽象类和接口详解
抽象类 一.抽象类的概述 现在请思考一个问题:假如我现在又Dog.Cat.Pig等实例对象,现在我们把它们都抽象成一个Animal类,这个类应该包含了这些Dog.Cat.Pig等实例对象eat的功能, ...
- 关于配置Nginx反向代理后SpringSecurity认证失败的问题解决
问题背景 最近在写的一个项目,采用前后端分离的方式进行开发,登录认证使用的是SpringSecurity框架. 问题描述 在项目部署的时候出现了一个问题,在自己电脑上运行的时候一切顺畅,可是部署到服务 ...
- 关于 Python 对象拷贝的那点事?
概述 在本篇文章中,会先介绍 Python 中对象的基础概念,之后会提到对象的深浅拷贝以及区别.在阅读后,应该掌握如下的内容: 理解变量.引用和对象的关系 理解 Python 对象中 identity ...
- 你必须知道的容器日志 (2) 开源日志管理方案 ELK
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...
- react-hook生命周期
① useEffect相当于componentDidMount和componentDidUpdate两个生命周期函数 ②useEffect是异步的 ========================== ...
- Netflix 开源 Polynote:对标 Jupyter,一个笔记本运行多种语言
谈到数据科学领域的开发工具,Jupyter 无疑是非常知名的一种.它具有灵活高效的特点,非常适合进行开发.调试.分享和教学.近日,Netflix(奈飞)居然也玩起了跨界,他们开源了一个名为 Polyn ...
- 阿里云上万个 Kubernetes 集群大规模管理实践
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...
- 更强、更稳、更高效:解读 etcd 技术升级的三驾马车
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 陈星宇(宇慕 ...