ceph 分布式文件系统
特点: 高性能,高扩展,高可靠
1,高性能:摒弃了传统集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高;考虑容灾区域的隔离,实现各类负载的副本防止规则,跨机房等;能支持上千个存储节点,支持TB到PB的数据
2,高可用:副本数灵活控制;故障域隔离,数据强一致性;多种故障自动修复,没有单点故障
3,高扩展:去中心化,扩展灵活,随节点增加而线性增长.
存储类型
- 块存储
- 文件存储
- 对象存储
ceph架构
- osd:object storage cluster对象存储集群,(将数据和元数据最为对象存储),ceph最底层的存储单元是object对象
- mds:metadata server cluster,元数据服务器(cephFS依赖元数据服务)
- mon:monitor,集群监视器.通过Paxos同步数据,用来保存OSD数据
RBD:RADOS block device,块存储服务
RGW:RADOS gateway,对象存储服务
CephFS:Ceph File System,文件系统服务
PG:placement group:逻辑概念,一个PG包含多个OSD,用途是对存储进行组织和位置映射(类似redishash槽的概念),更好的分配数据和定位数据.
RADOS:Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
部署步骤
- 准备工作
1,配置节点yum源
2,配置无密码连接,域名解析
3,配置NTP时间同步 - 部署集群
1,安装部署软件ceph-deploy
2,创建ceph集群
3,创建osd
一,准备基础环境
>>1,配置ceph的安装yum源,每一个osd节点都需要
>mount ceph.iso /var/ftp/ceph/ //使用ftp提供镜像,安装yum源
cat /etc/yum.repos.d/ceph.repo
[mon]
name=mon //mon监控服务
baseurl=ftp://192.168.4.254/ceph/MON
gpgcheck=0
[osd]
name=osd //存储节点
baseurl=ftp://192.168.4.254/ceph/OSD
gpgcheck=0
[tools]
name=tools //部署工具
baseurl=ftp://192.168.4.254/ceph/Tools
gpgcheck=0
yum repolist
>>2配置无密码连接,和域名解析,每台osd节点相同配置
vim /etc.hosts
192.168.4.10 client
192.168.4.11 node1
192.168.4.12 node2
192.168.4.13 node3
ssh-keygen -f /root/.ssh/id_rsa -N ' '
for i in 10 11 12 13
do
ssh-copy-id 192.168.4.$i
done
>>3,每台几点准备3块磁盘
>所有存储节点安装服务
yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw
部署ceph集群
>>1,选择一台服务器上安装部署软件,为管理服务
yum - y install ceph-deploy
ceph-deploy --help
ceph-deploy mon --help
mkdir ceph-cluster //创建其群工作目录
cd ceph-cluster/
>>2,创建集群,在ceph.conf文件中可以自定义monitor主机
ceph-deploy new node1 node2 node3
ceph-deploy mon create-initial //初始化mon服务(启动mon)
###必须在ceph-cluster目录下执行,报错从新配置初始化需下列命令
###ceph-deploy --overwrite-conf config push node1 node2 node3
>>3,创建osd存储池
为osd创建journal缓存盘,每个节点同理
parted /dev/vdb mklabel gpt
parted /dev/vdb mkpart primary 1 50%
parted /dev/vdb mkpart primary 50% 100%
分区默认权限ceph无法进行读写操作,需修改权限
chown ceph.ceph /dev/vdb1
chown ceph.ceph /dev/vdb2
上述权限临时有效,重启失效,永久配置
vim /etc/udev/rules.d/70-vdb.rules
ENV{DEVNAME}=="/dev/vdb1",OWNER="ceph",GROUP="ceph"
ENV{DEVNAME}=="/dev/vdb2",OWNER="ceph",GROUP="ceph"
>>4,初始化磁盘数据
ceph-deploy disk zap node1:vdc node1:vdd
ceph-deploy dik zap node2:vdc node2:vdd
ceph-deploy disk zap node3:vdc node3:vdd
>>5,创建osd存储空间
ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb1 \
node2:vdc:/dev/vdb1 node2:vdc:/dev/vdb2
node3:vdc:/dev/vdb1 node3:vdc:/dev/vdb2
ceph -s //查看集群状态
systemctl restart ceph\*.service ceph\*.target //重启服务
创建ceph块存储(基于镜像image)
>>1,查看存储池
ceph osd lspools
>>2,创建镜像,查看镜像
rbd create demo-image --image-feature layering --size 10G
//--image-feature参数指定我们创建的镜像有哪些功能,layering是开启COW功能
rbd create rbd/tom --image-feature layering --size 10G //在存储池rbd下创建镜像
rbd list //查看镜像
rbd info demo-image //查看镜像信息
>>3,动态调整
rbd resize --size 15 tom //扩大容量
rbd info tom
rbd resize --size 7G demo-image --allow-shrink //缩小容量
rbd info demo-image
>>4,客户端通过KBBD访问
客户端需要安装ceph-common软件包
yum -y install ceph-common
拷贝集群配置文件(否则不知道集群位置)
scp node1:/etc/ceph/ceph.cnf /etc/ceph/
拷贝连接秘钥
scp node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
rbd list //查看镜像
rbd map tom //挂载镜像tom为客户端的块设备 umap 卸载镜像
lsblk //查看块
rbd showmapped //查看已加载的镜像
mk.xfs /dev/rbd0 //格式化
mount /dev/rbd0 /mnt/
>>5,查看镜像快照
rbd snap ls demo-image
rbd snap create demo-image --snap demo-snap1 //为镜像创建快照demo-snap1
>>6,删除文件,快照恢复
rm -rf /mnt/
umount /mnt/
rbd snap rollback demo-image --snap demo-snap1 //管理节点使用快照恢复镜像
mount /dev/rbd0 /mnt/ //客户端重新挂载
>>7,创建快照克隆
rbd clone demo-image --snap demo-snap1 demo-snap2 --image-feature layering
//使用demo-image的镜像快照demo-snap1 克隆一个新的名称demo-snap2镜像
rbd info demo-snap2 //克隆镜像和父镜像快照存在父子关系
rbd flatten demo-snap2 //flatten摧毁父子关系,独立工作
rbd snap protect demo-image --snap demo-snap1 //保护快照,不可删除
rbd snap rm demo-image --snap demo-snap1 //删除快照失败
rbd snap unprotect demo-image --snap demo-snap1 //取消保护
ceph文件系统mds
>>1,部署mds节点
yum -y instll ceph-mds
cd ceph-cluster/
ceph-deploy mds create node1 //创建mds服务
ceph osd pool create cephfs_data 128 //创建存储池,对应128个PG,PG存储单位,必须时2的n次方
ceph osd pool create cephfs_metadata 128
>>2,文件系统由inode(文件描述信息)和block(数据)组成
ceph fs new myfs cephfs_metadata cephfs_data //默认只能创建一个文件系统
ceph fs ls //查看文件系统
>>3客户端挂载
mount -t ceph 192.168.1.4.11:6789:/ /mnt/cephfs/ -o name=admin,secret=秘钥代码
用户名和秘钥可在/etc/ceph/ceph.client.admin.keyring中查询
ceph对象存储ceph-radosgw
>>1,新建一个对象存储服务器
node:5 yum -y install ceph-radosgw
>>2管理服务器
cd cecph-cluster
ceph-deploy rgw create node5 //新建网关实例
ceph-deploy admin node5 //通过admin重新发送配置和秘钥
>>3,node5RGW默认端口7480
vim /etc/ceph/ceph.conf
[client.rgw.node5]
host = node5
rgw_frontends = "civetweb port=8000"
>>node5创建账户
radosgw-admin user create \
--uid="testuser" --display-name="First User"
… …
"keys": [
{
"user": "testuser",
"access_key": "5E42OEGB1M95Y49IBG7B",
"secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
}
],
... ...
radosgw-admin user info --uid=testuser
//testuser为用户,key是账户访问密钥
>>4,客户端测试
curl node5:8000