0
点赞
收藏
分享

微信扫一扫

Ceph学习 -8.认证管理-用户基础

成义随笔 04-14 21:31 阅读 2
cephlinux

Ceph:ceph被称为面向未来的存储还是一个分布式的存储系统,非常灵活,如果需要扩容,只要向ceph集中增加服务器即可。ceph存储数据时采用多副本的方式进行存储,生产环境下,一个文件至少要存三份,ceph默认也是三副本存储。

可以实现的 存储方式

块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”。

文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹。

对象存储:像百度云盘一样,需要使用单独的客户端。需要编写代码。

Ceph存储集群至少需要一个Ceph监视器、Ceph管理器和Ceph OSD(对象存储守护程序)。运行Ceph文件系统客户端时需要Ceph元数据服务器。

Ceph Monitor(ceph-mon)监视器:Ceph Mon维护Ceph存储集群映射的主副本和Ceph存储集群的当前状态,监控器需要高度一致性,确保对Ceph存储集群状态达成一致。维护着展示集群状态的各种图表,包括监视器图、OSD图、归置组图、和CRUSH图。少数服从多数,至少一半以上

Ceph OSD 守护进程:Ceph OSD用于存储数据。此外Ceph OSD利用Ceph节点的CPU、内存和网络来执行数据复制、纠错代码、重新平衡、恢复、监控和报告功能。存储节点有几块硬盘用于存储,该节点就会有几个osd进程。

MDS:Ceph元数据服务器(MDS)为Ceph文件系统存储元数据。

RGW:对象存储网关。主要为访问Ceph的软件提供API接口。

搭建ceph集群:

node1:eth0->192.168.88.11

node2:eth0->192.168.88.12

node3:eth0->192.168.88.13

client1:eth0->192.168.88.10

为node1-3添加额外2块20GB的硬盘

3f60a434e1094020a76d6534bf0fdb58.png

在192.168.88.240的主机上配置Ceph镜像的yum源。通过vsftpd服务提供网络yum源。

4859a6cc3f3c4cdfaa86d1e4696da3be.png

6ad43ab560b84ddc8e7eb50fdaf0b06a.png

c163cd5eb2424575bf9f822b5282b400.png

创建ceph的ansible工作目录

4f07ddbf9a8f4147b32352e2e3cd23c3.png

99aae1956ddd4bd09ca6335e65486091.png

配置ceph.repo

de9a2907e3694fcfb57f47db7b9dede6.png

169ffeba10a44101a3c807356a9285a4.png

centos.repo

b2fda11a3ff84482a98d6cf4d53c9e74.png

eaa3332e6c89484a869d3bd6ee0882a2.png

编写yum剧本

dd523faef47d498a802f954f690454aa.png

d779cd803e3d46acac6030eb130aed9c.png

执行剧本

4c8030881bf94124a8ef51c44814f753.png

查看yum

801bf1932cfc4dde90f94ac87dc26e0c.png

关闭各个节点的防火墙和SELinux

3d2164230fdd4b00abb1d4f303ccc354.png

0062982ab0e64fd48a017940b6d45fd2.png

ceph为我们提供了一个ceph-deploy工具,可以在某一节点上统一操作全部节点。将node1作为部署节点,将来的操作都在node1上进行,需要node1能够免密操作其他主机。

9d4c0ea26cdb45dabf16a0b9f1914d8c.png

4d9759c0b4da46b8a88c5f6640f388d8.png

在所有的主机上配置名称解析。

46b260d8f0c248d0b1e885941044a07f.png

6383bdfe1b6d493fb453eaf21da406dd.png

blockinfile模块:几行字符串为一块出现在文件中。

39aa5af31689465b8e946f83c75b21dd.png

b736cade96fa4e46a1cd4bd47d810359.png

执行剧本

3d880d944233416eb23f83c0fc542c12.png

查看hosts文件,所有节点都配置了名称解析

209134a0a9a44c2ca3efd8d089269a56.png

39cee3452c3b460fa310e42931f6d23c.png

安装集群,在三个节点上安装软件包

可以在node1上通过ssh node{1..3} yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw 

使用ansible剧本安装软件包

5c9b96cba73c48679168a0df05fba323.png

d76ca5d9520b4b0cbdfadfb11fd1ee0e.png

查看软件包

ac3770ca5e544c6caaf5ab0eff41b418.png

