文件存储

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

  1. [ceph-admin@ceph-node1 my-cluster]$ ceph-deploy mds create ceph-node2

创建池 FS

  1. [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool create cephfs_data
  2. pool 'cephfs_data' created
  3. [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool create cephfs_metadata
  4. pool 'cephfs_metadata' created
  5. [ceph-admin@ceph-node1 my-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data
  6. new fs with metadata pool and data pool

查看状态

  1. [ceph-admin@ceph-node1 my-cluster]$ ceph mds stat
  2. cephfs-// up {=ceph-node2=up:active}
  3. [ceph-admin@ceph-node1 my-cluster]$ ceph osd pool ls
  4. rbd
  5. .rgw.root
  6. default.rgw.control
  7. default.rgw.meta
  8. default.rgw.log
  9. .rgw
  10. .rgw.control
  11. .rgw.gc
  12. .rgw.buckets
  13. .rgw.buckets.index
  14. .rgw.buckets.extra
  15. .log
  16. .intent-log
  17. .usage
  18. .users
  19. .users.email
  20. .users.swift
  21. .users.uid
  22. default.rgw.buckets.index
  23. default.rgw.buckets.data
  24. cephfs_data
  25. cephfs_metadata
  26. [ceph-admin@ceph-node1 my-cluster]$ ceph fs ls
  27. name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

创建用户

  1. [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
  2. [ceph-admin@ceph-node1 my-cluster]$ cat ceph.client.cephfs.keyring
  3. [client.cephfs]
  4. key = AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
  5. [ceph-admin@ceph-node1 my-cluster]$ scp ceph.client.cephfs.keyring root@192.168.0.123:/etc/ceph/      #将key复制到客户端
通过内核驱动和FUSE客户端挂载cephfs
  1. [root@localhost ~]# ceph auth get-key client.cephfs
  2. AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
  3. [root@localhost ~]#
  4. [root@localhost ~]# mkdir /mnt/cephfs
  5. [root@localhost ~]# mount -t ceph ceph-node2::/ /mnt/cephfs -o name=cephfs,secret=AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==
  6. [root@localhost ~]# df -h /mnt/cephfs/
  7. Filesystem Size Used Avail Use% Mounted on
  8. 192.168.0.126::/ 54G 54G % /mnt/cephfs

也可以将key保存到文件,通过文件挂载

  1. [root@localhost ~]# echo "AQD2EWpcZasXIBAAzcdvbJxrwwgR1eDJHTz1lQ==" > /etc/ceph/cephfskey
  2. [root@localhost ~]# umount /mnt/cephfs/
  3. [root@localhost ~]# mount -t ceph ceph-node2::/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey

开机自动挂载

  1. [root@localhost ~]# echo "ceph-node2:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >> /etc/fstab
  2. [root@localhost ~]# umount /mnt/cephfs
  3. [root@localhost ~]# mount /mnt/cephfs
  4. [root@localhost ~]# df -h /mnt/cephfs/
  5. Filesystem Size Used Avail Use% Mounted on
  6. 192.168.0.126::/ 54G 54G % /mnt/cephfs

写入数据测试

  1. [root@localhost ~]# dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=
  2. + records in
  3. + records out
  4. bytes (1.1 GB) copied, 8.76348 s, MB/s
  5. [root@localhost ~]# ll -h /mnt/cephfs/
  6. total .0G
  7. -rw-r--r-- root root .0G Feb : file1

使用fuse客户端挂载

ceph文件系统由linux内核本地支持,但是如果主机在较低的内核版本上运行,或者有任何应用程序依赖项,可以使用FUSE客户端让ceph挂载cephfs。

安装ceph-fuse

  1. [root@localhost ~]# yum install ceph-fuse -y

挂载方式

  1. [root@localhost ~]# ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m ceph-node2: /mnt/cephfs^C
  2. [root@localhost ~]# umount /mnt/cephfs/
  3. [root@localhost ~]# ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m ceph-node2: /mnt/cephfs
  4. ceph-fuse[]: starting ceph client
  5. -- ::41.922959 7ff1e2ce20c0 - init, newargv = 0x55fdbb5c4420 newargc=
  6. ceph-fuse[]: starting fuse
  7. [root@localhost ~]# df -h /mnt/cephfs
  8. Filesystem Size Used Avail Use% Mounted on
  9. ceph-fuse 54G .0G 53G % /mnt/cephfs

写入配置文件

  1. [root@localhost ~]# echo "id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring /mnt/cephfs fuse.ceph defaults 0 0" >> /etc/fstab
  2. [root@localhost ~]# umount /mnt/cephfs
  3. [root@localhost ~]# mount /mnt/cephfs
  4. -- ::48.123645 7f70a8cb50c0 - init, newargv = 0x562911bb0150 newargc=11ceph-fuse[]: starting ceph client
  5.  
  6. ceph-fuse[]: starting fuse
  7. [root@localhost ~]# df -h /mnt/cephfs/
  8. Filesystem Size Used Avail Use% Mounted on
  9. 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)。

安装软件

  1. [root@ceph-node2 ~]# yum -y install nfs-utils nfs-ganesha

启动NFS需要的rpc服务

  1. [root@ceph-node2 ~]# systemctl start rpcbind
  2. [root@ceph-node2 ~]# systemctl enable rpcbind
  3. [root@ceph-node2 ~]# systemctl status rpcbind
  4. rpcbind.service - RPC bind service
  5. Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
  6. Active: active (running) since Mon -- :: CST; 14s ago
  7. Main PID: (rpcbind)
  8. CGroup: /system.slice/rpcbind.service
  9. └─ /sbin/rpcbind -w
  10.  
  11. Feb :: ceph-node2 systemd[]: Starting RPC bind service...
  12. Feb :: ceph-node2 systemd[]: Started RPC bind service.

修改配置文件

  1. [root@ceph-node2 ~]# cat /etc/ganesha/ganesha.conf
  2. ###################################################
  3. #
  4. # EXPORT
  5. #
  6. # To function, all that is required is an EXPORT
  7. #
  8. # Define the absolute minimal export
  9. #
  10. ###################################################
  11.  
  12. EXPORT
  13. {
  14. # Export Id (mandatory, each EXPORT must have a unique Export_Id)
  15. Export_Id = ;
  16.  
  17. # Exported path (mandatory)
  18. Path = "/";
  19.  
  20. # Pseudo Path (required for NFS v4)
  21. Pseudo = "/";
  22.  
  23. # Required for access (default is None)
  24. # Could use CLIENT blocks instead
  25. Access_Type = RW;
  26. SecType = "none";
  27. NFS_Protocols = "";
  28. Squash = No_ROOT_Squash;
  29. # Exporting FSAL
  30. FSAL {
  31. Name = CEPH;
  32. }
  33. }

通过提供Ganesha.conf 启动NFS Ganesha守护进程

  1. [root@ceph-node2 ~]# ganesha.nfsd -f /etc/ganesha/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG
  2. [root@ceph-node2 ~]# showmount -e
  3. Export list for ceph-node2:

客户端挂载

  1. [root@localhost ~]# yum -y install nfs-utils
  2. [root@localhost ~]# mkdir /mnt/cephnfs
  3. [root@localhost ~]# mount -o rw,noatime ceph-node2:/ /mnt/cephnfs
  4. [root@localhost ~]# df -h /mnt/cephnfs
  5. Filesystem Size Used Avail Use% Mounted on
  6. ceph-node2:/ - /mnt/cephnfs

ceph-文件存储的更多相关文章

  1. 海量小文件存储与Ceph实践

    海量小文件存储(简称LOSF,lots of small files)出现后,就一直是业界的难题,众多博文(如[1])对此问题进行了阐述与分析,许多互联网公司也针对自己的具体场景研发了自己的存储方案( ...

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

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

  3. Ceph分层存储分析

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

  4. Ceph Newstore存储引擎介绍

    在Ceph被越来越多地应用于各项存储业务过程中,其性能及调优策略也成为用户密切关注讨论的话题,影响性能表现关键因素之一即OSD存储引擎实现:Ceph基础组件RADOS是强一致.对象存储系统,其OSD底 ...

  5. 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制

    背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...

  6. 006.Ceph对象存储基础使用

    一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...

  7. Hadoop小文件存储方案

    原文地址:https://www.cnblogs.com/ballwql/p/8944025.html HDFS总体架构 在介绍文件存储方案之前,我觉得有必要先介绍下关于HDFS存储架构方面的一些知识 ...

  8. Ceph块存储介绍

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

  9. 基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例

    ownCloud简介 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于 ...

  10. [ ceph ] BlueStore 存储引擎介绍

    为什么需要 BlueStore 首先,Ceph原本的FileStore需要兼容Linux下的各种文件系统,如EXT4.BtrFS.XFS.理论上每种文件系统都实现了POSIX协议,但事实上,每个文件系 ...

随机推荐

  1. cookie 跨域访问

    废话不知道该说些什么...先看代码吧. cookie 是浏览器保存在用户计算机上的少量数据 //读取cookie function getCookie(name) { var arr, reg = n ...

  2. Java 读写Properties配置文件【转】

    1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地 ...

  3. python 横向比较最大值 贴标签

    df['dfda']=pd.Series(df[['a','b','v']].idxmax(axis=1),index=df.index)#横向比较最大值并返回列名,比循环快N倍

  4. python单元测试框架-unittest(三)之用例执行顺序

    执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...

  5. C++有关拷贝构造函数(默认/浅/深拷贝构造函数)

    拷贝结构函数顾名思义就是复制对象. 先讲一下默认拷贝函数: 默认拷贝就是直接赋值,让程序调用默认拷贝结构函数. Student p1; Student p2 = p1//或者Student p2(p1 ...

  6. SolrCloud的搭建的连接

    1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud.当一个系统的索引数据量少的时候是不需 ...

  7. linux程序分析工具介绍(二)—-ldd,nm

    本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具.ldd是用来分析程序运行时需要依赖的动态库的工具:nm是用来查看指定程序中的符号表相关内容的工具.下面通过例子,分别来介绍一下这两 ...

  8. Day6上 括号匹配专项

    滑稽的题 T1 #include<iostream> #include<cstring> #include<queue> #include<algorithm ...

  9. java实现汉字转为拼音

    java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...

  10. GDI+图形图像处理技术——GDIPlus绘图基础

    GDI+概述 GDI在windows中定义为Graphis Device interface,及图形设备接口,是Windows API(application Programming Interfac ...