做用:主要是将裸磁盘空间映射给主机使用,磁盘阵列(内含多块硬盘)作RAID操做或者LVM操做,逻辑划分出N块Logic盘并映射给主机使用,操做系统会识别到N块硬盘,可是没法感知究竟是逻辑盘仍是物理盘,因此仍是会对其进行分区和格式化(没法共享数据)。每块逻辑盘其实是由多块硬盘共同组成,在读写数据的时候,几块物理硬盘能够并行寻址和操做,大大提升了IO效率。node
优势:对块磁盘组成逻辑盘,读写效率增长linux
缺点:至关于本身主机的硬盘,没法进行数据共享算法
典型设备:FTP、NFS服务器
优势:客服了块存储文件没法共享的问题
缺点:读写、传输速率低
场景:日志、邮箱、目录结构文件存储
备注:常见的存储中 NFS、NAS也是属于文件系统存储docker
对象存储:也叫作基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称做为对象。
swift
对象存储常常被比做在一家高级餐厅代客停车。当一个顾客须要代客停车时,他就把钥匙交给别人,换来一张收据。这个顾客不用知道他的车被停在哪,也不用知道在他用餐时服务员会把他的车移动多少次。在这个比喻中,一个存储对象的惟一标识符就表明顾客的收据。vim
优势:综合了块读写高速、文件共享特性后端
存储数据类型:指非结构化数据,如图片、音视频、文档等centos
应用场景:即一次写入屡次读取。安全
分布式存储:是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放全部数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能知足大规模存储应用的须要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提升了系统的可靠性、可用性和存取效率,还易于扩展。bash
一、高可用性,副本数灵活控制,支持故障域分割,数据强一致性,没有单点故障
二、高可扩展性
三、特性丰富
简介:无论你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,仍是想部署一个 Ceph 文件系统或者把 Ceph 做为他用,全部 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少须要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必需要有元数据服务器( Metadata Server )
Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph 存储集群至少须要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必需要有元数据服务器( Metadata Server )
1. CRUSH算法:
ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操做。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,可以实现各种负载的副本放置规则
2.高可用:
Ceph中的数据副本数量能够由管理员自行定义,并能够经过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; ceph能够忍受多种故障场景并自动尝试并行修复。
3 高扩展性:
Ceph不一样于swift,客户端全部的读写操做都要通过代理节点。一旦集群并发量增大时,代理节点很容易成为单点瓶颈。Ceph自己并无主控节点,扩展起来比较容易,而且理论上,它的性能会随着磁盘数量的增长而线性增加。
4 特性丰富
Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式能够一同使用。在国内一些公司的云环境中,一般会采用ceph做为openstack的惟一后端存储来提高数据转发效率。
Ceph的基本组成结构以下图:
Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并经过检查其余OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少须要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你能够调整副本数)。
Monitors: Ceph Monitor维护着展现集群状态的各类图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变动的历史信息(称为 epoch )。
MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,能够在不对 Ceph 存储集群形成负担的前提下,执行诸如 ls、find 等基本命令。
官网指导部署
https://docs.ceph.com/en/latest/cephadm/install/
准备三台服务器
192.168.106.100 ceph-admin 192.168.106.101 ceph-node1 192.168.106.1002 ceph-node2
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i '7s/enforcing/disabled/' /etc/selinux/config
cat /etc/hosts 192.168.106.100 ceph-admin 192.168.106.101 ceph-node1 192.168.106.1002 ceph-node2
配置互信(各个节点)
ssh-keygen -t rsa ssh-copy-id ceph-node1 ssh-copy-id ceph-node2
yum -y install wget curl net-tools bash-completion wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置ceph源
cat << EOF > /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 EOF
服务端:
vim /etc/chrony.conf allow 192.168/16 local stratum 10 systemctl restart chronyd.service
客户端
vim /etc/chrony.conf server 192.168.106.100 iburst systemctl restart chronyd.service chronyc sources
yum -y install docker-ce systemctl restart docker systemctl enable docker docker pull ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 #各个节点安装
首先启动主节点mon(ceph-admin节点)
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.100 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
若直接使用非xfs文件系统的硬盘,须要在配置文件中加如下配置:
vim /etc/ceph/ceph.conf osd max object name len = 256 osd max object namespace len = 64
scp -r /etc/ceph/ ceph-node1:/etc/ scp -r /etc/ceph/ ceph-node2:/etc/ scp -r /var/lib/ceph ceph-node1:/var/lib/ scp -r /var/lib/ceph ceph-node2:/var/lib/
ceph-node1执行
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.101 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
ceph-node2执行
docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.102 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mon
mkdir /osd0 mkfs.xfs /dev/sdb mount /dev/sdb /osd0
docker run -d --net=host --name=osd1 -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /dev:/dev -v /osd0:/var/lib/ceph/osd --privileged=true ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 osd_directory
docker run -d --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mgr
rdb是存储池名字,64是pg数量,pg值计算参考https://ceph.com/pgcalc/
docker exec mon ceph osd pool create rbd 64
docker exec mon ceph osd crush add osd.0 0.15 host=admin docker exec mon ceph osd crush add osd.1 0.15 host=admin
检查osd tree
docker exec mon ceph osd tree
docker exec mon ceph osd crush move node0 root=default docker exec mon ceph osd crush move node1 root=default
docker exec mon ceph -s
测试ceph集群在块存储下镜像的建立和文件的上传,若是成功才能说明ceph集群安装成功
docker exec mon rbd create rbd/test-image --size 100M docker exec mon rbd info rbd/test-image docker exec mon rados -p rbd ls