Skip to main content

moregeek program

ceph笔记之用户权限,挂载brd/cephfs及mds高可用-多极客编程

1、用户权限管理


添加用户1:


ceph auth add: 此命令是添加用户的规范方法。它会创建用户、生成密钥,并添加所有指定的能力.


$ ceph auth add client.tom mon 'allow r' osd 'allow rwx  pool=mytest'


解释:添加一个tom用户,对mon有读取权限,对mypool池的osd有读、写、调用的权限。


验证key,查看用户当前权限:


$ ceph auth get client.tom [client.tom] key = AQDfjCdhj4MHDRAATDTHrxZ7shHUB4S+GHXf0w== caps mon = "allow r" caps osd = "allow rwx pool=mytest" exported keyring for client.tom


ceph 授权和使能


ceph 基于使能/能力(Capabilities,简称 caps )来描述用户可针对 MON/OSD 或 MDS 使用的授 权范围或级别。 通用的语法格式:daemon-type ‘allow caps’ [...] 能力一览表:


 r:向用户授予读取权限。访问监视器(mon)以检索 CRUSH 运行图时需具有此能力。


w:向用户授予针对对象的写入权限。


x:授予用户调用类方法(包括读取和写入)的能力,以及在监视器中执行 auth 操作的能 力。*:授予用户对特定守护进程/存储池的读取、写入和执行权限,以及执行管理命令的能力 class-read:授予用户调用类读取方法的能力,属于是 x 能力的子集。 class-write:授予用户调用类写入方法的能力,属于是 x 能力的子集。


profile osd:授予用户以某个 OSD 身份连接到其他 OSD 或监视器的权限。授予 OSD 权限, 使 OSD 能够处理复制检测信号流量和状态报告(获取 OSD 的状态信息)。 profile mds:授予用户以某个 MDS 身份连接到其他 MDS 或监视器的权限。 profile bootstrap-osd:授予用户引导 OSD 的权限(初始化 OSD 并将 OSD 加入 ceph 集群),授 权给部署工具,使其在引导 OSD 时有权添加密钥。 profile bootstrap-mds:授予用户引导元数据服务器的权限,授权部署工具权限,使其在引导 元数据服务器时有权添加密钥。


 


MON 能力:


包括 r/w/x 和 allow profile cap(ceph 的运行图) 例如: mon 'allow rwx' mon 'allow profile osd'


OSD 能力:


 包括 r、w、x、class-read、class-write(类读取))和 profile osd(类写入),另外 OSD 能力还允 许进行存储池和名称空间设置。 osd 'allow capability' [pool=poolname] [namespace=namespace-name] MDS 能力:


只需要 allow 或空都表示允许。 mds 'allow'


 


添加用户2:


ceph auth get-or-create 此命令是创建用户较为常见的方式之一,它会返回包含用户名(在方 括号中)和密钥的密钥文,如果该用户已存在,此命令只以密钥文件格式返回用户名和密钥, 还可以使用 -o 指定文件名选项将输出保存到某个文件。


ceph auth get-or-create client.jack mon 'allow r' osd 'allow rwx pool=mytest'


 


删除用户


ceph auth del TYPE.ID,其中 TYPE 是 client、osd、mon 或 mds 之一,ID 是用 户名或守护进程的 ID。


ceph auth del client.tom


通过文件恢复误删用户


#导出 keyring 至指定文件


root@ceph-deploy:~#  ceph auth get client.user1 -o ceph.client.user1.keyring


exported keyring for client.user1


从 keyring 文件恢复用户认证信息


ceph auth del client.user1 #演示误删除用户


ceph auth import -i ceph.client.user1.keyring #导入用户


 


授权流程


每个 mon 节点都可以对客户端进行身份认证并分发秘钥,因此多个 mon 节点就不存在单点 故障和认证性能瓶颈 mon 节点会返回用于身份认证的数据结构,其中包含获取 ceph 服务时用到的 session key, session key 通 过 客 户 端 秘 钥 进 行 加 密 , 秘 钥 是 在 客 户 端 提 前 配 置 好 的 , /etc/ceph/ceph.client.admin.keyring 客户端使用 session key 向 mon 请求所需要的服务,mon 向客户端提供一个 tiket,用于向 实际处理数据的 OSD 等服务验证客户端身份,MON 和 OSD 共享同一个 secret,因此 OSD 会信任所有 MON 发放的 tiket tiket 存在有效期 注意: CephX 身份验证功能仅限制在 Ceph 的各组件之间,不能扩展到其他非 ceph 组件 Ceph 只负责认证授权,不能解决数据传输的加密问题


 


2、挂载rbd


创建rbd


