Ceph存储池

Ceph存储池
开源的,用c++语言编写的分布式存储系统,存储文件数据

/dev/sdb、fdisk /dev/sdb、gdisk /dev/sdb

lvm 逻辑卷 可以扩容

raid 磁盘阵容 高可用

以上三种都是基于物理意义上的单机的存储系统

1、ceph
1.1

分布式由多台物理磁盘组成一个集群,在这个基础之上实现高可用,扩展。

1.2 数据流向:

1.3 优点:

1、远程访问

2、多个服务器组成的虚拟的硬盘

3、分布式存储

4、实现负载均衡和数据同步

2、存储的方式
ceph是一个统一的存储系统,同时提供块设备存储,文件系统存储和对象存储三种存储方式

1.1 对象存储 RGW oss

对象存储也就是键值存储,通过接口指令,如get、put、del和其他的命令向对象存储上传或者下载数据

把数据作为对象按照一定的逻辑和算法存储到不同的硬盘上(可以是不同机器上的硬盘,依靠网络来进行互相通信)

优点:使用的是硬盘组,不受目录系统的影响,读写效率高;集群的扩展性很强,支持多副本存储;可以直接通过URL访问文件,简单好管理。

缺点:内容变动性太大的文件不适合作为对象存储,每一个变动都要重新上传;适合静态图片等,不需要变动的数据

1.2 文件系统存储 ceph-fs

ceph集群的存储看作是一个大的分区或者共享文件挂载到客户端和本地

客户端可以在本地直接进行操作,速度快,可以存储的数据类型没有限制

内核态和用户态:

mount:内核 速度快 读写也快

ceph-fuse:用户 速度慢 读写稍慢

优点:成本低,随便的一台服务器都可以做;公司内部都会使用这种方式,内网的云盘就是这种方式。

缺点:读写速度和传输速度相对比较慢(本地使用不在此列)

1.3 块存储 RBD

rbd为kvm虚拟化和云服务(openstack)提供高性能和无线可扩展的存储后端;使用方式为磁盘映射,RAID和LVM提供磁盘空间,再把多个主机上的RAID和LVM组成一个逻辑上的RAID和LVM,多块磁盘组成这种逻辑空间,可以并行的执行读写操作,IO效率比较高。

缺点:对网络传输的要求比较高,windows无法访问linux的RDB操作。

3、ceph的主要特点
1.1 统一存储:对象、块、文件系统

1.2 Crush算法:算法来实现数据的寻址,数据完整性的校验和一致性,理论上可以支持上千个数据存储节点

1.3 高扩展性:扩容方便,可靠性比较强,定义1副本,创建数据的时候可以对数据进行副本操作,副本数由管理员定义,副本可以跨主机保存,跨架构,跨机房,跨数据中心进行保存

1.4 高性能:因为是多副本,读写的时候可以做到并行化处理

4、ceph的组件和作用
1.1 OSD:是ceph当中的OSD的守护进程,是集群的基础,

主要功能:存储数据,保存副本数据,数据恢复,平衡数据分布。

实现冗余和高可用至少要有3个OSD(三个机器上的三个物理硬盘)

1.2 Monitors:简称mon,Monitors守护进程,监视ceph集群的状态,维护ceph集群的健康。OSD的状态也属于MON的监控范围

ceph存储集群必须要有一个Monitors进程,和两个OSD进程。

服务器的数量必须是奇数台,3~5

管理节点 mon osd

1.3 MDS:也是一个守护进程,保存ceph文件系统的元数据(文件的权限,所有者,所在组,修改时间等待,在ceph集群当中的inode号)

1.4 managers:也是作为守护进程运行,跟踪集群的运行时间的指标和ceph集群的状态(状态:存储的利用率、性能指标和系统的负载)

1.5 RADOS:分布式存储系统,所有的存储功能都是基于RADOS实现的。高可用,高性能也是基于RADOS实现的,他是所有一切的底层,也是整个ceph集群的核心

