zoukankan      html  css  js  c++  java
  • Ceph 文件系统 CephFS 的实战配置,等你来学习 -- <4>

    Ceph 文件系统 CephFS 的介绍与配置

    CephFs介绍

    Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问. Jewel 版本 (10.2.0) 是第一个包含稳定 CephFS 的 Ceph 版本. CephFS 需要至少一个元数据服务器 (Metadata Server - MDS) daemon (ceph-mds) 运行, MDS daemon 管理着与存储在 CephFS 上的文件相关的元数据, 并且协调着对 Ceph 存储系统的访问。

    对象存储的成本比起普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。

    CephFS 架构

    底层是核心集群所依赖的, 包括:

    • OSDs (ceph-osd): CephFS 的数据和元数据就存储在 OSDs 上
    • MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元数据
    • Mons (ceph-mon): Monitors 管理着集群 Map 的主副本
      Ceph 存储集群的协议层是 Ceph 原生的 librados 库, 与核心集群交互.

    CephFS 库层包括 CephFS 库 libcephfs, 工作在 librados 的顶层, 代表着 Ceph 文件系统.最上层是能够访问 Ceph 文件系统的两类客户端.

    配置 CephFS MDS

    要使用 CephFS, 至少就需要一个 metadata server 进程。可以手动创建一个 MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 来部署 MDS。

    登录到ceph-deploy工作目录执行
    # ceph-deploy mds create $hostname
    

    部署Ceph文件系统

    部署一个 CephFS, 步骤如下:

    1. 在一个 Mon 节点上创建 Ceph 文件系统.
    2. 若使用 CephX 认证,需要创建一个访问 CephFS 的客户端
    3. 挂载 CephFS 到一个专用的节点.
      • 以 kernel client 形式挂载 CephFS
      • 以 FUSE client 形式挂载 CephFS

    创建一个 Ceph 文件系统

    1、CephFS 需要两个 Pools - cephfs-data 和 cephfs-metadata, 分别存储文件数据和文件元数据

    # ceph osd pool create cephfs-data 256 256
    # ceph osd pool create cephfs-metadata 64 64
    

    注:一般 metadata pool 可以从相对较少的 PGs 启动, 之后可以根据需要增加 PGs. 因为 metadata pool 存储着 CephFS 文件的元数据, 为了保证安全, 最好有较多的副本数. 为了能有较低的延迟, 可以考虑将 metadata 存储在 SSDs 上.

    2、创建一个 CephFS, 名字为 cephfs:

    # ceph fs new cephfs cephfs-metadata cephfs-data
    

    3、验证至少有一个 MDS 已经进入 Active 状态

    ceph fs status cephfs
    

    4、在 Monitor 上, 创建一个用户,用于访问CephFs

    # ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'
    [client.cephfs]
    	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
    
    

    5、验证key是否生效

    ceph auth get client.cephfs
    exported keyring for client.cephfs
    [client.cephfs]
    	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
    	caps mds = "allow rw"
    	caps mon = "allow r"
    	caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"
    
    

    6、检查CephFs和mds状态

    ceph mds stat
    ceph fs ls
    ceph fs status
    

    以 kernel client 形式挂载 CephFS

    1、创建挂载目录 cephfs

    # mkdir /cephfs
    

    2、挂载目录

    # mount -t ceph 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/ /cephfs/ -o name=cephfs,secret=AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
    # 秘钥就是上面创建用户的key
    
    ~]$ df -h
    192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/   36G  9.2G   27G  26% /cephfs
    

    3、自动挂载

    # echo "mon1:6789,mon2:6789,mon3:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab
    

    4、验证是否挂载成功

    # stat -f /cephfs
    

    以 FUSE client 形式挂载 CephFS(失败)

    1、安装ceph-common

    yum install -y ceph-common
    

    2、安装ceph-fuse

    yum install -y ceph-fuse
    

    3、将集群的ceph.conf拷贝到客户端

    scp root@192.168.25.224:/etc/ceph/ceph.conf /etc/ceph/
    chmod 644 /etc/ceph/ceph.conf
    

    4、使用 ceph-fuse 挂载 CephFS

    ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789  /cephfs/
    

    5、验证 CephFS 已经成功挂载

    stat -f /cephfs
    

    6、自动挂载

    echo "none /cephfs fuse.ceph ceph.id=cephfs[,ceph.conf=/etc/ceph/ceph.conf],_netdev,defaults 0 0"| sudo tee -a /etc/fstab
    或
    echo "id=cephfs,conf=/etc/ceph/ceph.conf /mnt/ceph2  fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab
    

    7、卸载

    fusermount -u /cephfs
    

    MDS主备与主主切换

    配置主主模式

    MDS配置模式分为以下三种:

    • 冷备模式:同一时间,只有一个mds工作,单纯的进程备份。
    • 热备模式:同一时间,只有一个mds工作,但除了进程备份,也实时备份元数据,这样可以加快MDS故障切换时间。
    • 多主模式:多个MDS同时工作,各自管理自己负责的元数据。

    默认情况下,每个cephfs文件系统的MDS都是以冷备模式配置的。有时候为了获取更高的性能,可以启用多个活动的MDS守护进程,也就是多主模式,它们将彼此分担元数据的工作负载。

    • 当cephfs的性能出现在MDS上时,就应该配置多个活动的MDS。通常是多个客户机应用程序并行的执行大量元数据操作,并且它们分别有自己单独的工作目录。这种情况下很适合使用多主MDS模式。
    • 配置MDS多主模式
      每个cephfs文件系统都有一个max_mds设置,可以理解为它将控制创建多少个主MDS。注意只有当实际的MDS个数大于或等于max_mds设置的值时,mdx_mds设置才会生效。例如,如果只有一个MDS守护进程在运行,并且max_mds被设置为两个,则不会创建第二个主MDS。
    [root@cephnode01 ~]# ceph -s 
      cluster:
        id:     b6e6146b-c0c0-4058-927a-762b6a98d463
        health: HEALTH_OK
     
      services:
        mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 20h)
        mgr: cephnode01(active, since 20h), standbys: cephnode02, cephnode03
        mds: cephfs:1 {0=cephnode01=up:active} 2 up:standby
        osd: 9 osds: 9 up (since 19h), 9 in (since 19h)
        rgw: 1 daemon active (cephnode01)
     
      data:
        pools:   7 pools, 608 pgs
        objects: 262 objects, 5.3 KiB
        usage:   9.1 GiB used, 27 GiB / 36 GiB avail
        pgs:     608 active+clean
     
      io:
        client:   937 B/s wr, 0 op/s rd, 3 op/s wr
     
    
    ~]$ ceph fs set cephnode01 max_mds 2
    

    1.3、配置备用MDS
    即使有多个活动的MDS,如果其中一个MDS出现故障,仍然需要备用守护进程来接管。因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。

    但如果你确信你的MDS不会出现故障,可以通过以下设置来通知ceph不需要备用MDS,否则会出现insufficient standby daemons available告警信息:

    # ceph fs set <fs> standby_count_wanted 0 
    

    还原单主MDS

    2.1、设置max_mds

    # ceph fs set cephfs max_mds 1
    

    2.2 删除不需要的rank

    ceph mds deactivate cephfs:2
    
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/Serverlessops/p/12165662.html
Copyright © 2011-2022 走看看