Ceph 提供 NFS 服务:高效存储解决方案的终极指南!

戳下方名片,关注并星标

回复“1024”获取2TB学习资源!

👉体系化学习:运维工程师打怪升级进阶之路 4.0

—   特色专栏  —

MySQL / PostgreSQL / MongoDB

ElasticSearch / Hadoop / Redis

Kubernetes / Docker / DevOps

Kafka / RabbitMQ / Zookeeper 

监控平台 / 应用与服务 / 集群管理

Nginx / Git / Tools OpenStack

大家好,我是民工哥!

今天给大家介绍下:Ceph 提供NFS服务:高效存储解决方案!

Ceph提供nfs服务

ceph除了可以提供cephfs之外,也是可以支持nfs的,因为如果直接对外提供cephfs的话,客户端挂载比较繁琐,而提供nfs的话就非常易用了。

前期准备
检查模块
[root@ceph01 ~]# ceph mgr module ls |grep nfs
"nfs",

默认基本都是启动的,如果没有启用可以执行。

[root@ceph01 ~]# ceph mgr module enable nfs
检查是否有nfs-ganesha集群
[root@ceph01 ~]# ceph nfs cluster ls
[root@ceph01 ~]#
创建nfs服务

通过自动创建的方式

[root@ceph01 ~]# ceph nfs cluster create 1 "ceph01 ceph02"
NFS Cluster Created Successfully
[root@ceph01 ~]# ceph nfs cluster ls
1
  • • create 后面的1指的是集群的id,可以改为其他的

  • • 引号里面的ceph01,ceph02指的是在哪些节点上启动进程

创建完之后再去查看集群就会有一个了,并且显示为1,这个1不是指集群的数量,而是你刚刚给他的ID,如果你的ID指定的是其他的,那么他这里就会显示你自己指定的ID。

ceph提供的nfs的架构

ceph的nfs是有一个组件叫做nfs-ganesha,然而cephfs的是由mds组件提供的。

你客户端通过nfs的方式去挂载ceph的话,就相当于nfs-ganesha是一个翻译器,将你的nfs连接请求转换成cephfs,在你看来你挂载的是nfs,其实底层给你提供的存储的还是cephfs。

他的连接就是这样的:客户端存储请求---> nfs-ganesha--->mds

当然也可以存储到rgw,不过这一块的适配做的不是很好,有很多功能用不了。

这样nfs服务就创建好了,但是还没有配置后端的存储。

nfs导出

nfs导出也就是给他配置后端存储。

创建cephfs
# 创建一个cephfs,如果有的话可以不做
[root@ceph01 ~]# ceph fs volume create cephfs
[root@ceph01 ~]# ceph osd pool ls
device_health_metrics
.nfs
cephfs.cephfs.meta
cephfs.cephfs.data
导出
[root@ceph01 ~]# ceph nfs export create cephfs --cluster-id 1 --pseudo-path /cephfs --fsname cephfs --path=/
{
"bind": "/cephfs",
"fs": "cephfs",
"path": "/",
"cluster": "1",
"mode": "RW"
}

这里的意思就是从cephfs中创建一个nfs,cluster-id就是之前指定的id,导出的nfs路径为/cephfs

--fsname  #这个意思是使用哪个cephfs,我的cephfs的名字就叫cephfs
--path  #指的是cephfs的路径
客户端尝试挂载
[root@master ~]# mount -t nfs 172.16.1.20:/cephfs /mnt
[root@master ~]# df |grep mnt
172.16.1.20:/cephfs  59736064        0  59736064   0% /mnt

挂载的ip写你自己的nfs的ip,我是用的公有云创建的ceph集群,所以这是一个公网IP。

这种挂载方式就比直接挂载cephfs要方便的多了,因为如果要挂载cephfs的话我们还需要创建cephfs用户,还得授权,这种方式就不需要。

验证

我们之前说这个nfs的数据也是存到cephfs里面了,我们来挂载cephfs看看。

# 使用比较简单的授权方式,这种方式是后来更新的,较早的ceph版本可能没有这个命令
[root@ceph01 ~]# ceph fs authorize cephfs client.cephfs / rw -o ceph.client.cephfs.keyring

修改ceph.client.cephfs.keyring文件内容

# 只保留密钥部分
[root@ceph01 ~]# cat ceph.client.cephfs.keyring 
AQBTNHFmDhxSABAAqB69R7Y3Rb89LA06R0pfmw==
# 挂载
[root@ceph01 ~]# mount -t ceph 172.16.1.20:6789:/ /mnt -o name=cephfs,secretfile=./ceph.client.cephfs.keyring

cephfs写入数据

[root@ceph01 mnt]# echo hello > cephfs

nfs查看数据

[root@master mnt]# ls
cephfs
[root@master mnt]# cat cephfs
hello

可以看到,数据写入到cephfs之后nfs端也是可以看见的

高可用nfs-ganesha

ceph 内部是可以对 nfs-ganesha,是通过 haproxy+keepalived 来做的。

service_type: ingress
service_id: nfs.1# 这里写的是nfs的id
placement:
hosts:
- ceph01
- ceph02
count_per_host:1# 每个节点部署几个nfs进程
spec:
backend_service: nfs.1# 后端使用哪个
frontend_port:20490# nfs的端口号
monitor_port:9000# placement 
virtual_ip:172.16.1.100/24

frontend_port: 20490 这里默认是 2049,改成 20490 的原因是我们在部署这个之前已经部署过了 nfs,这个端口被 nfs 占用了,所以得换一个。

不仅仅是 nfs 可以部署高可用,rgw 也是可以的。

链接:https://cnblogs.com/fsdstudy/p/18254504

👍 如果你喜欢这篇文章,请点赞并分享给你的朋友!

公众号读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加微信好友)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

8f8c397a236986b73a49cd12b3d31883.jpeg

01326a014fc1748574867c7c3db07170.gif

替代 Docker Hub 的国产镜像仓库!它来了

爆完美世界大规模裁员!超过千人,两栋大厦几乎被搬空

卸载VMware、VirtualBox,来试试这款虚拟机软件

微软总裁确认!将 700 多名中国员工移居海外

所有人可用!ChatGPT for Mac 全面开放

今日正式停止服务!

替代 Ntp !Centos7 时间同步服务 Chrony 详解

Nginx 服务器 Linux 内核参数优化详解

突发!OpenAI宣布终止对中国提供API服务

Windows爆出核弹级漏洞!Win7-Win1全沦陷

团队准备解散了。。。

聊一聊当今 IT 行业的乱象!

ee34dac6e94b8b014c008a546fe0884d.png

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值