RADOS由两个部分组成:OSD和Monitor

1.6 LIBRADOS:这是一个动态库,用来允许应用程序和RADOS系统进行交互。通过端口进行通信。

5、ceph存储的概念
1.1 存储数据和object的关系:

对象、块、文件系统挂载,都需要object,存储的数据会被分成多个object,分成之后每一个数据都有一个object id。

每个数据的object大小是可以调整的,默认是4M。

object是ceph的最小存储单位。

1.2 object和pg的关系:

object数量太多了,在一个集群当中,object数量太多,遍历和寻址速度都很慢,

pg,就是归置组,placcment group 管理object。

object通过Crush算法映射到pg当中,一个pg里面可以包含多个object

1.3 pg和osd之间的关系:

pg也是通过crush算法映射到osd当中去存储,如果有副本,每个pg会映射到三个osd当中,

1.4 pg和pgd的关系:

pgd是存放pg的排列组合。

1.5 存储池:pool

ceph的集群进行逻辑划分,设置ceph存储集群的权限,副本数,pg数量和算法的规则。

pool由管理员自定义,相当于一个独立的空间,每个pool之间是独立的,数据也是隔离的。

6、部署ceph存储池
实验:4台

192.168.100.11 admin、osd、mon、mgr

192.168.100.12 osd、mds、mon、mgr

192.168.100.13 osd、mds、mon、mgr

192.168.100.14 client

mount、ceph-fs、rdb

# 分别操作
hostnamectl set-hostname mysql1    # 192.168.100.11
hostnamectl set-hostname mysql2    # 192.168.100.12
hostnamectl set-hostname mysql3    # 192.168.100.13
hostnamectl set-hostname test1     # 192.168.100.14
su                                 # 同时操作

# 同时操作
systemctl stop firewalld
setenforce 0
yum -y install ntpdate
ntpdate ntp.aliyun.com
date

vim /etc/hosts
192.168.100.11 mysql1
192.168.100.12 mysql2
192.168.100.13 mysql3
192.168.100.14 test1
wq!

# test1  免密通信
ssh-keygen
ssh-copy-id 192.168.100.12
ssh-copy-id 192.168.100.13
ssh-copy-id 192.168.100.14

