【Ceph集群应用】CephFS文件系统之MDS接口详解

CephFS文件系统之MDS接口详解

  • 1.创建CephFS文件系统MDS接口
    • [1.1 创建cephfs](#1.1 创建cephfs)
    • [1.2 基于内核的客户端挂载](#1.2 基于内核的客户端挂载)
    • [1.3 基于fuse工具方式的客户端挂载](#1.3 基于fuse工具方式的客户端挂载)

接上文基于ceph-deploy部署Ceph集群详解

1.创建CephFS文件系统MDS接口

服务端操作

(1)在admin管理节点创建mds服务

bash 复制代码
cd /etc/ceph
ceph-deploy mds create node01 node02 node03

(2)查看各个节点的mds服务

bash 复制代码
ssh root@node01 systemctl status ceph-mds@node01
ssh root@node02 systemctl status ceph-mds@node02
ssh root@node03 systemctl status ceph-mds@node03

(3)创建存储池,启用ceph文件系统

ceph文件系统至少需要两个rado池,一个用于存储数据,一个用于存储元数据。此时数据池就类似于文件系统的共享目录。

bash 复制代码
ceph osd pool create cephfs_data 128					#创建数据Pool

ceph osd pool create cephfs_metadata 128				#创建元数据Pool

1.1 创建cephfs

命令格式:

bash 复制代码
ceph fs new <FS_NAME> <CEPHFS_METADATA_NAME> <CEPHFS_DATA_NAME>
bash 复制代码
ceph fs new mycephfs cephfs_metadata cephfs_data		#启用ceph,元数据Pool在前,数据Pool在后

ceph fs ls					#查看cephfs

(4)查看mds状态,一个up,其余两个待命,目前的工作是由node01上的mds提供服务

bash 复制代码
ceph -s
ceph mds stat

(5)创建用户

语法格式:

bash 复制代码
ceph fs authorize  <fs_name>  client.<client_id>  <path-in-cephfs>  rw
bash 复制代码
#账户为client.zhangsan,用户name为zhangsan,zhangsan对ceph文件系统的 / 根目录(注意不是操作系统的根目录)有读写权限
ceph fs authorize mycephfs client.zhangsan / rw | tee /etc/ceph/zhangsan.keyring

#账户为client.lisi,用户name为lisi,lisi对文件系统的 / 根目录只有读权限,对文件系统的根目录的子目录 /test有读写权限
ceph fs authorize mycephfs client.lisi / r /test rw | tee /etc/ceph/lisi.keyring

客户端操作

(1)客户端要在public网络内

(2)在客户端创建工作目录

bash 复制代码
mkdir /etc/ceph

(3)在 ceph 的管理节点给客户端拷贝 ceph 的配置文件 ceph.conf 和账号的秘钥环文件zhangsan.keyring、lisi.keyring

bash 复制代码
scp ceph.conf zhangsan.keyring lisi.keyring root@client:/etc/ceph

(4)在客户端安装ceph依赖包和软件包

bash 复制代码
cd /opt
yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate
rpm -ivh ceph-release-1-1.el7.noarch.rpm
yum install -y ceph 

(5)在客户端制作秘钥文件

bash 复制代码
cd /etc/ceph
ceph-authtool -n client.zhangsan -p zhangsan.keyring > zhangsan.key			#把zhangsan用户的秘钥导出到 zhangsan.keyl
ceph-authtool -n client.lisi -p lisi.keyring > lisi.key						#把lisi用户的秘钥导出到lisi.key

(6)客户端挂载

bash 复制代码
cd /data/aa
ceph-fuse -m node01:6789,node02:6789,node03:6789 /data/aa -o nonempty		#挂载时,如果挂载点不为空会挂载失败,指定-o nonempty可以忽略

1.2 基于内核的客户端挂载

语法格式:

bash 复制代码
mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secret=<秘钥>
mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secretfile=<秘钥文件>

示例一:

bash 复制代码
mkdir -p /data/zhangsan
mount -t ceph node01:6789,node02:6789,node03:6789:/ /data/zhangsan -o name=zhangsan,secretfile=/etc/ceph/zhangsan.key

示例二:

bash 复制代码
mkdir -p /data/lisi
mount -t ceph node01:6789,node02:6789,node03:6789:/ /data/lisi -o name=lisi,secretfile=/etc/ceph/lisi.key

验证用户权限

bash 复制代码
cd /data/lisi
echo 123 > 2.txt
bash 复制代码
cd /data/zhangsan
mkdir test       #lisi用户只有读取权限,没有修改权限,需要先切换到zhangsan用户下创建/test目录
cd /data/lisi
echo 123 > test/2.txt
cat test/2.txt

示例三:

bash 复制代码
#停掉node02上的mds服务
ssh root@node02 "systemctl stop ceph-mds@node02"

ceph -s
#测试客户端的挂载点仍然是可以用的,如果停掉所有的 mds,客户端就不能用了

1.3 基于fuse工具方式的客户端挂载

(1)在 ceph 的管理节点给客户端拷贝用户账号的秘钥环文件zhangsan.keyring、lisi.keyring

bash 复制代码
cd /etc/ceph
scp ceph.client.admin.keyring root@client:/etc/ceph

(2)在客户端安装ceph-fuse

bash 复制代码
yum install -y ceph-fuse

(3)客户端挂载

bash 复制代码
mkdir -p /data/aa
cd /data/aa
ceph-fuse -m node01:6789,node02:6789,node03:6789 /data/aa [-o nonempty]			#挂载时,如果挂载点不为空会挂载失败,指定 -o nonempty 可以忽略
相关推荐
IT技术分享社区11 分钟前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
TeYiToKu1 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws1 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
yeyuningzi1 小时前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
上辈子杀猪这辈子学IT1 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei1 小时前
linux centos 安装redis
linux·redis·centos
lldhsds2 小时前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp3 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君3 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维3 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos