zoukankan      html  css  js  c++  java
  • Centos7部署CephFS

    标签(空格分隔): ceph环境,ceph,cephfs


    cephfs部署之前准备工作:

    1. 一个 clean+active 的cluster

    cluster部署参考:centos7下搭建ceph luminous(12.2.1)--无网或网络较差
    当前集群环境:

    [root@node1 ~]# ceph -s
      cluster:
        id:     b8b4aa68-d825-43e9-a60a-781c92fec20e
        health: HEALTH_OK
     
      services:
        mon: 1 daemons, quorum node1
        mgr: node1(active)
        osd: 6 osds: 6 up, 6 in
     
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0 bytes
        usage:   6338 MB used, 55101 MB / 61440 MB avail
        pgs:     
    

    2. 一个元数据服务器mds

    需要说明的是node1是mon+osd+mds节点,node2,node3是osd节点,另外还有一个使用ceph-deploy部署集群的admin节点。下面在node1节点上部署mds:

    [cephu@admin my-cluster]$ ceph-deploy mds create node1
    

    部署cephfs:

    一个cephfs至少要求两个librados存储池,一个为data,一个为metadata。当配置这两个存储池时,注意:

    1. 为metadata pool设置较高级别的副本级别,因为metadata的损坏可能导致整个文件系统不用
    2. 建议,metadata pool使用低延时存储,比如SSD,因为metadata会直接影响客户端的响应速度

    1,创建cephfs需要的两个存储池:

    [root@node1 ~]# ceph osd pool create cephfs_data 128
    pool 'cephfs_data' created
    [root@node1 ~]# ceph osd pool create cephfs_metadata 128
    pool 'cephfs_metadata' created
    

    2,使用fs new命令enable 文件系统

    [root@node1 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
    new fs with metadata pool 2 and data pool 1
    

    查看cephfs信息:

    [root@node1 ~]# ceph fs ls
    name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
    

    查看cephfs状态:

    [root@node1 ~]# ceph mds stat
    cephfs-1/1/1 up  {0=node1=up:active}
    

    可以看到运行在node1节点的文件系统cephfs的状态 up:active

    3,挂载cephfs:

    Cephfs有两种挂载方式:kernel或fuse
    node3是非mon服务器,为了区别mon服务器,这里使用node3作为client节点

    3.1 挂载到kernel:

    首先,在node3上创建挂载目录:

    [root@node3 ~]# mkdir /mnt/mycephfs  
    

    然后,创建一个文件保存admin用户的秘钥:

    [root@node3 ~]# cat /etc/ceph/ceph.client.admin.keyring
    [client.admin] 
    AQD5ZORZsJYbMhAAoGEw/H9SGMpEy1KOz0WsQQ==
    

    可知用户名:admin
    密钥 :AQD5ZORZsJYbMhAAoGEw/H9SGMpEy1KOz0WsQQ==
    之后在当前目录创建一个文件admin.secret保存该秘钥:

    [root@node3 ~]# vi admin.secret
    

    把该秘钥粘贴过来,:wq保存

    最后,挂载cephfs:
    node1的ip为192.168.197.154,挂载命令如下:

    [root@node3 ~]# mount -t ceph 192.168.197.154:6789:/ /mnt/mycephfs -o name=admin,secretfile=/root/admin.secret  
    

    查看挂载的文件系统:

    [root@node3 ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   18G  1.7G   16G   10% /
    devtmpfs                 482M     0  482M    0% /dev
    tmpfs                    493M     0  493M    0% /dev/shm
    tmpfs                    493M   13M  480M    3% /run
    tmpfs                    493M     0  493M    0% /sys/fs/cgroup
    /dev/sda1                497M  171M  326M   35% /boot
    tmpfs                     99M     0   99M    0% /run/user/0
    /dev/sdb1                 97M  7.5M   90M    8% /var/lib/ceph/osd/ceph-2
    /dev/sdc1                 97M  7.2M   90M    8% /var/lib/ceph/osd/ceph-5
    192.168.197.154:6789:/    60G  6.3G   54G   11% /mnt/mycephfs
    

    到这里已经完成了部署cephfs的整个过程,这里是把文件系统挂载到了内核空间,下面介绍一下挂载到用户空间的方法。

    3.2 挂载到fuse:

    为了实验,在这之前需要先umount文件系统之后挂到fuse:

    [root@node3 ~]# umount /mnt/mycephfs/
    [root@node3 ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   18G  1.7G   16G   10% /
    devtmpfs                 482M     0  482M    0% /dev
    tmpfs                    493M     0  493M    0% /dev/shm
    tmpfs                    493M   13M  480M    3% /run
    tmpfs                    493M     0  493M    0% /sys/fs/cgroup
    /dev/sda1                497M  171M  326M   35% /boot
    tmpfs                     99M     0   99M    0% /run/user/0
    /dev/sdb1                 97M  7.5M   90M    8% /var/lib/ceph/osd/ceph-2
    /dev/sdc1                 97M  7.2M   90M    8% /var/lib/ceph/osd/ceph-5
    

    可以看到umount后没有了cephfs文件系统

    首先,安装ceph-fuse工具包:

    [root@node3 ~]# yum -y install ceph-fuse
    

    其次,创建挂载目录:

    [root@node3 ~]# mkdir ~/mycephfs
    

    最后,挂载cephfs:

    [root@node3 ~]# ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.197.154:6789 ~/mycephfs/
    ceph-fuse[6687]: starting ceph client
    2017-10-16 15:57:09.644181 7fa5be56e040 -1 init, newargv = 0x7fa5c940b500 newargc=9
    ceph-fuse[6687]: starting fuse
    

    通过命令可以看到挂载成功

    [root@node3 ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   18G  1.7G   16G   10% /
    devtmpfs                 482M     0  482M    0% /dev
    tmpfs                    493M     0  493M    0% /dev/shm
    tmpfs                    493M   13M  480M    3% /run
    tmpfs                    493M     0  493M    0% /sys/fs/cgroup
    /dev/sda1                497M  171M  326M   35% /boot
    tmpfs                     99M     0   99M    0% /run/user/0
    /dev/sdb1                 97M  7.5M   90M    8% /var/lib/ceph/osd/ceph-2
    /dev/sdc1                 97M  7.2M   90M    8% /var/lib/ceph/osd/ceph-5
    ceph-fuse                 17G     0   17G    0% /root/mycephfs
    

    到这里已经完成了部署cephfs的整个过程,下面记录一下部署过程中遇到的问题

    部署cephfs时的问题:mount error 22 = Invalid argument

    在执行挂载到kernel的挂载命令时,并没有指定用户名和秘钥进行挂载,结果提示下面的错误:

    [root@node3 ~]# mount -t ceph 192.168.197.154:6789:/ /mnt/mycephfs
    mount error 22 = Invalid argument  
    

    通过查看系统日志

    [root@node3 ~]# tail /var/log/messages
    Oct 16 14:42:30 node3 dhclient[6182]: bound to 192.168.197.157 -- renewal in 755 seconds.
    Oct 16 14:42:30 node3 dbus[677]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
    Oct 16 14:42:30 node3 dbus-daemon: dbus[677]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
    Oct 16 14:42:30 node3 systemd: Started Network Manager Script Dispatcher Service.
    Oct 16 14:42:30 node3 nm-dispatcher: req:1 'dhcp4-change' [ens33]: new request (2 scripts)
    Oct 16 14:42:30 node3 nm-dispatcher: req:1 'dhcp4-change' [ens33]: start running ordered scripts...
    Oct 16 14:47:55 node3 kernel: libceph: no secret set (for auth_x protocol)
    Oct 16 14:47:55 node3 kernel: libceph: error -22 on auth protocol 2 init
    Oct 16 14:48:56 node3 kernel: libceph: no secret set (for auth_x protocol)
    Oct 16 14:48:56 node3 kernel: libceph: error -22 on auth protocol 2 init
    

    可以看出是因为没有secret的原因,这是因为cephfs文件系统启用了cephx认证,因此需要指定一个用户名和一个密钥

    参考文档:

    1.【实践】Ceph:创建Cephfs文件
    2.cephfs官网部署

  • 相关阅读:
    吴裕雄--天生自然ANDROID开发学习:1.9 Android程序签名打包
    吴裕雄--天生自然ANDROID开发学习:1.8 工程相关解析(各种文件,资源访问)
    html 上传预览图片
    git笔记
    iscroll 下拉刷新功能
    移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果
    getElementsByClassName 兼容性
    登录页面-输入框清空按钮
    FireFox中iframe的返回上页问题
    ajax是异步的,异步取数据,如何能保证数据是存在的。
  • 原文地址:https://www.cnblogs.com/sisimi/p/7976154.html
Copyright © 2011-2022 走看看