ceph存储特点
ceph是无中心化的存储,它没有管理节点、计算节点的之分。
ceph的文件是被分片的,每一个数据块是 一个对象,对象保存在不同的服务器上。当节点失效,自动迁移数据,重新复制副本。可以动态的添加元数据服务器和存储节点,容量可以动态扩展。
ceph分为mon监视器节点(至少一个)、osd对象存储节点(至少2个)、mds元数据节点。
osd 进程负责存储数据、处理数据的复制、恢复、回填、再平衡。并通过其他的osd守护进程的心跳,来向mon提供一些监控信息。当你设置osd有2个副本的时候,至少需要2个osd守护进程才能达到active+clean的状态,默认有3个副本。
mon 负责维护集群状态的各种图表,包括监视图和osd图等。
mds 负责为ceph文件系统存储数据的时候才使用。
存储的过程 :存储的文件数据归类为对象object;对象放在对应的池子里面(pool);pool由若干个pg组成;pg是由若干个osd组成;osd是由硬盘组成。
高性能:
a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,
并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架
感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
高可用性:
a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。
高可扩展性:
a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。
特性丰富:
a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。
环境准备
安装集群
##以下在三台上都执行
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
yum install -y bash-completion net-tools
cat >>/etc/hosts <<eof
192.168.217.100 ceph1
192.168.217.102 ceph2
192.168.217.103 ceph3
##以下分别在主机上运行
hostnamectl set-hostname ceph1 ##在ceph1上
hostnamectl set-hostname ceph2 ##在ceph2上
hostnamectl set-hostname ceph3 ##在ceph3上
##以下在ceph1上执行
ssh-keygen
ssh-copy-id root@ceph2
ssh-copy-id root@ceph3
##添加yum源
yum install wget -y
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
cat > /etc/yum.repos.d/ceph.repo <<eof
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
eof
##复制repo文件到其它节点
scp /etc/yum.repos.d/ceph.repo root@ceph2:/etc/yum.repos.d/
scp /etc/yum.repos.d/ceph.repo root@ceph3:/etc/yum.repos.d/
scp /etc/yum.repos.d/epel.repo root@ceph2:/etc/yum.repos.d/
scp /etc/yum.repos.d/epel.repo root@ceph3:/etc/yum.repos.d/
##更新yum源
yum makecache
ssh ceph2 "yum makecache"
ssh ceph3 "yum makecache"
##安装ceph-deploy
yum install -y ceph-deploy
##准备ceph
mkdir -p /etc/ceph
cd /etc/ceph
ceph-deploy new ceph1 ceph2 ceph3
echo 'public network=192.168.217.0/24' >> ceph.conf
##安装集群
ceph-deploy install ceph1 ceph2 ceph3
##初始化mon
ceph-deploy mon create-initial
##查看创建的集群用户
ceph auth list
##创建osd
###使用分区
#ceph-deploy disk zap ceph1:/dev/sdb ceph2:/dev/sdb ceph3:/dev/sdb
##通过zap命令清除分区及磁盘内容
#ceph-deploy osd prepare ceph1:/dev/sdb ceph2:/dev/sdb ceph3:/dev/sdb
#ceph-deploy osd activate ceph1:/dev/sdb ceph2:/dev/sdb ceph3:/dev/sdb
###使用目录
mkdir -p /data/osd0
chown -R ceph:ceph /data/osd0
ssh ceph2 “mkdir -p /data/osd0;chown -R ceph:ceph /data/osd0"
ssh ceph3 “mkdir -p /data/osd0;chown -R ceph:ceph /data/osd0"
ceph-deploy osd prepare ceph1:/data/osd0 ceph2:/data/osd0 ceph3:/data/osd0
ceph-deploy osd activate ceph1:/data/osd0 ceph2:/data/osd0 ceph3:/data/osd0
##分发密钥
ceph-deploy admin ceph1 ceph2 ceph3
chmod +r /etc/ceph/ceph.client.admin.keyring
ssh ceph2 "chmod +r /etc/ceph/ceph.client.admin.keyring"
ssh ceph3 "chmod +r /etc/ceph/ceph.client.admin.keyring"
##查看集群情况
ceph -s
ceph health
###添加新数据与Mon节点的方法
#ceph-deploy install node4
#mkdir -p /data/osd0
#chown -R ceph:ceph /data/osd0
#ceph-deploy osd prepare node4:/data/osd0
#ceph-deploy osd activate node4:/data/osd0
#ceph-deploy mon add node4
#ceph mon add node4 192.168.217.103:6789
#ceph mon stat
使用集群
#启用mds服务
ceph-deploy mds create ceph1 ceph2 ceph3
#创建池
ceph osd pool create data 128
ceph osd pool create meta 128
#启用cephfs
ceph fs new cephfs meta data
ceph fs ls
#查看osd pool状态
ceph osd pool ls
ceph osd tree
ceph osd pool get data size
ceph osd pool get meta size
ceph df
#使用mount来挂载指定的ceph
mkdir /ceph
#查看ceph的认证密钥
cat /etc/ceph/ceph.client.admin.keyring
#复制其中的key串,然后直接挂载
mount -t ceph \
192.168.217.100:6789,192.168.217.101:6789,192.168.217.102:6789:/ \
/ceph -o name=admin,secret=AQBZ341eXZoSIBAAJoS3OJG5XCTyA0CmF22I+w==
##挂载成功后可直接操作/ceph作为存储根目录
##添加开机自动挂载
vi /etc/fstab
#添加如下信息
192.168.100.208:6789,192.168.100.209:6789,192.168.100.210:6789:/ /ceph ceph defaults,_netdev,name=admin,secret=AQBZ341eXZoSIBAAJoS3OJG5XCTyA0CmF22I+w== 0 0