# 同时操作
cat> /etc/yum.repos.d/ceph.repo <<eof
[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=ceph-noarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
eof

yum clean all && yum makecache

# 出现报错 Cannot find a valid baseurl for repo: base/7/x86_64 如何解决?

[root@mysql1 opt]# cd /etc/yum.repos.d/
[root@test1 yum.repos.d]# mkdir  backup1
[root@test1 yum.repos.d]# mv CentOS-Base.repo  CentOS-CR.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-Vault.repo backup1
[root@test1 yum.repos.d]# ls
#只留这四个
Centos-7.repo  ceph.repo  epel.repo  epel-testing.repo
[root@test1 yum.repos.d]# yum clean all && yum makecache
---------------------------------------------------------------------

# 同时操作----所有节点统一安装
yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs

# 1
cd /etc/ceph
ceph-deploy new mysql1 mysql2 mysql3
yes  yes
vim ceph.conf    # 在最后一行添加
osd_pool_default_size = 2
wq!

# 节点初始化
ceph-deploy mon create-initial
ceph -s   # 查看集群状态

# 1、2、3 创建osd   添加硬盘20g
alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'
scan  # 刷新
lsblk

# 1 添加osd节点
ceph-deploy disk zap mysql1 /dev/sdb
ceph-deploy disk zap mysql2 /dev/sdb
ceph-deploy disk zap mysql3 /dev/sdb

ceph-deploy osd create mysql1 --data /dev/sdb
ceph-deploy osd create mysql2 --data /dev/sdb
ceph-deploy osd create mysql3 --data /dev/sdb

ceph-deploy osd list mysql1 mysql2 mysql3  # 查看osd节点的状态
ceph -s  # 此时osd开启

# 开启mgr
ceph-deploy mgr create mysql1 mysql2 mysql3
ceph -s   # 出现active和standbys即成功

# 创建存储池准备
ceph-deploy admin mysql1 mysql2 mysql3
chmod +r ceph.client.admin.keyring

2
cd /etc/ceph
chmod +r ceph.client.admin.keyring

3
cd /etc/ceph
chmod +r ceph.client.admin.keyring

# 
1
ceph-deploy mds create mysql2 mysql3
ceph mds stat   # , 2 up:standby
ceph -s

# 创建存储池    
第一个存储数据的pool
ceph osd pool create cephfs_data 128
------------------------------------------
少于5个osd的情况下,pg的数量等于128
5~10个osd 512个
10~50个osd  4096个

pg总数:默认是750个,不能超过750个
pg(num)=(osd * 100)/副本数
设定pg值的目的,通过管理较少的pg,ceph获取数据,分配,管理数据的效率越高。pg值越多,数据分布的越多,管理就越复杂。
---------------------------------------

第二个存储元数据的pool
ceph osd pool create cephfs_metadata 128

# cephfs名字可以自己设置
ceph fs new cephfs cephfs_metadata cephfs_data
ceph fs ls
ceph fs status cephfs

4
# 内核态挂载
cd /etc/yum??
mkdir /data
mount -t ceph 192.168.100.11:6789:/ /data -o name=admin,secret=看1的密钥    # 1 cat ceph.client.admin.keyring
df -h
cd /data
dd if=/dev/zero of=/data/test1.txt bs=10M count=10
ll -lh

1
ceph -s  
ceph fs status cephfs    # 此时data使用100M

4
cd /data
dd if=/dev/zero of=/data/test2.txt bs=10M count=10

1
ceph fs status cephfs    # 此时data使用200M

4
# 用户态挂载
yum -y install ceph-fuse

cd /etc/ceph/
scp root@192.168.100.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph
yes
123

scp root@192.168.100.11:/etc/ceph/ceph.conf /etc/ceph
mkdir /data1
ceph-fuse -m 192.168.100.11:6789 /data1
df -h

1
ceph fs status cephfs

补充
要求:已创建cephfs(第一个),在此基础上创建cephfs-test1(第二个)

mysql1、2、3各自追加一块硬盘
scan刷新、lsblk查看、出现新磁盘sdc

# 添加osd节点
ceph-deploy disk zap mysql1 /dev/sdc
ceph-deploy disk zap mysql2 /dev/sdc
ceph-deploy disk zap mysql3 /dev/sdc

# osd添加到主节点
ceph-deploy osd create mysql1 --data /dev/sdc
ceph-deploy osd create mysql2 --data /dev/sdc
ceph-deploy osd create mysql3 --data /dev/sdc

# 查看sod状态
ceph-deploy osd list mysql1 mysql2 mysql3 
ceph -s 

# 创建存储池    
ceph osd pool create cephfs_data1 128
# 创建保存元数据
ceph osd pool create cephfs_metadata1 128
# 允许在同一个集群中创建第二个文件系统
ceph fs flag set enable_multiple true

# 创建文件系统
ceph fs new cephfs-test1 ceph_metadata1 ceph_data1
ceph fs ls
# 查看
ceph fs status cephfs-test1

mkdir /data2

mount -t ceph 192.168.100.11:6789:/ /data -o name=admin,secret=AQBa/LJmAn2OMxAA7EEZTaurchJ+K4uPyQNhfQ==

mount -t ceph 192.168.100.11:6789:/ /data2 -o name=admin,secret=AQBa/LJmAn2OMxAA7EEZTaurchJ+K4uPyQNhfQ==,mds_namespace=cephfs-test1

ls /data2  # 查看挂载

调整副本数命令

ceph osd pool get cephfs——data size 3
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值