ceph osd pool create myrbd1 64 64 #创建存储池,指定 pg 和 pgp 的数量,pgp 是对存在于 pg 的数据进行组合存储,pgp 通常等于 pg 的值


ceph-admin@ceph-deploy:~$ ceph osd pool create  myrbd1  32 32 pool 'myrbd1' created ceph-admin@ceph-deploy:~$ ceph osd pool application enable myrbd1 rbd #对存储池启用 RBD 功能 enabled application 'rbd' on pool 'myrbd1' ceph-admin@ceph-deploy:~$ rbd pool init -p myrbd1 #通过 RBD 命令对存储池初始化


rbd 存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image), 并把映像文件作为块设备使用,rbd 命令可用于创建、查看及删除块设备相在的映像(image), 以及克隆映像、创建快照、将映像回滚到快照和查看快照等管理操作,例如,下面的命令能 够创建一个名为 myimg1 的映像:


$ rbd create myimg1 --size 5G --pool myrbd1


$ rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering #后续步骤会使用 myimg2 ,由于 centos 系统内核较低无法挂载使用,因此只开启部分特性。 除了 layering 其他特性需要高版本内核支持


查看指定 rdb 的信息


ceph-admin@ceph-deploy:~$ rbd --image myimg1 --pool myrbd1 info rbd image 'myimg1':        size 5 GiB in 1280 objects        order 22 (4 MiB objects)        snapshot_count: 0        id: 2cf4ddac57095        block_name_prefix: rbd_data.2cf4ddac57095        format: 2        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten        op_features:        flags:        create_timestamp: Mon Aug 23 21:24:59 2021        access_timestamp: Mon Aug 23 21:24:59 2021        modify_timestamp: Mon Aug 23 21:24:59 2021 ceph-admin@ceph-deploy:~$ rbd --image myimg2 --pool myrbd1 info rbd image 'myimg2':        size 3 GiB in 768 objects        order 22 (4 MiB objects)        snapshot_count: 0        id: 2cf5063fe8e5d        block_name_prefix: rbd_data.2cf5063fe8e5d        format: 2        features: layering        op_features:        flags:        create_timestamp: Mon Aug 23 21:25:18 2021        access_timestamp: Mon Aug 23 21:25:18 2021        modify_timestamp: Mon Aug 23 21:25:18 2021


 


 


客户端使用块存储


在客户端安装 ceph-common


客户端服务器配置 yum 源及 ceph 认证文件:


#配置 yum 源:


# yum install epel-release


 # yum install https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y


#yum install ceph-common


#从部署服务器同步认证文件:


 [ceph@ceph-deploy ceph-cluster]$ scp ceph.conf ceph.client.admin.keyring root@172.31.6.201:/etc/ceph/


客户端映射 img


[root@nano ~]#  rbd -p myrbd1 map myimg2 /dev/rbd0 [root@nano ~]#  rbd -p myrdb1 map myimg1 rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten". In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (6) No such device or address


需要关闭下面的3个属性,才能挂载,与上文一致


rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten


[root@nano ~]# lsblk


NAME            MAJ:MIN RM SIZE RO TYPE MOUNTPOINT


sda               8:0    0  20G  0 disk


├─sda1            8:1    0   1G  0 part /boot


└─sda2            8:2    0  19G  0 part


  ├─centos-root 253:0    0  17G  0 lvm  /


  └─centos-swap 253:1    0   2G  0 lvm  [SWAP]


rbd0            252:0    0   3G  0 disk


可以按正常的硬盘做文件系统、挂载


[root@nano ~]# fdisk  /dev/rbd0 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xc5be4896. Command (m for help): n Partition type:   p   primary (0 primary, 0 extended, 4 free)   e   extended Select (default p): p Partition number (1-4, default 1): First sector (8192-6291455, default 8192): Using default value 8192 Last sector, +sectors or +size{K,M,G} (8192-6291455, default 6291455): Using default value 6291455 Partition 1 of type Linux and of size 3 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@nano ~]# mkfs.ext4  /dev/rbd0p1 mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: done                             Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=1024 blocks, Stripe width=1024 blocks 196608 inodes, 785408 blocks 39270 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=805306368 24 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done                             Writing inode tables: done                             Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information:       done [root@nano ~]# lsblk NAME            MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda               8:0    0  20G  0 disk ├─sda1            8:1    0   1G  0 part /boot └─sda2            8:2    0  19G  0 part  ├─centos-root 253:0    0  17G  0 lvm  /  └─centos-swap 253:1    0   2G  0 lvm  [SWAP] rbd0            252:0    0   3G  0 disk └─rbd0p1        252:1    0   3G  0 part [root@nano ~]# mount /dev/rbd0p1 /mnt [root@nano ~]# cd /mnt [root@nano mnt]# ls lost+found [root@nano mnt]# touch myaaa [root@nano mnt]# ls lost+found  myaaa


 


