• rgw实现nfs的首测


    功能介绍

    关于rgw实现nfs接口这个,刚接触的人可能并不清楚这个是个什么样的服务架构,rgw是ceph里面的对象存储接口,而nfs则是纯正的网络文件系统接口,这二者如何结合在一起,关于这个,有几个相关的链接供大家了解

    之所以这个功能能实现这么快,原因是nfs-ganesha的开发者Matt Benjamin加入到了Redhat,而ceph目前的开发是Redhat在主导开发,所以功能的实现是非常快的,但是目前官方并没有提供相关的文档,个人推测是功能并未完全开发完成,一旦未完全开发完成的功能放出来,邮件列表和Bug列表就会有很多相关问题,开发者应该还是希望安静的把功能做好,再提供相关的文档,而这个功能也是在ceph 的jewel版本里面才加入的

    功能架构图

    image_1alibfc78g96dsa1c26crkgis1e.png-78.3kB
    简单说明一下:
    集群配置s3接口,nfs-genesha将s3接口转换成nfs,然后nfs客户端挂载后访问的就是s3的bucket里面的数据了

    准备工作

    准备代码,这个是需要从源码编译的,并且需要将模块编译进去才可以的,源码分支地址:

    https://github.com/nfs-ganesha/nfs-ganesha/tree/V2.3-stable

    这个地方要注意下,需要使用next分支(此分支开发中有编译BUG),换分支V2.3-stable
    使用git 进行clone分支到本地

    git clone -b V2.3-stable https://github.com/nfs-ganesha/nfs-ganesha.git
    cd nfs-ganesha/
    git submodule update --init --recursive
    

    检查是否有这个RGW模块目录

    nfs-ganesha/src/FSAL/FSAL_RGW/

    默认clone下来后 nfs-ganesha/src/libntirpc/ 这个目录是空的,而这个是因为如果在git里面某个目录嵌套的用了其他项目的代码,并且也是有git的分支的话,clone下来就会是空的,这个在ceph的源码里面也会这样,具体的看看下图:
    libntir.png-38.4kB
    上面的 git submodule 会将缺的代码下载下来,所以不要漏步骤

    代码的编译采用的是cmake的模式(cmake目录后面接的是nfs-ganesha代码的src目录)

    注意在执行cmake之前编译环境需要安装librgw2-devel这个包,才能编译成功,执行cmake的时候检查下是否真的开启了

    image_1alian0db17e91gg1mhg866i1q11.png-11.1kB

    开始编译安装过程,创建一个用于编译的目录

    [root@lab8106 newbian]#mkdir mybuild
    [root@lab8106 newbian]#cd mybuild
    [root@lab8106 mybuild]#cmake -DUSE_FSAL_RGW=ON ../nfs-ganesha/src/
    [root@lab8106 mybuild]# ll FSAL/FSAL_RGW/
    total 16
    drwxr-xr-x 3 root root    83 Jun 19 01:59 CMakeFiles
    -rw-r--r-- 1 root root  2979 Jun 19 01:59 cmake_install.cmake
    -rw-r--r-- 1 root root 10164 Jun 19 01:59 Makefile
    [root@lab8106 mybuild]#make
    [root@lab8106 mybuild]#make install
    

    编译安装工作就到此完成了,还是比较简单的

    配置服务

    准备一个s3的环境,我的如下:

    radosgw-admin user create --uid=admin --display-name="admin"   --access-key=admin  --secret=admin
    

    用户信息如下:

    • s3的User_Id:admin
    • s3的Access_Key:admin
    • s3的Secret_Access_Key:admin

    注意,配置ganesha-nfs服务的机器需要安装librgw

    修改ganesha-nfs的配置文件

    vim /etc/ganesha/ganesha.conf
    

    修改如下:

    EXPORT
    {
            Export_ID=1;
            Path = "/";
            Pseudo = "/";
            Access_Type = RW;
            NFS_Protocols = 4;
            Transport_Protocols = TCP;
            FSAL {
                    Name = RGW;
                    User_Id = "admin";
                    Access_Key_Id ="admin";
                    Secret_Access_Key = "admin";
            }
    }
    
    RGW {
        ceph_conf = "/etc/ceph/ceph.conf";
    }
    

    RGW-NFS配置文件的模板路径在:

    /usr/share/doc/ganesha/config_samples/rgw.conf

    启动ganesha-nfs服务

    systemctl restart  nfs-ganesha.service
    

    NFS客户端挂载ganesha-nfs服务

    找一台其它的客户端机器

    mount -t nfs 192.168.8.106:/ /mnt
    

    直接挂载即可,这里注意因为rgw是没有文件系统的容量概念的,这里df是看不到的,所以用mount命令检测

    root@lab8107:~# mount|grep mnt
    192.168.8.106:/ on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.8.107,local_lock=none,addr=192.168.8.106)
    192.168.8.106:/testnfsrgw on /mnt/testnfsrgw type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.8.107,local_lock=none,addr=192.168.8.106)
    

    可以查看挂载的目录里面的子目录对应的就是bucket

    root@lab8107:~# ll /mnt/
    total 4
    drwxrwxrwx  3 root root    0 Jan  1  1970 ./
    drwxr-xr-x 25 root root 4096 Apr 13 03:04 ../
    drwxrwxrwx  3 root root    0 Jan  1  1970 testnfsrgw/
    

    总结

    在实现这个功能以后,实际上为文件接口和对象接口打通了一个通道,能够方便的实现传统的文件接口的数据到对象接口的转移,在性能方面,本篇并没有做测试,这个交给实际项目中去检测了,如果有问题欢迎探讨

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2016-06-19
    修改无法编译的BUG 武汉-运维-磨渣 2016-09-08
    增加git submod下载代码 武汉-运维-磨渣 2016-10-12
  • 相关阅读:
    Linux防火墙:iptables禁IP与解封IP常用命令
    php7安装 event扩展
    laravel5.5 调用系统自带登陆认证auth
    linux 搭建rap记录
    微信小程序silk格式转码成mp3格式
    抓包软件
    laravel 微信小程序登录 加密解密扩展包
    mysql索引
    sphinx-for-chinese在windows下安装与使用方法
    sphinx增量索引和主索引来实现索引的实时更新
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575354.html
Copyright © 2020-2023  润新知