OSD(Object Storage Daemon,守护进程 ceph-osd)
是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等。通常至少需要3个OSD来实现冗余和高可用性。
PG(Placement Group 归置组)
PG 是一个虚拟的概念而已,物理上不真实存在。它在数据寻址时类似于数据库中的索引:Ceph 先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到 OSD。
Pool
Pool 是存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的 PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。
Pool中数据保存方式支持两种类型:
●多副本(replicated):类似 raid1,一个对象数据默认保存 3 个副本,放在不同的 OSD ●纠删码(Erasure Code):类似 raid5,对 CPU 消耗稍大,但是节约磁盘空间,对象数据保存只有 1 个副本。由于Ceph部分功能不支持纠删码池,此类型存储池使用不多
Pool、PG 和 OSD 的关系:
一个Pool里有很多个PG;一个PG里包含一堆对象,一个对象只能属于一个PG;PG有主从之分,一个PG分布在不同的OSD上(针对多副本类型)
Monitor(守护进程 ceph-mon)
用来保存OSD的元数据。负责维护集群状态的映射视图(Cluster Map:OSD Map、Monitor Map、PG Map 和 CRUSH Map),维护展示集群状态的各种图表, 管理集群客户端认证与授权。一个Ceph集群通常至少需要 3 或 5 个(奇数个)Monitor 节点才能实现冗余和高可用性,它们通过 Paxos 协议实现节点间的同步数据。
Manager(守护进程 ceph-mgr)
负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。为外部监视和管理系统提供额外的监视和接口,例如 zabbix、prometheus、 cephmetrics 等。一个 Ceph 集群通常至少需要 2 个 mgr 节点实现高可用性,基于 raft 协议实现节点间的信息同步。
MDS(Metadata Server,守护进程 ceph-mds)
是 CephFS 服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;如果不使用 CephFS 可以不安装。
ceph可以创建三种存储类型
-
RBD块存储:RADOS BLOCK DEVICE,即RADOS块设备,提供裸设备的能力,映射到操作系统是一块磁盘;
-
RGW对象存储:RADOS GateWay,即存储对象网关,提供无限存储接入能力,提供上传PUT下载GET接口;
-
CephFS文件存储:Ceph FileSystem,即Ceph文件系统,提供文件共享存储能力,映射到操作系统是一个目录
部署
node1 | 10.0.0.20 |
node2 | 10.0.0.30 |
node3 | 10.0.0.40 |
前置
#安装时间同步,启用
apt install -y ntp
systemctl enable --now ntp
#安装python3
apt install -y python3
#安装docker
#添加docker GPG公钥
curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#移动公钥
mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/
#添加软件仓库
sudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#安装
apt install -y docker-ce
#启动docker
systemctl enable --now docker
部署
#node1安装cephadm
apt install -y cephadm
#初始化主节点
cephadm bootstrap --mon-ip *<mon-ip>* --initial-dashboard-user admin --initial-dashboard-password admin --dashboard-password-noupdate
↑ ↑ ↑ ↑
主节点IP web用户名 web密码 关闭强制修改web密码
#拷贝ceph公钥到其他节点
ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected]/40
...
#安装ceph命令
apt install -y ceph-common
#添加节点
ceph orch host add 主机名 IP
ceph orch host add node2 10.0.0.30
...
#添加管理节点标签
ceph orch host label add node2(节点host) _admin
#查看
ceph orch host ls
#拷贝ceph配置文件和keyring
scp /etc/ceph/{*.conf,*.keyring} root@node2:/etc/ceph
#添加mon
ceph orch apply mon "node1,node2,node3"(host)
#添加mgr
ceph orch apply mgr --placement="node1,node2,node3"(host)
#添加osd(存储)
ceph orch daemon add osd node1:/dev/vdb (host:设备)
...
创建pool
#查看pool
ceph osd pool ls
#创建pool
ceph osd pool create mypool
#查看副本数
ceph osd pool get mypool size
#修改pool副本数
ceph osd pool set mypool size 2
#修改默认副本数
vim /etc/ceph/ceph.conf
osd_pool_default_size = 2
#查看 PG 和 PGP 数量
ceph osd pool get mypool pg_num
ceph osd pool get mypool pgp_num
#修改 pg_num 和 pgp_num 的数量
ceph osd pool set mypool pg_num 128
ceph osd pool set mypool pgp_num 128
删除pool
#临时开启pool删除
ceph config set global mon_allow_pool_delete true
#删除
ceph osd pool rm mypool mypool --yes-i-really-really-mean-it
创建chepfs
#创建mds
ceph orch apply mds ***
#创建pool(需要两个,一个数据,一个元数据)
ceph osd pool create data 64 64
ceph osd pool create metadata 64 64
#副本数设置
ceph osd pool set data size 2
ceph osd pool set metadata size 2
#创建fs
ceph fs new cephfs01 metadata data 启用ceph,元数据Pool在前,数据Pool在后
#挂载(需要下载ceph命令,拷贝ceph配置)
scp 10.0.0.20:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
apt install -y ceph-common
#查看公钥
cat /etc/ceph/ceph.client.admin.keyring
key = AQBdiixncCjUHRAAgnUJnIG2GUA9UAkzft4asw==
#挂载
mount -t ceph ip:6789 本地路径 -o name=admin,secret=AQBdiixncCjUHRAAgnUJnIG2GUA9UAkzft4asw
删除chepfs
#删除mds
#查看docker mds进程
docker ps 找mds服务
#停服务
docker contariner rm mds容器ID
#删除fs
ceph fs rm cephfs01 --yes-i-really-mean-it
#按需删除pool
#临时开启pool删除
ceph config set global mon_allow_pool_delete true
#删除
ceph osd pool rm data data --yes-i-really-really-mean-it
创建RBD
(服务端创建RBD,看到的是一个镜像,这个镜像就是RBD)
#创建pool存储池
ceph osd pool create rbdtest 64 64
#转换存储池为rbd模式
ceph osd pool application enable rbdtest rbd
#初始化存储池
rbd pool init -p rbdtest
#创建镜像
rbd create -p rbdtest --image rbdtest.img --size 10G
#查看存储池下存在哪些镜像
rbd ls -l -p rbdtest
#查看镜像的详细信息
rbd info -p rbd-test --image rbdtest.img
#修改镜像大小
rbd resize -p rbdtest --image rbdtest.img --size 20G
#使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink
rbd resize -p rbdtest --image rbdtest.img --size 5G --allow-shrink
#删除镜像
rbd rm -p rbdtest --image rbdtest.img
rbd remove rbdtest/rbdtest.img
#推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复
rbd trash move rbdtest/rbdtest.img
#查看回收站镜像
rbd trash list 查看全部
rbd trash list -p rbdtest 指定存储池
#还原镜像
rbd trash restore rbdtest/rbdtest.img
#挂载
#拷贝配置文件到客户端/etc/ceph/
ceph.conf ceph.client.admin.keyring
#挂载
rbd map rbdtest/rbdtest.img --keyring ceph.client.admin.keyring(指定认证文件)
#格式化
mkfs -t xfs(ext4.....) /dev/rbd0
#创建特定用户
ceph auth get-or-create client.用户名 osd "allow * pool=RBD-Pool名" mon "allow r" > ceph.client.用户名.keyring
#分发文件
scp ceph.client.用户名.keyring ......
#特定用户挂载
rbd map rbd/rbd.img --keyring ceph.client.usr.keyring --user user
#删除用户
ceph auth del client.user
#查看挂载的rbd
rbd showmapped
rbd device list
#取消挂载
rbd umap rbdtest/rbdtest.img(通过rbd showmapped查看)
#挂载后在线扩容
#服务端
rbd resize rbd/rbd.img --size 20G
#客户端(刷新文件系统)
xfs_growfs /dev/rbd0 #刷新xfs文件系统容量
resize2fs /dev/rbd0 #刷新ext4类型文件系统容量
#rbd快照
#服务端-在管理节点对镜像创建快照
rbd snap create --pool rbdtest --image rbdtest.img --snap rbdtest-backup
等于
rbd snap create rbdtest/rbdtest.img@rbdtest-backup
#列出指定镜像所有快照
rbd snap ls rbdtest/rbdtest.img
#恢复快照
rbd snap rollback rbdtest/rbdtest.img@rbdtest-backup
#导出镜像
rbd export rbdtest/rbdtest.img /opt/rbdtest.img
#导入镜像
rbd import /opt/rbdtest.img rbdtest/rbdtest.img
创建RGW
#创建对象存储rgw
ceph orch apply rgw rgwtest
#创建创建 RadosGW 账户
radosgw-admin user create --uid="rgwuser" --display-name="rgw test user"
↑ ↑
用户名 用户备注
要记录好创建成功时输出的user、access_key、secret_key
#后续忘记key可以使用此命令查看
radosgw-admin user info --uid="rgwuser"
#创建bucket桶
radosgw-admin bucket create --uid=rgwuser --bucket=mybucket
指定可用的用户 指定桶名
#客户端可以使用如下软件测试
Gladinet Cloud Desktop
标签:部署,ceph,--,rbdtest,简单,rbd,osd,pool
From: https://blog.csdn.net/abc2116146/article/details/143705393