ceph-文件存储
文件存储
ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据。要实现ceph文件系统,需要一个正在运行的ceph存储集群和至少一个ceph元数据服务器(MDS)来管理其元数据并使其与数据分离,这有助于降低复杂性和提高可靠性。
libcephfs库在支持其多个客户机实现方面发挥重要作用。它具有本机linux内核驱动程序支持,因此客户机可以使用本机文件系统安装,例如使用mount命令。她与samba紧密集成,支持CIFS和SMB。Ceph FS使用cephfuse模块扩展到用户空间(FUSE)中的文件系统。它还允许使用libcephfs库与RADOS集群进行直接的应用程序交互。
只有Ceph FS才需要Ceph MDS,其他存储方法的块和基于对象的存储不需要MDS。Ceph MDS作为一个守护进程运行,它允许客户机挂载任意大小的POSIX文件系统。MDS不直接向客户端提供任何数据,数据服务仅OSD完成。
部署cephfs
- [ceph-admin@ceph-node1 my-cluster]$ ceph-deploy mds create ceph-node2
创建池 FS
- [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool create cephfs_data
- pool 'cephfs_data' created
- [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool create cephfs_metadata
- pool 'cephfs_metadata' created
- [ceph-admin@ceph-node1 my-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data
- new fs with metadata pool and data pool
查看状态
- [ceph-admin@ceph-node1 my-cluster]$ ceph mds stat
- cephfs-// up {=ceph-node2=up:active}
- [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool ls
- rbd
- .rgw.root
- default.rgw.control
- default.rgw.meta
- default.rgw.log
- .rgw
- .rgw.control
- .rgw.gc
- .rgw.buckets
- .rgw.buckets.index
- .rgw.buckets.extra
- .log
- .intent-log
- .usage
- .users
- .users.email
- .users.swift
- .users.uid
- default.rgw.buckets.index
- default.rgw.buckets.data
- cephfs_data
- cephfs_metadata
- [ceph-admin@ceph-node1 my-cluster]$ ceph fs ls
- name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
创建用户
- [ceph-admin@ceph-node1 my-cluster]$ ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r,allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring
- [ceph-admin@ceph-node1 my-cluster]$ cat ceph.client.cephfs.keyring
- [client.cephfs]
- key = AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
- [ceph-admin@ceph-node1 my-cluster]$ scp ceph.client.cephfs.keyring root@192.168.0.123:/etc/ceph/ #将key复制到客户端
通过内核驱动和FUSE客户端挂载cephfs
- [root@localhost ~]# ceph auth get-key client.cephfs
- AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
- [root@localhost ~]#
- [root@localhost ~]# mkdir /mnt/cephfs
- [root@localhost ~]# mount -t ceph ceph-node2::/ /mnt/cephfs -o name=cephfs,secret=AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
- [root@localhost ~]# df -h /mnt/cephfs/
- Filesystem Size Used Avail Use% Mounted on
- 192.168.0.126::/ 54G 54G % /mnt/cephfs
也可以将key保存到文件,通过文件挂载
- [root@localhost ~]# echo "AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==" > /etc/ceph/cephfskey
- [root@localhost ~]# umount /mnt/cephfs/
- [root@localhost ~]# mount -t ceph ceph-node2::/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey
开机自动挂载
- [root@localhost ~]# echo "ceph-node2:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >> /etc/fstab
- [root@localhost ~]# umount /mnt/cephfs
- [root@localhost ~]# mount /mnt/cephfs
- [root@localhost ~]# df -h /mnt/cephfs/
- Filesystem Size Used Avail Use% Mounted on
- 192.168.0.126::/ 54G 54G % /mnt/cephfs
写入数据测试
- [root@localhost ~]# dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=
- + records in
- + records out
- bytes (1.1 GB) copied, 8.76348 s, MB/s
- [root@localhost ~]# ll -h /mnt/cephfs/
- total .0G
- -rw-r--r-- root root .0G Feb : file1
使用fuse客户端挂载
ceph文件系统由linux内核本地支持,但是如果主机在较低的内核版本上运行,或者有任何应用程序依赖项,可以使用FUSE客户端让ceph挂载cephfs。
安装ceph-fuse
- [root@localhost ~]# yum install ceph-fuse -y
挂载方式
- [root@localhost ~]# ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m ceph-node2: /mnt/cephfs^C
- [root@localhost ~]# umount /mnt/cephfs/
- [root@localhost ~]# ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m ceph-node2: /mnt/cephfs
- ceph-fuse[]: starting ceph client
- -- ::41.922959 7ff1e2ce20c0 - init, newargv = 0x55fdbb5c4420 newargc=
- ceph-fuse[]: starting fuse
- [root@localhost ~]# df -h /mnt/cephfs
- Filesystem Size Used Avail Use% Mounted on
- ceph-fuse 54G .0G 53G % /mnt/cephfs
写入配置文件
- [root@localhost ~]# echo "id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring /mnt/cephfs fuse.ceph defaults 0 0" >> /etc/fstab
- [root@localhost ~]# umount /mnt/cephfs
- [root@localhost ~]# mount /mnt/cephfs
- -- ::48.123645 7f70a8cb50c0 - init, newargv = 0x562911bb0150 newargc=11ceph-fuse[]: starting ceph client
- ceph-fuse[]: starting fuse
- [root@localhost ~]# df -h /mnt/cephfs/
- Filesystem Size Used Avail Use% Mounted on
- ceph-fuse 54G .0G 53G % /mnt/cephfs
将Ceph FS导出为NFS服务器
网络文件系统(Network Filesystem,NFS)是最流行的可共享文件系统协议之一,每个基于unix的系统都可以使用它。不理解Ceph FS类型的基于unix的客户机仍然可以使用NFS访问Ceph文件系统。要做到这一点,我们需要一个NFS服务器,它可以作为NFS共享重新导出Ceph FS。NFS-ganesha是一个在用户空间中运行的NFS服务器,使用libcephfs支持Ceph FS文件系统抽象层(FSAL)。
安装软件
- [root@ceph-node2 ~]# yum -y install nfs-utils nfs-ganesha
启动NFS需要的rpc服务
- [root@ceph-node2 ~]# systemctl start rpcbind
- [root@ceph-node2 ~]# systemctl enable rpcbind
- [root@ceph-node2 ~]# systemctl status rpcbind
- ● rpcbind.service - RPC bind service
- Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
- Active: active (running) since Mon -- :: CST; 14s ago
- Main PID: (rpcbind)
- CGroup: /system.slice/rpcbind.service
- └─ /sbin/rpcbind -w
- Feb :: ceph-node2 systemd[]: Starting RPC bind service...
- Feb :: ceph-node2 systemd[]: Started RPC bind service.
修改配置文件
- [root@ceph-node2 ~]# cat /etc/ganesha/ganesha.conf
- ###################################################
- #
- # EXPORT
- #
- # To function, all that is required is an EXPORT
- #
- # Define the absolute minimal export
- #
- ###################################################
- EXPORT
- {
- # Export Id (mandatory, each EXPORT must have a unique Export_Id)
- Export_Id = ;
- # Exported path (mandatory)
- Path = "/";
- # Pseudo Path (required for NFS v4)
- Pseudo = "/";
- # Required for access (default is None)
- # Could use CLIENT blocks instead
- Access_Type = RW;
- SecType = "none";
- NFS_Protocols = "";
- Squash = No_ROOT_Squash;
- # Exporting FSAL
- FSAL {
- Name = CEPH;
- }
- }
通过提供Ganesha.conf 启动NFS Ganesha守护进程
- [root@ceph-node2 ~]# ganesha.nfsd -f /etc/ganesha/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG
- [root@ceph-node2 ~]# showmount -e
- Export list for ceph-node2:
客户端挂载
- [root@localhost ~]# yum -y install nfs-utils
- [root@localhost ~]# mkdir /mnt/cephnfs
- [root@localhost ~]# mount -o rw,noatime ceph-node2:/ /mnt/cephnfs
- [root@localhost ~]# df -h /mnt/cephnfs
- Filesystem Size Used Avail Use% Mounted on
- ceph-node2:/ - /mnt/cephnfs
ceph-文件存储的更多相关文章
- 海量小文件存储与Ceph实践
海量小文件存储(简称LOSF,lots of small files)出现后,就一直是业界的难题,众多博文(如[1])对此问题进行了阐述与分析,许多互联网公司也针对自己的具体场景研发了自己的存储方案( ...
- ceph rbd块存储挂载及文件存储建立
一.rbd块存储挂载 1 创建一个OSD pool # ceph osd pool create rbd1 128 查询存储空间使用 # ceph df GLOBAL: SIZE AVAIL RAW ...
- Ceph分层存储分析
最近弄Ceph集群考虑要不要加入分层存储 因此花了点时间研究了下 1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示 缓存层(A cache tier)为Ceph客户端提供更好的I/O ...
- Ceph Newstore存储引擎介绍
在Ceph被越来越多地应用于各项存储业务过程中,其性能及调优策略也成为用户密切关注讨论的话题,影响性能表现关键因素之一即OSD存储引擎实现:Ceph基础组件RADOS是强一致.对象存储系统,其OSD底 ...
- 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制
背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...
- 006.Ceph对象存储基础使用
一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...
- Hadoop小文件存储方案
原文地址:https://www.cnblogs.com/ballwql/p/8944025.html HDFS总体架构 在介绍文件存储方案之前,我觉得有必要先介绍下关于HDFS存储架构方面的一些知识 ...
- Ceph块存储介绍
1. 块存储是什么 块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 ,Ceph的块存储是基于RADOS的,因此它也借助R ...
- 基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例
ownCloud简介 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于 ...
- [ ceph ] BlueStore 存储引擎介绍
为什么需要 BlueStore 首先,Ceph原本的FileStore需要兼容Linux下的各种文件系统,如EXT4.BtrFS.XFS.理论上每种文件系统都实现了POSIX协议,但事实上,每个文件系 ...
随机推荐
- cookie 跨域访问
废话不知道该说些什么...先看代码吧. cookie 是浏览器保存在用户计算机上的少量数据 //读取cookie function getCookie(name) { var arr, reg = n ...
- Java 读写Properties配置文件【转】
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地 ...
- python 横向比较最大值 贴标签
df['dfda']=pd.Series(df[['a','b','v']].idxmax(axis=1),index=df.index)#横向比较最大值并返回列名,比循环快N倍
- python单元测试框架-unittest(三)之用例执行顺序
执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...
- C++有关拷贝构造函数(默认/浅/深拷贝构造函数)
拷贝结构函数顾名思义就是复制对象. 先讲一下默认拷贝函数: 默认拷贝就是直接赋值,让程序调用默认拷贝结构函数. Student p1; Student p2 = p1//或者Student p2(p1 ...
- SolrCloud的搭建的连接
1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud.当一个系统的索引数据量少的时候是不需 ...
- linux程序分析工具介绍(二)—-ldd,nm
本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具.ldd是用来分析程序运行时需要依赖的动态库的工具:nm是用来查看指定程序中的符号表相关内容的工具.下面通过例子,分别来介绍一下这两 ...
- Day6上 括号匹配专项
滑稽的题 T1 #include<iostream> #include<cstring> #include<queue> #include<algorithm ...
- java实现汉字转为拼音
java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...
- GDI+图形图像处理技术——GDIPlus绘图基础
GDI+概述 GDI在windows中定义为Graphis Device interface,及图形设备接口,是Windows API(application Programming Interfac ...