ceph笔记03

Cephfs的使用

Cephfs的使用条件

  1. 当我们需要多个服务来挂载和实时的同步的时候, 使用到CEPHFS,可以实现文件系统的共享。内核里面现在这个时间已经内置cephfs的挂载模块, 可以直接挂载不需要安装。
  2. cephfs运行需要MDS服务,用来存储缓存的文件信息。总体需要创建两个存储池,单独创建一个存储MDS信息的存储池, 同时需要创建一个数据池来提供存储空间。
  3. 启用mds的服务
    ceph orch mds 2
  4. 创建ceph的存储池
    ceph mds stat
    # 创建一个cephfs的metadata池
    ceph osd pool create metadata 32 32 
    # 创建一个cephfs的data池
    ceph osd pool create cephfsdata 64 64 
    # 创建ceph的状态
    ceph osd pool ls 
    ceph -s 
    # 创建cephfs的文件系统
    ceph fs new defaultfs metadata cephfsdata
    
    # 新的版本里面已经不需要手动创建mds和两个对应的存储池了, 只是需要一条命令就可以自动创建。
    [ceph: root@ceph01 /]# ceph fs volume create test
    [ceph: root@ceph01 /]# ceph fs volume ls
    [ceph: root@ceph01 /]# ceph mds stat
    # 需要提前获取挂载的Token: 
    [root@HaydenArchDesktop ceph]# sudo scp root@ceph01:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
    [root@HaydenArchDesktop ceph]# mount -t ceph :/ /mnt -o name=admin
    [root@HaydenArchDesktop mnt]# mount | grep ceph
    192.168.31.11:6789,192.168.31.12:6789,192.168.31.13:6789:/ on /mnt type ceph (rw,relatime,name=admin,secret=<hidden>,acl)
    
    #
    # journalctl -f > /mnt/journal.log   
    # 查看cephfs的写入文件的动作过程。 
    # 同时使用 tail -f 在另一个窗口中查看文件的内容。 测试写入和查看内容的差距。 
    

用户权限

MDS可以启动多个实例,多个实例会自动来负载不同资源的文件元数据的缓存。
客户端通过MON节点进行授权 和 获取MDS的的位置。
MDS现在最新的版本默认已经是一主一备, 自动会生成高可用的模式。(之前的手动部署多个MDS服务器, 然后指定MDS的角色)

创建一个普通用户来进行身份的验证

# 创建一个测试的用户
ceph auth add client.testuser mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfsdata'
# 测试所建立的用户的权限,获取认证的keyring
ceph auth get client.testuser
# 导出用户的Keyring, 用来做集群的校验
ceph auth get client.testuser -o ceph.client.testuser.keyring
# 导出用户的key , Kubernetes的挂载会使用到
ceph auth print-key client.testuser > testuser.key
# 验证用户是否可以获取到集群的状态
ceph --user testuser -s 

# 将挂载点添加到fstab自动开机挂载
MON01:6789,MON02:6789,.........:/ /mnt ceph defaults,name=testuser,secretfile=/etc/ceph/testuser.key,_netdev 0 0

Dashboard权限

# 启用或者禁用账户
[ceph: root@ceph01 /]# ceph dashboard ac-user-enable admin

# 重置Dashboard用户的密码
# Old Version
[ceph: root@ceph01 /]# ceph dashboard set-login-credentials admin -i /etc/ceph/dashboard_password

# New version command.
[ceph: root@ceph01 /]# ceph dashboard -h | grep ac-user
dashboard ac-user-add-roles <username> [<roles>...]         Add roles to user
dashboard ac-user-create <username> [<rolename>] [<name>]   Create a user. Password read from -i <file>
dashboard ac-user-del-roles <username> [<roles>...]         Delete roles from user
dashboard ac-user-delete [<username>]                       Delete user
dashboard ac-user-disable [<username>]                      Disable a user
dashboard ac-user-enable [<username>]                       Enable a user
dashboard ac-user-set-info <username> <name> [<email>]      Set user info
dashboard ac-user-set-password <username> [--force-         Set user password from -i <file>
dashboard ac-user-set-password-hash <username>              Set user password bcrypt hash from -i <file>
dashboard ac-user-set-roles <username> [<roles>...]         Set user roles
dashboard ac-user-show [<username>]                         Show user info

MDS 高可用

# 提升默认的主节点的数量, 来提高MDS服务的吞吐量
ceph fs set defaultfs max_mds 2 
ceph fs get defaultfs
# 变成两主两备, (设置Rank)
# 参数: mds_standby_replay true 
         mds_standby_for_name: MDS_NAME
         mds_standby_for_rank: 备份指定级别的mds
         mds_standby_for_fscid: 指定文件系统ID,会联合rank配置生效,如果指定了rank就是指定文件系统的rank会进行主备,如果未指定就是指定文件系统的所有Rank。
  1. 如果是一对一的高可用 , 需要对每个mds进行独立的配置。
    配置样例:
    # 配置的结果是mds1主, mds2 备; mds3 主, mds4 备.
    [mds.ceph-mds1]
    mds_standby_replay = true 
    mds_standby_for_name = ceph-mds2
    mds_standby_for_fscid = defaultfs 
    
    [mds.ceph-mds3]
    mds_standby_replay = true
    mds_standby_for_name = ceph-mds4