配置ntp服务器,让服务器时间同步

7a5560aad1704fc18d2bbdd884cce546.png

编辑/etc/chrony.conf文件

4177665520d54c6bb52ce9c35065dc04.png

allow允许访问的主机

e5c852f147fa40349465ef9d6a03880f.png

启动服务

2d22bf8a67064f8dba738606c4bb53c7.png

让节点安装chrony

7b6cc60c10c24fd884a4cef358fb39b1.png

编辑chrony配置文件,把server开头的全部注释掉添加NTP服务器(Ctrl+v、I、编辑、ESC)

9d88415d74b949749c02000e0d0f13f8.png

把该文件拷贝到其他节点

232f609c8b49422c91902271a1c11545.png

重启各个节点的时间服务器

bfe7586b872d4e619cae3af24e0533d9.png

查看是否配置成功

cc0535f3d9204eec9fb7aceca1b728c7.png

在node1节点安装ceph-deploy部署工具

812a4c477bfc4f9e9b56bcb918634887.png

查看使用帮助,ceph-deploy --help

创建目录ceph工作目录

d67ee9e9597d4e8984089a44ff13f515.png

创建一个新集群 ceph-deploy new node{1..3}

2cb3ce0ab74948b5a750fe8d3964fe52.png

ceph.conf:集群配置文件

ceph-deploy-ceph.log:日志文件

ceph.mon.keyring:共享密钥

00f264204fbc48c8993742075eea65ab.png

编辑集群配置文件,开启块存储的默认特性开启快照功能。rbd_default_features = 1

5989cc52438740beb5e85a3b896697e5.png

45fb31d33fec4caca0a579fedd41f05e.png

初始化Monitor。 ceph-deploy mon create-initial

7dfbc2afc37f43fa9f6c8e0f03a137c0.png

如果安装错误可以清理数据重新安装:ceph-deploy purge node{1..3}

查看ceph-monitor服务

1669b4bbf1054ecfbb5659297cbbebff.png

查看ceph集群状态。ceph -s 。因为还没有硬盘,所以状态是HEALTH_ERR

1fd36ad7ffce40918d3c312e0f065b06.png

在执行ceph-deploy时要做ceph的工作目录中执行。查看disk命令

41a64acefaee4b94843f2280ed0b43e5.png

初始化各主机的硬盘。 ceph-deploy disk zap node1:sdb node1:sdc

b7d19f0f1b734b0eaae410fdadd5911b.png

7f254938f23e4701bfc9ca5267c287f4.png

059e5896585941c4a9db49308ab8ffe1.png

查看osd命令

54a3ae9c39614f329292790234419511.png

创建存储空间,ceph会将硬盘分为两个分区,一个分区大小为5GB,用于ceph的内部资源,另一个分区是剩余的全部空间。 ceph-deploy osd create node1:sd{b,c}

d17961bbb9fa4bc3a8466c96e0600c11.png

98a7115d712047768db51bf347a7d842.png

371902f4e74f44449b5386efdda0f85e.png

9395ce8f4c974415a746626d207b94c3.png

查看ceph的状态。

monmap:Monitor组件,只要有两个就表示正常。

osdmap:硬盘组件。每一个硬盘osd就会开启一个守护进程。6块硬盘所以有6个osds。

c6ce5a26616f4e5991da65e92d3beb37.png

node1上有两块硬盘所以有0、1进程,而node2/3则是2345进程

599b588fcfc34f3daea29e1b14181077.png

块设备存储数据时可以一次存取很多,字符设备只能是字符流。

55b67364edd34776b85855de669e4056.png

使用rbd命令操作每个磁盘剩余的15GB内存,在node的每个节点都能操作该命令。

查看存储池。ceph osd lspools。rbd为存储池的名称

5d9b228f972a4e199d3c1081a898cf98.png

ceph df:查看详情,全局有90G而存储池只有30G,因为ceph存储文件要存储三个副本。

03aee2f084824756b503161129c6c0fe.png

查看存储池的副本机制。ceph osd pool get rbd size

413a0b01932d440a8a3ed5c81faa0255.png

在node1上创建磁盘的使用空间(镜像)。rbd命令。

fe764e51263a485eb4b89e3de5d9ac89.png

 rbd create demo-image --size 10G

f812f1327c5e4abb9a5765187026c37c.png

