一些记录
每个数据流直接存入磁盘,自带元数据和数据,称为数据对象
冗余不一分片为单位,一PG为单位
纠删码池,存储一部分数据和校验码,验证另外部分的正确性
四种接口:1、基于librados自定义 2、基于librados的radosgw接口(http/https协议)3、基于librados的rbd接口,块设备 4、cephFS接口,最早的文件系统接口
接口 存储池数
rbd 1
cephFS 2
gw 3+
部署https://www.linux-note.cn/?p=85
rbd命令卡住 https://www.freesion.com/article/1637242912/
osd PG
0-5 128
5-10 512
10-50 4096
删除存储池
https://www.cnblogs.com/leoshi/p/13654244.html
lsblk -f 查看磁盘分区情况
linux磁盘分区,挂载
https://www.cnblogs.com/superlsj/p/11610517.html
纠删码池 https://blog.51cto.com/u_15127570/2711293
rdb挂载纠删码池 https://www.jianshu.com/p/77a18263f510?utm_campaign=haruki
cephfs使用EC池
https://blog.csdn.net/Hearz/article/details/120739376
cephfs使用https://blog.csdn.net/weixin_42551719/article/details/81558055
Ceph部署
部署工具:ceph-deploy
部署版本:Mimic 13班
虚拟机:四台
ip | 主机名 | 角色 |
---|---|---|
192.168.0.154 | ceph1 | mgr管理节点,osd存储节点,mon |
192.168.0.174 | ceph2 | osd存储节点,mon |
192.168.0.125 | ceph3 | osd存储节点,mon |
192.168.0.164 | client | 客户机挂载节点 |
部署准备
1.配置yum源
#vi /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
yum clean all && yum list
更新源 安装ceph-deploy
yum makecache
yum update
开启yum缓存
vim /etc/yum.conf
keepcache=1
虚拟机准备工作
关闭selinux和防火墙
或
开启防火墙端口
firewall-cmd --permanent --add-port=6789/tcp #admin
firewall-cmd --permanent --add-port=6800-8000/tcp #osd
firewall-cmd --reload
修改主机名称
hostnamectl set-hostname
同步时间
yum -y install ntpdate ntp
vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
systemctl restart ntpd && systemctl enable ntpd
配置本地解析
修改/etc/hosts
192.168.0.154 ceph1
192.168.0.175 ceph2
192.168.0.125 ceph3
192.168.0.164 client
ssh免密登录
ssh-keygen
ssh-copy-id ceph1
ssh-copy-id ceph2
ssh-copy-id ceph3
ssh-copy-id client
部署
ceph1执行
yum install ceph-deploy python-setuptools python2-subprocess32 ceph-common```
创建ceph目录
mkdir ceph && cd ceph
创建集群,创建在此目录生成文件,ceph-deploy –cluster {cluster-name} new ceph1 ceph2 ceph3 #创建一个自定集群名称的ceph集群,默认为ceph
ceph-deploy new ceph1 ceph2 ceph3
修改配置文件
vim ceph.conf
[global]
fsid = 36ea8944-9e18-41d4-8169-401e481f8bc5
mon_initial_members = ceph1, ceph2, ceph3
mon_host = 192.168.0.154,192.168.0.175,192.168.0.125
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
s
安装Ceph软件包
yum -y install ceph ceph-radosgw #都需要执行,或者管理端执行ceph-deploy install ceph1 ceph2 ceph3
初始化monitor(s),并收集密钥
ceph-deploy mon create-initial
使用ceph-deploy把配置文件和admin密钥拷贝到所有节点,以便您每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyringceph.client.admin.keyring
ceph-deploy admin ceph1 ceph2 ceph3 client
确定管理节点
L版本之后Ceph,必须要有一个mgr节点,所以我们在管理节点执行:
su - cephadm
cd ceph-cluster
ceph-deploy mgr create ceph-mon1
检查集群状态
ceph -s #health: HEALTH_OK就表明成功
在VM里给三天节点虚拟机增加新硬盘
lsdlk
查看新硬盘的名称 我的是sdb,磁盘名称是从sda,sdb,sdc排序的
创建OSD
ceph-deploy osd create ceph-mon1 --data /dev/sdb
ceph-deploy osd create ceph-mon2 --data /dev/sdb
ceph-deploy osd create ceph-mon3 --data /dev/sdb
建一个存储池,要想使用ceph的存储功能,必须先创建存储池
ceph osd pool create rbd 128 128
初始化存储池
rbd pool init -p rbd
1.设置存储池副本数
[root@controller-1 ~]# ceph osd pool get rbd size
size: 2
[root@controller-1 ~]# ceph osd pool set rbd size 1
set pool 1 size to 1
升级client的虚拟机内核到5版本
修改client下文件权限
chmod +r /etc/ceph/ceph.client.admin.keyring
client节点创建设备镜像,单位是M
rbd create --size 4096 --pool rbd img
client节点映射镜像到主机:
rbd map img --name client.admin
client节点格式化块设备
mkfs.ext4 -m 0 /dev/rbd/rbd/foo
client节点挂载mount块设备
mkdir /mnt/ceph-block-device
mount /dev/rbd/rbd/foo /mnt/ceph-block-device -o discard
创建文件系统时报不支持EC数据池问题
当拥有一个ceph_metadata元数据副本类型池和一个ceph_data数据EC类型池时,建立文件系统:
ceph fs new cephfs cephfs_metadata cephfs_data
N版可能会报:
Error EINVAL: pool 'cephfs_data' (id '11') is an erasure-coded pool. Use of an EC pool for the default data pool is discouraged; see the online CephFS documentation for more information. Use --force to override.
加上—force后:
ceph fs new cephfs cephfs_metadata cephfs_data --force
也可能会报:
Error EINVAL: pool 'cephfs_data' (id '11') is an erasure-coded pool, with no overwrite support
这是需要手动设置ceph_data池 allow_ec_overwrites=true
ceph osd pool set cephfs_data allow_ec_overwrites true
再执行
ceph fs new cephfs cephfs_metadata cephfs_data –forc
就可以创建文件系统成功。