集群与存储

Ceph概述

ceph的system服务 linux ceph 服务_主机名


什么是分布式文件系统

1)分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连

2)分布式文件系统的设计基于客户机/服务器模式

常见的分布式文件系统

1)Lustre
2)Hadoop
3)FastDFS
4)Ceph
5)GlusterFS

什么是Ceph

1)Ceph是一个分布式文件系统
2)具有高扩展、高可用、高性能的特点
3)Ceph可以提供对象存储、块存储、文件系统存储
4)Ceph可以提供PB级别的存储空间(PBTBGB)
1024G*1024G=1048576G=1PB
5)软件定义存储(Software Defined Storage)作为存储行业的一大发展趋势,已经越来越受到市场的认可

Ceph组件

1)OSDs:存储设备
2)Monitor:集群监控组件
3)RadosGateway(RGW):对象存储网关
4)MDSs:存放文件的元数据(对象存储和块存储不需要该组件)
5)Client:Ceph客户端

实验拓扑图

1)一台客户端虚拟机

2)3台存储集群虚拟机

ceph的system服务 linux ceph 服务_主机名_02

物理机创建网络yum源服务器

ceph的system服务 linux ceph 服务_客户端_03

虚拟机调用YUM源(下面以node1为例)

ceph的system服务 linux ceph 服务_ceph的system服务_04

配置SSH五无密钥连接

1)修改主机名

2)警告:/etc/hosts解析的域名必须与本机主机名一致!!!

ceph的system服务 linux ceph 服务_客户端_05


3)发布密钥到各个主机(包括自己)

[root@node1 ~]# for i in 10 11 12 13

do
ssh-copy-id 192.168.4.$i
done

NTP时间同步

1)真实主机是NTP服务器
2)其他所有主机与其他同步时间(下面以node1为例)
[root@node1 ~]# vim /etc/chrony.conf

server 192.168.4.254 iburst

[root@node1 ~]# systemctl restart chronyd

准备存储磁盘

1)物理机上为每个虚拟机创建三个磁盘

ceph的system服务 linux ceph 服务_ceph的system服务_06


-----------------------++++++++++++++++++++++++++++++++++++++++++++±-----------

部署Ceph集群

ceph的system服务 linux ceph 服务_客户端_07

准备部署环境

1)安装部署软件
2)使用node1作为部署主机
[root@node1 ~]# yum -y install ceph-deploy
ceph-deploy命令与子命令都支持–help查看帮助
[root@node1 ~]# ceph-deploy --help
3)为部署工具创建目录,存放密钥与配置文件
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster

部署存储集群

1)创建Ceph集群配置(所有节点都为mon)
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3
2)给所有节点安装Ceph软件包
[root@node1 ceph-cluster]# for i in node1 node2 node3

do
ssh $i "yum -y install ceph-mon ceph-mds ceph-radosgw
done
3)初始化所有节点的mon服务(主机名解析必须对)
[root@node1 ceph-cluster]# ceph-deploy mon create-install
//这里没有指定主机,是因为第一步创建的配置文件中已经有了
//所有要求主机名解析必须对,否则连接不到对应的主机
4)初始化monitor常见错误
如果提示如下错误信息:
[root@node1 ~]# admin_socket:exception getting command description:
解决方案如下(在node1操作):
[root@node1 ceph-cluster]# vim ceph.conf #文件最后追加以下内容
public_network = 192.168.4.0/24
[root@node1 ceph-cluster]# ceph-deploy --overwrite-conf config push node1 node2 node3

创建OSD

1)所有节点准备磁盘分区(以下面node1为例)

ceph的system服务 linux ceph 服务_客户端_08


//这两个分区用来做存储服务器的日志journal盘

2)初始化清空磁盘数据(仅node1操作即可)

ceph的system服务 linux ceph 服务_服务器_09


ceph的system服务 linux ceph 服务_主机名_10

验证查