此时在node2和node3中也能看见该镜像。

7ffc400a3a864a15809349c64785d734.png

查看镜像信息。 rbd info demo-image

3f15de0cabf4425d8d4a0b8cd49213ec.png

修改改镜像大小。rbd resize --size 15G demo-image

2ccb5a27059d42e9adf40834e3495b73.png

此时该镜像已经变为15G

1f1f6a4abb7f4c67ad3b5a71a0acb570.png

缩减时需要加上--allow-shrink

当创建100G的镜像时能够成功创建,但能够使用的内存容量只有30G,超过30G就会报错

aeb9029873244ac18b6727b0c001d324.png

删除镜像。 rbd rm img01

41bc65793ca74c478ec394bbfeb48653.png

客户端使用快设备步骤:

1、要安装ceph的客户端软件才能使用。

2、ceph集群的位置,通过配置文件说明集群地址。

3、授权。让客户端能够访问该ceph集群。

安装ceph客户端软件。 yum -y install ceph-common

0c435658f8ba40f28c91e8b0a4949b06.png

此时连接不了集群需要将配置文件和密钥keyring文件拷贝给客户端

165774575a1946b9bd8ac13a6c5ac1f3.png

c0168c054e4f41868e3af009f280c6e6.png

此时client1就能使用rbd命令

d07f6cf467734d43a360c734ebeb0955.png

此时在客户端也能创建镜像

8bc4d319e302484f98a230630e2c8b4a.png

客户端使用rbd命令操作的是ceph使用node1节点删除该镜像此时客户端上也没有了该镜像。

063664ea7d5b4de5b47e8f38698084ce.png

d60d73520e7d47a7a254d13c79364c9f.png

让镜像变成本地硬盘。rbd map demo-image:映射为本地硬盘,不能多次映射。

c60faecbecce4ed8a742e9c1873d1206.png

9a1486045b89413db307f6ba9a2f2903.png

此时就能使用该硬盘格式化挂载使用。

1497fe4732ae4102bada72b36b907e43.png

查看映射的本地硬盘。rbd showmapped

6d7e7303e2614f68b6006f3b77528954.png

卸载该使用的镜像

d8ce91db62af45d69fdd5d18e1d3272a.png

快照:可以保存某一时间点时的状态数据。希望回到以前的一个状态,可以恢复快照

创建img1镜像并映射为本地硬盘,然后格式化挂载

9ddc4dd060d74b40ab0c73af67917195.png

7dc4be3b66bb41f5ad8098488e47d20f.png

查看img1的快照。rbd snap ls img1

5d550cfc8ead424983a0f383f8727950.png

创建img1快照。rbd snap create img1 --snap img1-snap1

bcc67ebd071d4135bd091ccae75af01c.png

删除快照。rbd snap remove img1 --snap img1-snap1

4e8b9f864cf3413689ccaec7ffcb47c2.png

取消挂载、取消映射的本地硬盘、删除镜像

1f03217f618a48c7bfee2f8d22269aae.png

快照实验

创建镜像然后把该镜像挂载到客户端。

f88485bd84b840b2a2ca6c456fd8da36.png

40bddaaf8ff340deadfe45acd43dde6d.png

向/mnt中写入数据

69e90b4eaa4540c5a6ebb49418f837b3.png

创建快照

0acff3610afd4feaa23f0b92a9e77c8b.png

把/mnt中的数据删除

c4a290d96cf744ebbc848a9c103a0ff0.png

此时需要恢复快照就先停止映射本地硬盘,防止在恢复快照的时候有数据加入该硬盘

33f8acd205bd4b5d8fa4ee8cc9b599fc.png

恢复快照,回滚img1到快照img1-snap1。rbd snap rollback img1 --snap img1-snap1

17ad1e87c4e145a7b2827fc22c6d60fb.png

重新挂载,此时不需要格式化。查看目录,恢复到了被删除前、创建快照的状态。

92bb4597c8354a5aab2ee16a44633c9d.png

保护快照误删除。rbd snap protect img1 --snap img1-snap1

defec6c043c34fd9b72ce5f008afed9d.png

此时就不能随便删除快照了

47040d9f56ac4ff88b7c60c9f62655d6.png

当多个节点同时挂载就会产生存储脑裂,数据发生混乱。

在client1创建myimg1镜像挂载写入数据

