冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述ceph笔记之用户权限,挂载brd/cephfs及mds高可用相关的知识,希望能为你提供帮助。
1、用户权限管理
添加用户1:
ceph auth add: 此命令是添加用户的规范方法。它会创建用户、生成密钥,并添加所有指定的能力.
$ ceph auth add client.tom mon \'allow r\' osd \'allow rwxpool=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 createmyrbd132 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 objectsorder 22 (4 MiB objects)snapshot_count: 0id: 2cf4ddac57095block_name_prefix: rbd_data.2cf4ddac57095format: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features:flags:create_timestamp: Mon Aug 23 21:24:59 2021access_timestamp: Mon Aug 23 21:24:59 2021modify_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 objectsorder 22 (4 MiB objects)snapshot_count: 0id: 2cf5063fe8e5dblock_name_prefix: rbd_data.2cf5063fe8e5dformat: 2features: layeringop_features:flags:create_timestamp: Mon Aug 23 21:25:18 2021access_timestamp: Mon Aug 23 21:25:18 2021modify_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个属性,才能挂载,与上文一致
【ceph笔记之用户权限,挂载brd/cephfs及mds高可用】rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten
[root@nano ~]# lsblk
NAMEMAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
rbd0252:003G0 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:pprimary (0 primary, 0 extended, 4 free)eextended 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: doneFilesystem 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: doneWriting inode tables: doneCreating journal (16384 blocks): done Writing superblocks and filesystem accounting information:done [root@nano ~]# lsblk NAMEMAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:0020G0 disk ├─sda18:101G0 part /boot └─sda28:2019G0 part├─centos-root 253:0017G0 lvm/└─centos-swap 253:102G0 lvm[SWAP] rbd0252:003G0 disk └─rbd0p1252:103G0 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+foundmyaaa
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
文章图片
验证 radosgw 存储池:
文章图片
4、删除存储池
如果把存储池删除会导致把存储池内的数据全部删除,因此 ceph 为了防止误删除存储池设 置了两个机制来防止误删除操作。 第一个机制是 NODELETE 标志,需要设置为 false 但是默认就是 false 了
如果设置为了 true 就表示不能删除。
root@ubuntu-ceph1:~# ceph osd pool get mybrdnodelete
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 rmmybrdmybrd--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 createubuntu-ceph1
验证 MDS 服务
MDS 服务目前还无法正常使用,需要为 MDS 创建存储池用于保存 MDS 的数据。
$ ceph mds stat
文章图片
#当前为备用状态,需要分配 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 | awkprint\'{$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 ======== RANKSTATEMDSACTIVITYDNSINOSDIRSCAPS0activeubuntu-ceph1Reqs:0 /s1013120POOLTYPEUSEDAVAILcephfs-metadatametadata96.0k189Gcephfs-datadata0189GMDS 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==
文章图片
数据写入验证:
dd if=/dev/zeroof=/mnt/cephfs-testfile bs=4M count=25
文章图片
验证 ceph 存储池数据空间
文章图片
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 fs status
文章图片
ceph fs get mycephfs
设置处于激活状态 mds 的数量:
目前有三个 mds 服务器,但是有一个主二个备,可以优化一下部署架构,设置为为两主一
备
ceph fs set mycephfs max_mds 2 #设置同时活跃的主 mds 最大值为 2。
文章图片
推荐阅读
- Linux(内核剖析):14---内核数据结构之链表(struct list_head)
- Linux(内核剖析):13---系统调用的实现与解析
- Linux(内核剖析):12---进程调度之与调度相关的系统调用
- Linux(内核剖析):11---进程调度之实时调度策略(SCHED_FIFOSCHED_RRMAX_RT_PRIO实时优先级)
- 斗鱼直播三面(说说JDK与JRE的区别是什么!)
- SpringCloud升级之路2020.0.x版-22.Spring Cloud LoadBalan
- 本图文详细教程教你电脑插上耳机没声音怎样处理
- 本图文详细教程教你win10专业版与企业版的区别
- win10专业版密钥最新推荐