1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Ceph分布式文件系统及服务器远程存储的部署

Ceph分布式文件系统及服务器远程存储的部署

时间:2020-11-05 07:47:30

相关推荐

Ceph分布式文件系统及服务器远程存储的部署

要求

1)Ceph分布式文件系统的平台要求:CentOS Linux 7;2) Monitor节点要求:容忍单点故障,任何故障下保持一致性;3) 数据节点要求:容忍单点故障,单点故障下无数据丢失;4) 数据分布:数据分布均匀,不均匀率不高于10%;5) 存储网络:管理网络及存储网络分离,避免互相影响;6) 使用Ceph块存储,创建虚拟计算资源;7) 在CentOS 系统上挂在并使用Ceph文件存储。

分析

1)Monitor节点多Monitor节点实现备份,防止单点故障Monitor节点以多数优先,当单点故障时,剩下的monitor节点需要自己意识到除了自己还有其他monitor,才认为自己还可用。所以monitor节点的数量至少需要三个。monitor节点的hostname(主机名)不能一致。由于我是克隆的,全都是一致,所以此处用命令进行修改:

hostnamectl set-hostname cxx2

2)数据节点(OSD)单点故障下无数据丢失,数据复制份数至少为两份多OSDOSD状态说明:a. 集群内(in)b. 集群外(out)c. 活着且在运行(up)d. 挂了且不再运行(down)正常情况下OSD的状态是up in状态,如果down掉OSD,它的状态会变为down in,等待数据均衡完成后osd变为down out状态,Ceph 会把其归置组迁移到其他OSD, CRUSH 就不会再分配归置组给它。3)数据分布PG数量越多,权衡越好MAX(pg)=OSD数量*100/复制份数

原理

1)OSD负责完成数据存储和维护功能对象存储设备2)Monitor负责完成系统检测和维护若干个3)PG放置组

步骤

安装相关软件

安装ceph jewel版本软件仓库

yum install -y centos-release-ceph-jewel.noarch

1、安装monitor服务相关软件包

yum install -y ceph-mon.x86_64

2、安装osd服务相关软件包

yum install -y ceph-osd.x86_64

3、安装mds服务相关软件包

yum install -y ceph-mds.x86_64

相关准备

关闭selinux的增强功能

vi /etc/selinux/config

关闭防火墙

systemctl disable firewalld //禁止开机自启动systemctl stop firewalld.service //关闭防火墙

Monitor节点配置

创建空的配置文件

生成UUID

3e38aec9-7d09-48a6-9f58-48760fec0d82

编辑配置文件

vi /etc/ceph/ceph.conf

[global]fsid = 3e38aec9-7d09-48a6-9f58-48760fec0d82 mon initial members = cxx mon host =192.168.25.42 public network =192.168.25.0/24cluster network =192.168.25.0/24auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 osd pool default size = 3 osd pool default min size = 2 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1 [mon.cxx]host =cxxaddr = 192.168.25.42

创建mon key

创建管理用户key

ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'

在mon key中导入管理用户key

创建MAP

创建数据目录并初始化

mkdir /var/lib/ceph/mon/{cluster-name}-{mon-id}

其中cluster-name需要采用ceph,若不是采用ceph会额外的需要一些配置。此处便于简便,所以采用ceph。

但是由于我一开始不知道要用ceph,所以用了自定义的。

但是经过查看发现系统默认帮我生成了一个ceph-cxx,且相关的信息都保存在该目录下。而自己创建的cxx_cluster-cxx下没有任何东西。

后续数据目录则采用ceph-cxx

修改数据目录拥有者为ceph

启动服务

systemctl start ceph-mon@cxx

查看状态

相关报错

查看monitor状态迟迟没有反应

1)检查是否能够跟初始成员进行联系

若无法进行ping通则检查是否有相应的映射关系

vi /etc/hosts

新增monitor主机步骤

此实验用三台monitor(三台centos7、在同一个网段能够进行互相通信),此处需要再新增两台monitor

修改hosts文件

vi /etc/hosts

建议将三台机器的ip以及主机名都映射进去

2. 将初始成员的monitor节点的ceph配置文件及ceph client key导入到第二台monitor主机的/etc/ceph目录下

修改相关信息

vi /etc/ceph/ceph.conf

创建数据目录

mkdir /var/lib/ceph/mon/{cluster-name}-{mon-id}

cluster-name:ceph

mon-id:主机名

获取集群认证

ceph auth get mon. -o /tmp/key-cxx3cat /tmp/key-cxx3

前提:该monitor能够与初始成员monitor取得联系

获取集群MAP配置

ceph mon getmap -o /tmp/map-cxx3

初始化集群

ceph-mon -i cxx3 --mkfs --monmap /tmp/map-cxx3 --keyring /tmp/key-cxx3

修改目录拥有者

chown -R ceph:ceph /var/lib/ceph

启动服务

systemctl start ceph-mon@cxx3

另一台monitor

结果

排错

针对monitor能够正常启动,但是无法在集群中查看到该monitor

解决:

在老师的帮助下找到第三台monitor的仓库中只有12.2.11版本的,经过查看知道,其他两台正常的monitor比第三台多了一个仓库(此仓库中有ceph14.2.22版本的),yum安装时默认安装最新版本的。所以此处将多的那个仓库拷贝下来上传至第三台monitor。最后更新软件,重新启动ceph就可以正常在集群中看到cxx3的这台monitor啦!

osd部署

前提

由于高版本的ceph在osd操作上会有些问题,所以我这里将所有的都卸载重新安装为较低版本的ceph。