3、ceph radosgw(RGW)对象存储


 RGW 提供的是 REST 接口,客户端通过 http 与其进行交互,完成数据的增删改查等管理操作。 radosgw 用在需要使用 RESTful API 接口访问 ceph 数据的场合,因此在使用 RBD 即块存储得 场合或者使用 cephFS 的场合可以不用启用 radosgw 功能。


部署 radosgw 服务


如果是在使用 radosgw 的场合,则以下命令将 ceph-mgr1 服务器部署为 RGW 主机:


root@ubuntu-ceph1:~#  apt-cache madison radosgw


root@ubuntu-ceph1:~#  apt install radosgw=16.2.5-1bionic


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph-deploy --overwrite-conf rgw create ubuntu-ceph1


验证:


http://192.168.202.142:7480


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_ceph


验证 radosgw 存储池:


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_cephfs_02


4、删除存储池


如果把存储池删除会导致把存储池内的数据全部删除,因此 ceph 为了防止误删除存储池设 置了两个机制来防止误删除操作。 第一个机制是 NODELETE 标志,需要设置为 false 但是默认就是 false 了


如果设置为了 true 就表示不能删除。


root@ubuntu-ceph1:~# ceph osd pool get mybrd  nodelete


nodelete: false


集群范围的配置参数 mon allow pool delete,默认值为 false,即监视器不允许 删除存储池,可以在特定场合使用 tell 指令临时设置为(true)允许删除,在删除指定的 pool 之后再重新设置为 false


root@ubuntu-ceph1:~# ceph tell mon.* injectargs --mon-allow-pool-delete=true


root@ubuntu-ceph1:~# ceph osd pool rm  mybrd  mybrd  --yes-i-really-really-mean-it


pool 'mybrd' removed


root@ubuntu-ceph1:~# ceph tell mon.* injectargs --mon-allow-pool-delete=false


5、Ceph-FS 文件存储


Ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使用 ceph 集群作为数据存储服务器。 Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds 进程管 理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。


部署 MDS 服务:


在指定的 ceph-mds 服务器部署 ceph-mds 服务,可以和其它服务器混用(如 ceph-mon、


ceph-mgr)


Ubuntu:


root@ubuntu-ceph1:~# apt-cache madison ceph-mds


root@ubuntu-ceph1:~#  apt install ceph-mds=16.2.5-1bionic


部署:


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create  ubuntu-ceph1


 


验证 MDS 服务


MDS 服务目前还无法正常使用,需要为 MDS 创建存储池用于保存 MDS 的数据。


$ ceph mds stat


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_cephfs_03


 #当前为备用状态,需要分配 pool 才可以使用。


 


创建 CephFS metadata 和 data 存储池


 


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-metadata 32 32 ceph-admin@ceph-deploy:~/ceph-cluster$ ceph osd pool create cephfs-data 64 64 ceph-admin@ceph-deploy:~/ceph-cluster$ ceph pg ls -by-pool cephfs-data | awk  print  '{$1,$2,$115}' ceph-admin@ceph-deploy:~/ceph-cluster$ ceph fs new mycephfs cephfs-metadata cephfs-data new fs with metadata pool 11 and data pool 12 ceph-admin@ceph-deploy:~/ceph-cluster$ ceph fs ls name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ] ceph-admin@ceph-deploy:~/ceph-cluster$ ceph fs status mycephfs mycephfs - 0 clients ======== RANK  STATE       MDS          ACTIVITY     DNS    INOS   DIRS   CAPS   0    active  ubuntu-ceph1  Reqs:    0 /s    10     13     12      0         POOL         TYPE     USED  AVAIL   cephfs-metadata  metadata  96.0k   189G    cephfs-data      data       0    189G   MDS version: ceph version 16.2.5 (0883bdea7337b95e4b611c768c0279868462204a) pacific (stable)


验证 cepfFS 服务状态:


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph mds stat


mycephfs:1 {0=ubuntu-ceph1=up:active}


 


客户端挂载 cephFS:


 在 ceph 的客户端测试 cephfs 的挂载,需要指定 mon 节点的 6789 端口:


ceph-admin@ceph-deploy:~/ceph-cluster$ cat ceph.client.admin.keyring


[client.admin]


key = AQAuHCJhpr2nLhAAaJqMjViYIVOK8KZ3fjgm+g==


caps mds = "allow *"


caps mgr = "allow *"


caps mon = "allow *"


caps osd = "allow *"


