ceph文件系统
ceph是高度可扩展,分布式的存储文件系统,旨在提供高性能,高可靠性的高可用的对象存储,块存储,文件系统的存储,使用分布式的算法保证数据的高可用和一致性
ceph的架构:
1、ceph minitor
MON: 负责存储和维护整个ceph集群的状态信息,主要是集群的成员信息,存储状态和配置数据等等。确保集群的一致性,处理选举和状态的更新。集群内部成员的通信,包括故障转移
ceph当中mon至少要有3个节点确保高可用
2、ceph osd(object storage daemon核心)
ceph存储系统的核心组件,负责存储数据,处理读写请求,数据复制,数据恢复,每个osd节点管理一个或者多个硬盘驱动。
存储实际的数据和副本
处理对象级别的数据操作,读,写,删
在节点付账时,进行数据恢复
3、ceph mds metadata server
对ceph的文件系统的元数据进行管理,文件和目录的结构,文件的权限,mds提供元数据服务。
管理集群的元数据信息
处理客户端对文件系统的请求
ceph集群中,至少要有一个mds节点
4、存储池和pg
存储池(pool):ceph存储数据对象的容器,每个存储池可以定义不同的数据冗余的策略(副本数,默认都是3个)crush映射规则等等
存储池是一个逻辑上的概念
管理和组织数据的对象
定义数据的冗余方式,只要开副本,默认就是3个
配置crush映射,数据如何在osd之间分布
pg:placement group ,pg也是ceph当中的一个逻辑概念,用于数据分布的基本单位,创建存储池,定义好pg的数量。
pg是由一组对象(object)组成的逻辑集合,每个对象都会映射到一个或多个pg
数据分布:数据写入集群,映射到存储池中的一个pg,crush算法决定将pg分布到哪些osd
在ceph当中,pg和osd的数量是相关的,设置一个合理的pg数,有助于提高集群的性能
以3个osd为例
pg数量=(osd数量*100)/存储池的副本数
pg的数量应该是2的幂值,pg的数量一般是osd数量的一百倍左右
存储池,pg和osd之间的关系:
1、存储池(pool),管理数据的基本单位,组成和配置数据的存储和冗余的方式
2、pg,存储池中的数据被划分成多个pg,每个pg是数据分布的最小单位,pg负责对象存储的位置,通过crush的算法把数据分布到osd
3、osd是负责存储的数据的基于物理设备的虚拟概念
crush算法,ceph自带的一种算法;
数据分布的算法,把对象分配到集群的osd节点当中
crush算法使用hash算法来决定数据的存储位置,确保数据是均匀的分布在集群的osd上。
存储类型:
对象存储,云平台存储,基于apt接口,通过http(s)来对目标发起请求的方式获取数据
块存储 RBD
文件系统 cephfs
RBD集群的架构
ubuntu-1 192.168.42.10 mon osd admin
ubuntu-2 192.168.42.11 mon osd
ubuntu-3 192.168.42.12 mon osd
ubuntu-4 192.168.42.15 客户端
vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ jammy universe
deb-src http://mirrors.aliyun.com/ubuntu/ jammy universe
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates universe
deb http://mirrors.aliyun.com/ubuntu/ jammy multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu jammy-security main restricted
deb http://mirrors.aliyun.com/ubuntu jammy-security universe
deb-src http://mirrors.aliyun.com/ubuntu jammy-security universe
deb http://mirrors.aliyun.com/ubuntu jammy-security multiverse
deb-src http://mirrors.aliyun.com/ubuntu jammy-security multiverse
保存退出
apt-get update
cat >> /etc/hosts <<EOF
192.168.42.10 test1
192.168.42.11 test2
192.168.42.12 test3
192.168.42.15 test4
EOF
apt -y install docker.io
apt -y install ceph-common
apt -y install lvm2
wget https://mirrors.aliyun.com/ceph/debian-17.2.4/pool/main/c/ceph/cephadm_17.2.4-1focal_amd64.deb
dpkg -i cephadm_17.2.4-1focal_amd64.deb
cephadm bootstrap --mon-ip 192.168.42.10 --cluster-network 192.168.42.0/24 --allow-fqdn-hostname
ssh-keygen -t rsa
ssh-copy-id root@192.168.42.11
ssh-copy-id root@192.168.42.12
ssh-copy-id root@192.168.42.15
ssh-copy-id -f -i /etc/ceph/ceph.pub test2
ssh-copy-id -f -i /etc/ceph/ceph.pub test3
ceph orch host add test2
ceph orch host add test3
ceph orch ls
ceph orch apply mon 3
ceph orch apply mon "test1,test2,test3"
for host in /sys/class/scsi_host/host*/scan; do
echo "- - -" | sudo tee $host
done
ceph orch apply osd --all-available-devices
ceph orch devices ls
ceph orch daemon add osd test1:/dev/sdb
ceph orch daemon add osd test2:/dev/sdb
ceph orch daemon add osd test3:/dev/sdb
版本信息:ceph17版本—2024 17.2.4新版依赖于docker python3—ubuntu自带lvm2
命令示例:cephadm bootstrap --mon-ip 192.168.233.10 --cluster-network 192.168.233.0/24 --allow-fqdn-hostname
参数解释:
–mon-ip:指定mon进程的节点地址,先指定admin节点。
–cluster-network:集群网络的只范围,ceph节点内部通信。
–allow-fqdn-hostname:允许ceph集群使用hostname来对节点进行标识。节点之间可以通过主机名通信
做为ceph集群的底层的硬盘必须满足两个条件:
1、容量必须要大于5G
2、不能对硬盘做任何分区和文件系统
ceph RBD模式
RBD:rados block device用于虚拟化环境,openstack,KVM,
数据库;性能高,延迟低的块存储方式
RBD优点:
1、支持动态扩展
2、支持快照和克隆
缺点:
1、rbd的方式必须要创建文件系统
使用方式:在云计算的平台经常被使用,尤其是大规模存储和高性能存储场景
ceph osd pool create rbd1 128 128 # 创建存储池的命令
ceph osd pool rbd1 这是存储池的名称
128 128
128 pg_num pg的数量
128 pgp_num 的数量
ceph osd pool create rbd1 128 128
#创建存储池的命令,存储池的名称不能重复
ceph osd pool application enable rbd1 rbd
scp /etc/ceph/ceph.conf test4:/etc/ceph
scp /etc/ceph/ceph.client.admin.keyring test4:/etc/ceph
客户端
rbd create myrbd1 --size 2G --pool rbd1
#创建镜像命令,镜像是RBD存储的基本单位,他是一个虚拟的磁盘,镜像提供了一个虚拟的块设备的接口,可以挂载的方式进行使用,创建rbd镜像,实际上就是类似磁盘的一个分区
rbd map myrbd1 --pool rbd1
#映射之后,会虚拟出一个逻辑上的硬盘,要创建文件系统,然后挂载才可以使用
mkfs.ext4 /dev/rbd0
mkdir /data1
mount /dev/rbd0 /data1/
cephfs的存储方式
文件系统分布式存储方式,基于内核是实现共享文件的存储方式
大数据存储,文件服务器(文件共享,企业的镜像服务源)
优点:内核兼容,NFS方式也可以实现,部署速度比较快,跨节点实现
缺点:配置比rbd的当时复杂,在大集群当中比较复杂
ceph需要两个存储池
数据池:cephfs.data,用来存储数据
元数据池,保存数据的元信息,cephfs。meta
test1
ceph fs volume create cephfs
客户端
ceph auth get-key client.admin
mkdir /data2
mount -t ceph 192.168.42.42.10:6789:/ /data2 -o name=admin,secret=
dd if=/dev/zero of=test1.txt bs=10M count=10