1)看集群状态
[root@node1 ~]# ceph -s
2)可能出现的错误
---- osd create创建OSD存储空间,提示如下run ‘gatherkeys’
3) ceph -s 查看状态,如果失败
[root@node1 ~]# systemctl restart ceph*.service ceph*.target
//在所有节点,或仅在失败的节点重启服务
4)查看集群状态
[root@node1 ~]# ceph -s
5)可能出现的错误
–health:HEALTH_WARN
clock skew detected on node2,node3…
– clock skew(时间不同步)
解决:请先将所有主机的时间都使用NTP同步!!!
------------------------------+++++++++++++++++++++++++++++++++++++±---------------

Ceph块存储

ceph的system服务 linux ceph 服务_ceph的system服务_11

什么是块存储

1)单机块设备:光盘、磁盘
2)分布式块存储:Ceph、Cinder
3)Ceph块设备也叫做RADOS块设备
RADOS block device :RBD
4)RBD驱动已经很好的集成在了Linux内核中
5)RBD提供了企业功能,如快照、cow克隆等等
6)RBD还支持内存缓存,从而能够大大提高性能
7)Linux内核可用直接访问Ceph块存储
8)KVM可用借助于librbd访问

块存储集群

1)查看存储池(默认有一个RDB池)

[root@node1 ~]# ceph osd lspools

0 rbd,

2)创建镜像、查看镜像

ceph的system服务 linux ceph 服务_主机名_12


3)动态调整大小

缩小容量

[root@node1 ~]# rbd resize --size 7G image --allow-shrink

[root@node1 ~]# rbd info image

扩容容量

[root@node1 ~]# rbd resize --size 15G image

[root@node1 ~]# rbd info image

客户端通过KRBD访问

1)客户端需要安装ceph-common软件包

2)拷贝配置文件(否则不知道集群在哪了)

3)拷贝连接密钥(否则无连接权限)

ceph的system服务 linux ceph 服务_ceph的system服务_13


4)客户端格式化、挂载分区

[root@client ~]# mkfs.xfs /dev/rbd0

[root@client ~]# mount /dev/rbd0 /mnt

[root@client ~]# echo “test” > /mnt/test.txt

5)查看镜像快照

[root@node1 ~]# rbd snap ls image

6)创建镜像快照

[root@node1 ~]# rbd snap create image --snap image-snap1

[root@node1 ~]# rbd snap ls image

SNAPID NAME SIZE

4 image-snap1 15360MB

注意:快照使用COW技术,对大数据快照速度会很快

使用快照回复数据

1)删除客户端写入的测试文件
[root@client ~]# rm -rf /mnt/test.txt
2)还原快照
[root@node1 ~]# rbd snap rollback image --snap image-snap1
3)客户端重新挂载分区
[root@client ~]# umount /mnt
[root@client ~]# mount /dev/rbd0 /mnt
[root@client ~]# ls /mnt

快照克隆

1)如果想从快照恢复出来一个新的镜像,则可以使用克隆

2)注意,克隆前,需要对快照进行<保护>操作

3)被保护的快照无法删除,取消保护(unprotect)

ceph的system服务 linux ceph 服务_客户端_14


4)查看克隆镜像与父镜像快照的关系

ceph的system服务 linux ceph 服务_主机名_15


5)克隆镜像很多数据都来自于快照链

6)如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!

ceph的system服务 linux ceph 服务_客户端_16

客户端撤销磁盘映射

1)umount 挂载点.

[root@client ~]# umount /mnt

2)取消RBD磁盘映射

ceph的system服务 linux ceph 服务_服务器_17

删除快照与镜像

1)删除快照(确保快照未被保护)
[root@node1 ~]# rbd snap rm image --snap image-snap
2)删除镜像
[root@node1 ~]# rbd list
[root@node1 ~]# rbd rm image
-------------------+++++++++++++++++++++++++++++++±---------------------

还原快照后无法挂载

问题现象
1)创建镜像快照
2)客户端对挂载的磁盘分区卸载后,再次挂载失败
故障分析及排除
1)再次对快照还原一次即可