4f9b4b03f1d14ed5a3110c40f9c58673.png

在node1映射myimg1镜像挂载写入数据

1a844c77c8f24b3abe59d0184cbb6875.png

client和node分别写入数据

c0d9d9afcaeb43339e24552792892e97.png

d8295a9612d440348c926935d891a6d1.png

然后取消重新挂载,此时就发生了脑裂,hosts文件消失了,发生了数据混乱

34870b72f8654fba9e070fd59707544b.png

fd001856a862498d8b4f39969cc82492.png

快照克隆:不能将一个镜像同时挂载到多个节点,如果这样操作将会损坏数据。如果希望不同的节点,拥有完全相同的数据盘,克隆是基于快照的,不能直接对镜像克隆。快照必须是受保护的快照才能克隆。

克隆流程:镜像->快照->受保护的快照->克隆的镜像

创建镜像克隆

创建名为img2的镜像,大小10GB

34d94dffa6cf496b80c0ae0a8f464b33.png

向镜像中写入数据

e068fee829364ed69174e792b8bafc2c.png

卸载镜像

b65411d7ce6e4c1cac7b7753c51a08e8.png

为img2创建名为img2-snap1的快照,并保护起来

8218c03793834172ae3ce667ea54e4f8.png

克隆镜像。 rbd clone img2 --snap img2-snap1 img2-snap1-1

2bbb66ac62a14199b35e159abdc1a682.png

在客户端挂载该克隆镜像

9093345bce894ffd83a02af2e39a72cb.png

而挂载另一个克隆镜像时就会报错

bf601f4ce5064de687bf8dc5b10023ee.png

这是因为这两个克隆镜像,克隆的是同一个镜像,该UUID(全局唯一标识符)相同,无法挂载相同设备两次。

9bde64b9238f4d58a476d28991b768b2.png

当在其他节点挂载另一个镜像时就没有问题,一个设备只能挂载一个唯一的UUID。

393083031d0b4630a7a2b506132b263b.png

查询镜像和快照

rbd snap ls img2:列出该镜像所有快照

168f57e3eef8406fbe9120c12690bd3a.png

rbd info img2 --snap img2-snap1:查看该镜像的快照信息。protected:true受保护。

e827d2bdb05f45a39a3d448fa84b9f4a.png

该img2-snap1-1的镜像的父亲是rbd池中的img2镜像的img2-snap1快照

ca0f9a450b564b6aa47dba0e7f1fa51b.png 合并克隆镜像,将父镜像中的内容拷贝到克隆的镜像,然后和父镜像断开联系,独立为一个单独的镜像。

查看镜像内存。rbd du img2

260607be8e224f9eae441b7a19b3bb6d.png

合并镜像:rbd flatten img2-snap1-1。内存容量增加。

d32787a5befc46a1866f037e513b37ae.png

查看合并镜像信息,此时parent父镜像也消失 了

41651e749ca74c7ca7a63d41840a5665.png

如果要删除img2镜像就需要先把克隆的镜像删除,然后再取消受保护的快照,并且删除快照,最后删除镜像。

1、只删除有快照或者克隆的镜像删除失败,提示有快照未删除。rbd rm img2

7dd7d91bd83d42faa40a0ff364ae5fbb.png

2、查看img2有那些快照: rbd snap ls img2

89773b34d648462ea623c370b8a36f02.png

3、删除快照:rbd snap remove img2 --snap img2-snap1。提示快照受保护。

da042d554c8b4909ae483c7d576122a6.png

4、取消快照保护:rbd snap unprotect img2 --snap img2-snap1。提示有子镜像

eafbc5c47f254247bcb33816e426014c.png

5、查看有那些子镜像:rbd children img2 --snap img2-snap1

79976e06439b4c24bae07e9f0747bf29.png

6、删除子镜像:rbd rm img2-snap1-2。提示子镜像正在被使用

9a1295f3a28a4509a103e98288a824ca.png

7、查看子镜像正在被那个主机使用:rbd status img2-snap1-2

d611ac584ad34fa59d0b17eb1d94601a.png

8、取消192.168.88.10主机上img2-snap1-2镜像的使用。查看该主机的映射本地硬盘,取消映射(如果有挂载先取消挂载)。

14f7b975b88047aa83139826e4d74657.png