NFS集群
ceph orch apply nfs nfs-share
ceph osd pool create nfs-pools
ceph osd lspools
#查看集群当中所有的存储池
ceph orch apply nfs my-bfs nfs-pools --placement="test2,test3"
客户端
mkdir /data3
mount -t ceph 192.168.42.10:6789,192.168.42.11:6789,192.168.42.12:6789:/ /data3 -o name=admin,secret=AQCBgXdnyiMLAhAApAZSlI+w/aIKzZkmgd2mkg==
ceph orch apply nfs my-bfs nfs-pools --placement="test2,test3"
创建nfs的高可用,分别运行在test1 再加入test2和test3
nfs的挂载目录和cephfs数据池之间的关系:
通过nfs的挂载方式,依然使用的cephfs.data的数据的空间,文件实际上还是存储在cephfs.data的数据池当中。


对象存储ceph object storge 对象存储,云计算的后台的存储方式一般都是用对象存储
对象存储:高扩展,处理文件的级别可以达到PB级别
缺点:如果数据量不是特别巨大,一般不需要该场景
ceph需要使用分布式文件系统的企业一般都是需要存储海量数据,以及保证数据的高可用非常严谨的场景
ceph的存储方式的数据流向:
存储池–>pg—>osd
创建存储池,分配pg,
数据按照对象分配给pg
pg再把数据分配到osd
6976

被折叠的 条评论
为什么被折叠?