卸载软件命令:

yum erase {安装包}

建议每台monitor上都只部署一个OSD

步骤

第一台monitor:

在集群中创建osd

ceph osd create #命令返回一个osd-number,用于后面的osd-number

创建osd目录

mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}

cluster-name:ceph

osd-number:第一步生成的osd-number,我这里此处是0

初始化OSD目录

ceph-osd -i 0 --mkfs --mkkey

注册osd

ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-2/keyring

增加主机到桶

ceph osd crush add-bucket cxx_node host

将OSD加入到桶中

ceph osd crush add osd.0 1.0 host=cxx_node

移动OSD到默认节点下

ceph osd crush move cxx_node root=default

修改目录权限

chown -R ceph:ceph /var/lib/ceph/osd

修改配置文件配置(vi /etc/ceph/ceph.conf)

[osd.0]host =192.168.25.42

启动osd

systemctl start ceph-osd@0.service

查看osd状态

ceph osd stat

集群内(in)、活着且在运行(up)

第二台monitor:

ceph osd crush add osd.1 1.0 host=cxx_node2

第三台monitor

ceph osd crush add osd.2 1.0 host=cxx_node2

查看osd tree

ceph osd tree

ceph块存储

前提

对于12.2.11版本的ceph在后续的创建镜像步骤中无法正常的执行,经过老师的分析,12.2.11版本的ceph多了一种mgr的角色,但是我们在最开始对角色赋权的操作时,没有对该角色赋权。所以此处需要重新搭建ceph集群。

与之前的步骤不同之处在于增加了对mgr的权限。(上述代码已经修改)

ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'

原理

块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 。Ceph的块存储是基于RADOS的,因此它也借助RADOS的快照、复制和一致性等特性提供了快照、克隆和备份等操作。 Ceph的块设备是一种精简置备模式,可以拓展块存储的大小且存储的数据以条带化的方式存储到Ceph集群中的多个OSD中。RBD是Ceph对外的三大组件之一,也是Ceph最稳定的接口。应用访问rados应用有两种途径librbd 用户态接口,librados.so动态链接库充当客户端接入RADOS集群;可以在用户态访问RBD接口;krbd 内核态,通过rbd命令,可以将rbd设备映射为本地的块设备,可以在/mnt下挂载。

部署

使用Ceph块存储,创建虚拟计算资源

步骤

创建rdb镜像

创建pool

集群总的pg-num参考:

少于5个OSD 设置为128

5到10个OSD 设置为 512

10到50个OSD 设置为 1024

据上,则修改集群的pg数量为128((注意这是整个集群的pg数量,三台monitor的配置文件都需要修改成128)

每台monitor的pg-num数量

集群pg-num数量总的为128

对于每台monitor所使用的pg-num我们将总的pg-num/monitor数量,所以此处设置为42

ceph osd pool create cxx 42 42

初始化pool

rbd pool init cxx

创建块设备镜像

rbd create --size {megabytes} {pool-name}/{image-name} rbd create --size 1024 cxx/cxx-image

利用ls查看cxxpool下的块设备镜像

rbd ls cxx

创建计算资源

此处利用课题一的qemu-kvm创建的虚拟机

/usr/libexec/qemu-kvm -m 512 --drive format=raw,file=/cxx/cxx_centos6.raw --drive format=rbd,file=rbd:cxx/cxx-image -device ich9-usb-ehci1 --device usb-tablet --display vnc=0.0.0.0:25&

–drive format=raw,file=/cxx/cxx_centos6.raw

此处对应的是之前存储虚拟机的镜像文件的地址

–drive format=rbd,file=rbd:cxx/cxx-image

此处对应pool-name/image-name

对磁盘进行相关的操作查看磁盘

进行分区相关操作(参考)

/HeiDi-BoKe/p/11936998.html

进行分区相关操作(参考)

/HeiDi-BoKe/p/11936998.html

ceph文件系统存储

原理

提供POSIX兼容的网络文件系统CephFS,专注于高性能、大容量存储。Ceph集群实现了自己的文件系统来组织管理集群的存储空间,用户可以直接将Ceph集群的文件系统挂载到用户机上使用。

与块存储的区别

Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘,而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的共享性。

实现步骤

新增MDS主机

安装mgr

yum install -y ceph-mgr

ceph auth get-or-create mgr.cxx mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-cxx/keyring

chown -R ceph:ceph /var/lib/ceph/

修改配置文件

systemctl start ceph-mgr@cxx

MDS配置

修改配置文件

systemctl start ceph-mds@0

创建文件系统

数据池以及元数据池

用于数据池

用于元数据池

ceph osd pool create cxx_data 42 //此处42是每台monitor分配的pg数量,在块设备部署处有详细的解释。ceph osd pool create cxx_metadata 42

文件系统

ceph fs new <fs_name> {metadata group name} {data_group_name}

metadata group name:元数据池

data_group_name:数据池

ceph fs new cxx_fs cxx_metadata cxx_data

查看mds服务状态

查看文件系统

挂载文件系统

由图可知,ceph-mon默认的端口为6789

创建挂载点

mkdir /mnt/cxx_cephfs

挂载文件系统

mount -t ceph 192.168.25.42:/ /mnt/cxx_cephfs -o name=admin,secret=AQB0zlNhwMbpJBAA/vlaRLQ5UvwCY5A4ShufNQ==

结果

由图,可以看到文件系统已被挂载在Linux上。

此时,我们可以在此处创建新的文件并写入内容。以达到使用该文件系统的操作。

致谢

感谢张林老师的辛勤指导!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。