9、然后就能删除子镜像、取消受保护的快照、删除快照、删除镜像。

4ae6fdfb061a4690a3169189abc7b5fb.png

此时把img2主镜像删除了而之前的克隆镜像img2-snap1-1中还有数据能正常使用

353eef7b134d43d4959d6f759f743d5b.png

ceph文件系统:文件系统相当于是组织数据存储的方式,格式化时就是在为存储创建文件系统。Linux对ceph有很好是支持,可以把ceph文件系统直接挂载到本地。要想实现文件系统的数据存储方式,需要有MDS组件(元数据服务器)。

数据相当于文件的内容(如cat查看文件),元数据相当于文件的属性(stat查看文件)。

803a4caa23ab4b45a0164c2b531f2056.png

在node3节点安装MDS:yum -y install ceph-mds

79ce869151084441b49fb86a4dbce244.png

在node1的ceph-cluster目录通过ceph-deploy命令配置node3主机的MDS服务:

 ceph-deploy mds create node3

d27abb81eb5e4b7dbdb2cd735f53e20d.png

查看node3的MDS服务

223f7b9189574c9983e4420d9124af17.png

元数据就是描述数据的属性。如属主、属组、权限等。ceph文件系统中数据和元数据是分开存储的。

新建存储池:归置组PG:存储池包含PG,PG是一个容器,用于存储数据。为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有数据扁平化存放。通常一个存储池中创建100个PG。

创建ceph文件系统:

1、创建一个名为data1的存储池,用来存储数据,有100个PG:ceph osd pool create data1 100

d04d6403297c4e02a122c72d3d97fdf1.png

2、创建一个名为metadata1的存储池,用来存储元数据。 ceph osd pool create metadata1 100

c2a5e81b941d4b169e6fe4f3c0899baa.png

查看存储池:ceph osd lspools

6733b128b7924cb7adc039107232e417.png

存储池的最大内存显示30G是因为潜在内存最大为当其他存储没有使用时全部的内存空间30G。

ba7a903cc7e94f6baff1ccc93ecdf961.png

要删除存储池:ceph osd pool delete name name --yes-i-really-really-mean-it

3、创建文件系统new后面第一个表示要创建文件系统的名字,第二个存储池用来存储元数据,第三个存储池用来存储数据,创建完查看存储池

ceph fs new myfs1 metadata1 data1

4c90b630078545888b62ffef98d152bb.png

查看文件系统: ceph fs ls。metadata pool:元数据池为metadata1,data pool:数据池为data1。

b164914a12d34d8d818b2b271eea5b00.png

4、挂载文件系统需要密码,查看/etc/ceph/ceph.client.admin.keyring

cdc12f5f1e8e48a085879bd18cde045c.png

-t:指定文件系统类型。-o:是选项,提供用户名和密码。cephfs的端口号默认是6789

eb8d7b17fa944e5ba4d1bb63c7535ca4.png

mount -t ceph -o name=admin,secret=AQCn3Qhmt+9zARAAv60ERLf6OQN0Lefai277DQ== 192.168.88.13:6789:/ /mydata。ceph是一个整体挂载11,12,13都可以,但最后工作的还是安装MDS服务的node3主机。

e85e4691a489492da33d21731a18fbbd.png

当挂载的11主机,拷贝数据

f9b0d8f53c2b4ac885716c3f862b7b97.png

7f69e40531d64103bad92bb86943558e.png

关闭13主机

f4f419f824344a9c80542d03d6734076.png

此时客户端查看共享该挂载目录就会停止工作一直搜索文件,被卡住。

0da07451c63e4b4abefd71e5d9c95d69.png

当开启13主机后就会显示数据,恢复正常。

8891f5e9bf19422fb24f45864e4b6456.png

5、当node3关机,客户端拷贝文件到共享目录,被卡住。

7b481ea363eb4e86a2329d76f0b7b496.png

使用node2也部署MDS服务

227d40c69f7840608f1d9a673bdd17d1.png

此时拷贝文件就能拷贝了

9f41ecdc721b4105888a6b806cbcbd37.png

对象存储:需要专门的客户端访问,键值对存储方式,对象存储需要rgw组件。

安装部署:ceph-deploy rgw create node3

3903652983f646e69951206c43342ba7.png

886064f297214796b6355ddc8fa56342.png

举报

相关推荐

0 条评论