#ubuntu 及 centos client 挂载(内核版本 2.6.34 在 3.6.34 及以上):


mount -t ceph 192.168.202.142:6789:/     /mnt -o name=admin,secret=AQAuHCJhpr2nLhAAaJqMjViYIVOK8KZ3fjgm+g==


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_Ubuntu_04


数据写入验证:


dd if=/dev/zero  of=/mnt/cephfs-testfile bs=4M count=25


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_Ubuntu_05


验证 ceph 存储池数据空间


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_ceph_06


 


mds高可用


root@ubuntu-ceph1:~# apt-cache madison ceph-mds


root@ubuntu-ceph1:~#  apt install ceph-mds=16.2.5-1bionic


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ubuntu-ceph2


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ubuntu-ceph3


ceph-admin@ceph-deploy:~/ceph-cluster$ ceph mds stat


mycephfs:1 {0=ubuntu-ceph1=up:active} 2 up:standby


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_cephfs_07


ceph fs status


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_ceph_08


ceph fs get mycephfs


设置处于激活状态 mds 的数量:


目前有三个 mds 服务器,但是有一个主二个备,可以优化一下部署架构,设置为为两主一



ceph fs set mycephfs max_mds 2 #设置同时活跃的主 mds 最大值为 2。


ceph笔记之用户权限,挂载brd/cephfs及mds高可用_Ubuntu_09


 


 

©著作权归作者所有:来自51CTO博客作者ruyinote的原创作品,如需转载,请注明出处,否则将追究法律责任
ceph笔记之用户权限,挂载brd/cephfs及mds高可用
https://blog.51cto.com/u_13788458/3659476

Ubuntu系统用ceph-deploy部署ceph-多极客编程

ceph-deploy部署ceph   ceph的组件和功能: ceph的核心组件包括:OSD、monitor和mds三大组件 OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理。

部署Tshark+ELK数据包分析平台-多极客编程

一、 环境描述 系统版本:Ubuntu20.04.2LTS Tshark:thark_3.2.3-1 Logstash:logstash-7.12.0-amd64.deb Elasticsearch:elasticsearch-7.12.0-amd64.deb Kibana:kibana-7.12.0-amd64.deb   系统结构图参考: 二、 软件准备 1.   下载logstash; #

Ubuntu 20.04.2 LTS Netplan 配置网络-多极客编程

使用NetPlan网络管理工具配置网卡. 1、单网卡配置dhcp获取地址; root@ubuntu20:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens3: dhcp4: yes

记一次 Ubuntu 内核升级故障处理-多极客编程

文章链接 情况介绍 负责的项目下有一批 ubuntu 18.04 的服务器在 AWS 上,因为安全的问题,需要把内核从 5.3.0 升级到 5.4.0。 首次升级为测试环境测两台都是ubuntu 18.04 的版本 内核也都为5.3.0。第一台升级进展很顺利。软件更新,然后内核进行单独升级。等到需要重启的时候出现了问题。 处理问题及解决思路 问题1 无法挂载磁盘 首先遇到的第一个问题 解决思路:

Ubuntu系统用ceph-deploy部署ceph-多极客编程

ceph-deploy部署ceph   ceph的组件和功能: ceph的核心组件包括:OSD、monitor和mds三大组件 OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理。

Ceph常用操作维护手册-多极客编程

一、更换磁盘 1、  确认需要更换的磁盘对应的盘符、OSD ID; root@Ceph-B**A**-04-S2-60:~# df -h |grep 17 /dev/sdp3       1.1T  566G  551G  51% /var/lib/ceph/osd/ceph-17 *sdp为服务器上对应的盘符; *ceph-17 17为OSD对应的ID;   2、  确认磁盘在服务器上对应的槽位

分布式存储Ceph之PG状态详解-多极客编程

1. PG介绍继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下:在架构层次上,PG位于RADOS层的中间。 a. 往上负责接收和处理来自客户端的请求。 b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。面向容灾域的备份策略使

CentOS7使用ansible部署Ceph(Nautilus)-多极客编程

环境角色   计算机名 角色 Publie-IP Cluster-IP inf-c7-n1 mon,osd,mgr,prom/node-exporter 10.199.13.119 192.168.31.119 inf-c7-n2 mon,osd,mgr,prom/node-exporter 10.199.13.122 192.168.31.122

Ceph运维之rbd常用命令-多极客编程

1、创建池[root@inf-c7-n1 ~]# ceph osd pool create data-vol 32 32pool 'data-vol' created[root@inf-c7-n1 ~]# ceph osd pool application enable data-vol rbdenabled application 'rbd' on pool 'data-vol'2、查看池[r