一.Ceph分布式存储 (1)Ceph概念:Ceph是一种高性能、可扩展的分布式存储系统,它提供了对象存储、块存储和文件系统存储三种存储接口,Ceph的设计目标是提供无单点故障的、高性能的、可扩展的存储解决方案,同时能够降低存储成本。(2)常用分布式存储方案LustreHadoopFastDFSGlusterFSCeph(3)Ceph集群(服务)的组成部分(可理解为5个服务)1)MON(Monitor)监视器,监控与地图负责监控Ceph集群的整体状态、配置信息和监控数据,为了高可用性,通常至少需要三台Monitor.2)MGR(Manager)管理器负责管理集群,包括集群状态监控、元数据管理、REST API接口等.高可用性至少两台Manager.3)OSD(Object Storage Daemon)负责存储数据和处理数据的复制、恢复和再平衡.4)MDS(Metadata Server)MDS用于支持Ceph文件系统 (CephFS),负责维护文件系统的元数据.5)RGW(RADOS Gateway)RGW是Ceph提供的对象存储,兼容S3和Swift协议.二.Cephadm脚本安装ceph-common包,命令行可以补全2.Cephadm 命令: Cephadm 命令 --helpcephadm bootstrap:初始化集群cephadm ls:列出主机上cephadm已知的守护程序实例。cephadm logs:打印守护程序容器的journald日志。cephadm join:将其他节点加入Ceph集群。三.ceph集群搭建 1.Ceph搭建,实验环境准备虚拟机准备:所有主机至少2G内存,关闭防火墙和SELinuxceph1-->192.168.88.11-->额外3块硬盘ceph2-->192.168.88.12-->额外3块硬盘ceph3-->192.168.88.13-->额外3块硬盘client-->192.168.88.102.ceph搭建前置准备工作(1)配置所有节点主机名解析# 192.168.88.240必须解析为quay.io!!!:公开的域名,存放ceph的镜像文件[root@pubserver ceph]# vim 01_update_hosts.yml---- name: update hostshosts: alltasks:- name: add host resolv #修改/etc/hosts文件添加主机名映射blockinfile:path: /etc/hostsblock: |192.168.88.10 client192.168.88.11 ceph1192.168.88.12 ceph2192.168.88.13 ceph3192.168.88.240 quay.io :公开的域名,存放ceph的镜像文件(这里做的假的)(2)配置yum仓库和时间同步服务 1)服务端:yum -y install chronyvim /etc/chrony.conf...25 allow 192.168.88.0/24 #允许88网段主机同步时间26 27 # Serve time even if not synchronized to a time source.28 local stratum 10 #向下10层同步时间...systemctl enable chronyd #设置服务开机自启动systemctl restart chronyd #重启chronyd服务2)客户端通过ansible使用时间系统角色配置yum list | grep roles #查看系统角色包3.ceph集群的搭建镜像准备工作(1)ceph节点安装podman或docker,lvm2软件---- name: install pkgshosts: cephtasks:- name: install pkgs #安装必备软件yum:name: python39,podman,lvm2state: present(2)搭建私有ceph镜像仓库1)scp上传相关的镜像包到控制机5个镜像文件+2个软件包altermanager_v0.23.0.tar :告警模块镜像ceph-grafana_8.3.5.tar :监控和可视化Ceph集群的性能和状态镜像 prometheus_v2.33.4.tar:系统监控和警报工具包镜像node-exporter_v1.3.1.tar:采集到机器的CPU、内存、磁盘等信息镜像 ceph_v17.tar : Ceph 分布式存储的镜像,包括5大服务cephadm #ceph的操作工具#Docker Distribution 是 Docker 的一个工具包,用于打包、运输、存储和发送 Docker 镜像docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm 2)调整私有仓库端口:这里是教学环境为了可以成功下载镜像#安装软件包yum -y localinstall docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm #调整端口[root@pubserver ~]#vim /etc/docker-distribution/registry/config.yml version: 0.1log:fields:service: registrystorage:cache:layerinfo: inmemoryfilesystem:rootdirectory: /var/lib/registryhttp:addr: :80 #端口由5000调整为80,必须调整,否则后续下载镜像时会有报错systemctl enable docker-distribution.service --nowcurl http://localhost/v2/_catalog{"repositories":[]} #查看本地仓库的镜像,此时仓库为空3)控制机配置域名解析,模拟官方网站vim /etc/hosts192.168.88.240 quay.io4)配置私有仓库地址vim /etc/containers/registries.conftail -3 /etc/containers/registries.conf[[registry]]location = "quay.io" #指定了容器仓库的地址,这里的实验映射到本机insecure = true #可以使用http协议5)控制机导入Ceph相关镜像到本地其导入到本地的Podman镜像库中,导入成功后,用户就可以在Podman中看到这个镜像.[root@pubserver ceph-server]# for i in *.tar > do> podman load -i $i> done6)将镜像推送到私有,远程仓库podman push命令用于将镜像推送到远程仓库,以便其他用户可以下载和使用。[root@pubserver ceph-server]#podman push quay.io/ceph/ceph:v17 podman push quay.io/ceph/ceph-grafana:8.3.5 podman push quay.io/prometheus/prometheus:v2.33.4podman push quay.io/prometheus/node-exporter:v1.3.1podman push quay.io/prometheus/alertmanager:v0.23.0 验证私有仓库中Ceph镜像保存情况[root@pubserver ceph-server]# curl http://quay.io/v2/_catalog7)配置Ceph节点机器使用私有镜像仓库地址---- name: config private registryhosts: cephtasks:- name: add quay.io #配置私有registry仓库blockinfile:path: /etc/containers/registries.confblock: |[[registry]]location = "quay.io"insecure = true建议搭建Ceph集群前临时撤掉Ceph节点网关,禁止Ceph节点连接公网,防止去公网拉取镜像ansible ceph -m shell -a "route del default gw 192.168.88.254"4.ceph集群搭建步骤流程Ceph在使用过程中是无中心化结构,但搭建过程中选择集群某一个节点作为初始化管理节点,然后扩容其他节点1)利用cephadm脚本初始化ceph集群[root@ceph1 ~]# ./cephadm bootstrap \ #初始化集群 > --mon-ip 192.168.88.11 \ #指定初始化节点IP地址> --initial-dashboard-password=123456 \ #指定dashboard面板密码> --dashboard-password-noupdate #不更新dashboard面板密码2)同步ceph密钥Ceph 集群通常由多个节点组成,包括监视器(MON)、对象存储守护进程(OSD)和管理器(MGR)等通过将 Ceph 公钥同步到所有节点,可以简化管理员通过 SSH 登录到这些节点的过程,无需每次输入密码。ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph1 #-f强制 3)扩容ceph集群ceph orch host add ceph2 192.168.88.12 #将ceph2加入集群4)绑定OSD服务ceph orch daemon add osd ceph1:/dev/vdb #绑定单个硬盘ceph orch apply osd --all-available-device #OSD绑定所有可用状态硬盘5)确认集群状态ceph -s5.ceph orch 集群服务管理的命令。ceph orch ls:列出Ceph 集群中运行的服务。ceph orch ps:查看Ceph集群所有的容器,列出 Ceph 集群中运行的状态,健康状态、运行节点等信息ceph orch device ls:列出所有Ceph集群节点上的可用存储设备ceph orch ps --daemon-type=mon #3个容器ceph orch host ls :要列出与集群关联的所有主机ceph orch host add <hostname> [<ip>] [<label1> ...]:将新主机添加到 Ceph 集群中ceph orch apply:配置应用于 Ceph 集群,用于部署新服务、更新或删除服务。如 osd、mon、mgr等ceph orch rm:此命令用于从 Ceph 集群中删除服务ceph orch upgrade:将 Ceph 集群升级到新版本ceph orch service restart:重启指定的服务(如 OSD 等)ceph orch daemon add:在指定的主机上添加一个新的守护进程实例。ceph orch daemon rm:从指定的主机上删除一个守护进程实例(守护进程:osd,mon,等)。ceph orch device ls|osd create:此命令用于查看存储设备列表或创建 OSD。6.Ceph集群相关容器的命令1、集群管理命令查看集群健康状态ceph -s:显示集群的简要状态和健康状况。ceph health detail:显示集群健康状态的详细信息。显示集群的容量和使用情况ceph df2、监视器(MON)管理命令查看MON状态信息ceph mon stat:显示MON的状态信息,包括集群中的MON节点、选举状态等。查看MON的选举状态ceph quorum_status:显示MON的选举状态和仲裁信息。查看MON的映射信息ceph mon dump:输出MON的映射信息。删除MON节点ceph mon remove <mon-name>:从集群中删除指定的MON节点。4、对象存储守护进程(OSD)管理命令查看OSD状态ceph osd stat:显示OSD的简要状态信息。查看OSD树形结构ceph osd tree:以树形结构显示OSD的层级关系。查看OSD磁盘使用情况ceph osd df:显示OSD的磁盘使用情况。将OSD设置为down状态ceph osd down <osd-id>:将指定的OSD设置为down状态。将OSD重新加入集群ceph osd in <osd-id>:将之前设置为down的OSD重新加入集群。将OSD踢出集群ceph osd out <osd-id>:将指定的OSD踢出集群。4、存储池(Pool)管理命令列出所有存储池ceph osd pool ls:列出集群中的所有存储池。查看存储池详细信息ceph osd pool ls detail:列出存储池的详细信息。创建存储池ceph osd pool create <pool-name>:创建新的存储池。删除存储池ceph osd pool delete <pool-name> :删除指定的存储池。设置存储池副本数ceph osd pool set <pool-name> size <replica-count>:设置存储池的副本数。获取存储池副本数ceph osd pool get <pool-name> size:获取存储池的副本数。设置存储池配额ceph osd pool set-quota <pool-name> :设置存储池的对象数或容量配额。重命名存储池ceph osd pool rename <old-pool-name> <new-pool-name>:重命名指定的存储池。5、Placement Groups(PG)管理命令列出所有PGceph pg ls:列出集群中的所有PG。查看PG的副本分布ceph pg map <pg-id>:查看指定PG的副本分布在哪些OSD上。执行PG修复ceph pg repair <pg-id>:尝试修复指定的PG。执行数据一致性校验ceph pg scrub <pg-id> 或 deep-scrub <pg-id>:执行数据一致性校验或深度校验。6、元数据服务器(MDS)管理命令查看MDS状态ceph mds stat:显示MDS的状态信息查看MDS的映射信息ceph mds dump:输出MDS的映射信息。删除MDS节点ceph mds rm <mds-id> <mds-name>:从集群中删除指定的MDS节点。7、其他常用命令查看Ceph日志ceph-conf --name <daemon-name> --show-config-value log_file:查看指定守护进程的日志文件路径。启动或停止Ceph服务systemctl start/stop/restart ceph.target。
一.Ceph分布式存储
(1)Ceph概念:Ceph是一种高性能、可扩展的分布式存储系统,它提供了对象存储、块存储和文件系统存储三种存储接口,Ceph的设计目标是提供无单点故障的、高性能的、可扩展的存储解决方案,同时能够降低存储成本。
(2)常用分布式存储方案
Lustre
Hadoop
FastDFS
GlusterFS
Ceph
(3)Ceph集群(服务)的组成部分(可理解为5个服务)
1)MON(Monitor)监视器,监控与地图
负责监控Ceph集群的整体状态、配置信息和监控数据,为了高可用性,通常至少需要三台Monitor.
2)MGR(Manager)管理器
负责管理集群,包括集群状态监控、元数据管理、REST API接口等.高可用性至少两台Manager.
3)OSD(Object Storage Daemon)
负责存储数据和处理数据的复制、恢复和再平衡.
4)MDS(Metadata Server)
MDS用于支持Ceph文件系统 (CephFS),负责维护文件系统的元数据.
5)RGW(RADOS Gateway)
RGW是Ceph提供的对象存储,兼容S3和Swift协议.
二.Cephadm脚本
安装ceph-common包,命令行可以补全
2.Cephadm 命令: Cephadm 命令 --help
cephadm bootstrap:初始化集群
cephadm ls:列出主机上cephadm已知的守护程序实例。
cephadm logs:打印守护程序容器的journald日志。
cephadm join:将其他节点加入Ceph集群。
三.ceph集群搭建
1.Ceph搭建,实验环境准备
虚拟机准备:所有主机至少2G内存,关闭防火墙和SELinux
ceph1-->192.168.88.11-->额外3块硬盘
ceph2-->192.168.88.12-->额外3块硬盘
ceph3-->192.168.88.13-->额外3块硬盘
client-->192.168.88.10
2.ceph搭建前置准备工作
(1)配置所有节点主机名解析
# 192.168.88.240必须解析为quay.io!!!:公开的域名,存放ceph的镜像文件
[root@pubserver ceph]# vim 01_update_hosts.yml
---
- name: update hosts
hosts: all
tasks:
- name: add host resolv #修改/etc/hosts文件添加主机名映射
blockinfile:
path: /etc/hosts
block: |
192.168.88.10 client
192.168.88.11 ceph1
192.168.88.12 ceph2
192.168.88.13 ceph3
192.168.88.240 quay.io :公开的域名,存放ceph的镜像文件(这里做的假的)
(2)配置yum仓库和时间同步服务
1)服务端:
yum -y install chrony
vim /etc/chrony.conf
...
25 allow 192.168.88.0/24 #允许88网段主机同步时间
26
27 # Serve time even if not synchronized to a time source.
28 local stratum 10 #向下10层同步时间
...
systemctl enable chronyd #设置服务开机自启动
systemctl restart chronyd #重启chronyd服务
2)客户端
通过ansible使用时间系统角色配置
yum list | grep roles #查看系统角色包
3.ceph集群的搭建镜像准备工作
(1)ceph节点安装podman或docker,lvm2软件
---
- name: install pkgs
hosts: ceph
tasks:
- name: install pkgs #安装必备软件
yum:
name: python39,podman,lvm2
state: present
(2)搭建私有ceph镜像仓库
1)scp上传相关的镜像包到控制机
5个镜像文件+2个软件包
altermanager_v0.23.0.tar :告警模块镜像
ceph-grafana_8.3.5.tar :监控和可视化Ceph集群的性能和状态镜像
prometheus_v2.33.4.tar:系统监控和警报工具包镜像
node-exporter_v1.3.1.tar:采集到机器的CPU、内存、磁盘等信息镜像
ceph_v17.tar : Ceph 分布式存储的镜像,包括5大服务
cephadm #ceph的操作工具
#Docker Distribution 是 Docker 的一个工具包,用于打包、运输、存储和发送 Docker 镜像
docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm
2)调整私有仓库端口:这里是教学环境为了可以成功下载镜像
#安装软件包
yum -y localinstall docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm
#调整端口
[root@pubserver ~]#vim /etc/docker-distribution/registry/config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :80 #端口由5000调整为80,必须调整,否则后续下载镜像时会有报错
systemctl enable docker-distribution.service --now
curl http://localhost/v2/_catalog
{"repositories":[]} #查看本地仓库的镜像,此时仓库为空
3)控制机配置域名解析,模拟官方网站
vim /etc/hosts
192.168.88.240 quay.io
4)配置私有仓库地址
vim /etc/containers/registries.conf
tail -3 /etc/containers/registries.conf
[[registry]]
location = "quay.io" #指定了容器仓库的地址,这里的实验映射到本机
insecure = true #可以使用http协议
5)控制机导入Ceph相关镜像到本地
其导入到本地的Podman镜像库中,导入成功后,用户就可以在Podman中看到这个镜像.
[root@pubserver ceph-server]# for i in *.tar
> do
> podman load -i $i
> done
6)将镜像推送到私有,远程仓库
podman push命令用于将镜像推送到远程仓库,以便其他用户可以下载和使用。
[root@pubserver ceph-server]#podman push quay.io/ceph/ceph:v17
podman push quay.io/ceph/ceph-grafana:8.3.5
podman push quay.io/prometheus/prometheus:v2.33.4
podman push quay.io/prometheus/node-exporter:v1.3.1
podman push quay.io/prometheus/alertmanager:v0.23.0
验证私有仓库中Ceph镜像保存情况
[root@pubserver ceph-server]# curl http://quay.io/v2/_catalog
7)配置Ceph节点机器使用私有镜像仓库地址
---
- name: config private registry
hosts: ceph
tasks:
- name: add quay.io #配置私有registry仓库
blockinfile:
path: /etc/containers/registries.conf
block: |
[[registry]]
location = "quay.io"
insecure = true
建议搭建Ceph集群前临时撤掉Ceph节点网关,禁止Ceph节点连接公网,防止去公网拉取镜像
ansible ceph -m shell -a "route del default gw 192.168.88.254"
4.ceph集群搭建步骤流程
Ceph在使用过程中是无中心化结构,但搭建过程中选择集群某一个节点作为初始化管理节点,然后扩容其他节点
1)利用cephadm脚本初始化ceph集群
[root@ceph1 ~]# ./cephadm bootstrap \ #初始化集群
> --mon-ip 192.168.88.11 \ #指定初始化节点IP地址
> --initial-dashboard-password=123456 \ #指定dashboard面板密码
> --dashboard-password-noupdate #不更新dashboard面板密码
2)同步ceph密钥
Ceph 集群通常由多个节点组成,包括监视器(MON)、对象存储守护进程(OSD)和管理器(MGR)等
通过将 Ceph 公钥同步到所有节点,可以简化管理员通过 SSH 登录到这些节点的过程,无需每次输入密码。
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph1 #-f强制
3)扩容ceph集群
ceph orch host add ceph2 192.168.88.12 #将ceph2加入集群
4)绑定OSD服务
ceph orch daemon add osd ceph1:/dev/vdb #绑定单个硬盘
ceph orch apply osd --all-available-device #OSD绑定所有可用状态硬盘
5)确认集群状态
ceph -s
5.ceph orch 集群服务管理的命令。
ceph orch ls:列出Ceph 集群中运行的服务。
ceph orch ps:查看Ceph集群所有的容器,列出 Ceph 集群中运行的状态,健康状态、运行节点等信息
ceph orch device ls:列出所有Ceph集群节点上的可用存储设备
ceph orch ps --daemon-type=mon #3个容器
ceph orch host ls :要列出与集群关联的所有主机
ceph orch host add <hostname> [<ip>] [<label1> ...]:将新主机添加到 Ceph 集群中
ceph orch apply:配置应用于 Ceph 集群,用于部署新服务、更新或删除服务。如 osd、mon、mgr等
ceph orch rm:此命令用于从 Ceph 集群中删除服务
ceph orch upgrade:将 Ceph 集群升级到新版本
ceph orch service restart:重启指定的服务(如 OSD 等)
ceph orch daemon add:在指定的主机上添加一个新的守护进程实例。
ceph orch daemon rm:从指定的主机上删除一个守护进程实例(守护进程:osd,mon,等)。
ceph orch device ls|osd create:此命令用于查看存储设备列表或创建 OSD。
6.Ceph集群相关容器的命令
1、集群管理命令
查看集群健康状态
ceph -s:显示集群的简要状态和健康状况。
ceph health detail:显示集群健康状态的详细信息。
显示集群的容量和使用情况
ceph df
2、监视器(MON)管理命令
查看MON状态信息
ceph mon stat:显示MON的状态信息,包括集群中的MON节点、选举状态等。
查看MON的选举状态
ceph quorum_status:显示MON的选举状态和仲裁信息。
查看MON的映射信息
ceph mon dump:输出MON的映射信息。
删除MON节点
ceph mon remove <mon-name>:从集群中删除指定的MON节点。
4、对象存储守护进程(OSD)管理命令
查看OSD状态
ceph osd stat:显示OSD的简要状态信息。
查看OSD树形结构
ceph osd tree:以树形结构显示OSD的层级关系。
查看OSD磁盘使用情况
ceph osd df:显示OSD的磁盘使用情况。
将OSD设置为down状态
ceph osd down <osd-id>:将指定的OSD设置为down状态。
将OSD重新加入集群
ceph osd in <osd-id>:将之前设置为down的OSD重新加入集群。
将OSD踢出集群
ceph osd out <osd-id>:将指定的OSD踢出集群。
4、存储池(Pool)管理命令
列出所有存储池
ceph osd pool ls:列出集群中的所有存储池。
查看存储池详细信息
ceph osd pool ls detail:列出存储池的详细信息。
创建存储池
ceph osd pool create <pool-name>:创建新的存储池。
删除存储池
ceph osd pool delete <pool-name> :删除指定的存储池。
设置存储池副本数
ceph osd pool set <pool-name> size <replica-count>:设置存储池的副本数。
获取存储池副本数
ceph osd pool get <pool-name> size:获取存储池的副本数。
设置存储池配额
ceph osd pool set-quota <pool-name> :设置存储池的对象数或容量配额。
重命名存储池
ceph osd pool rename <old-pool-name> <new-pool-name>:重命名指定的存储池。
5、Placement Groups(PG)管理命令
列出所有PG
ceph pg ls:列出集群中的所有PG。
查看PG的副本分布
ceph pg map <pg-id>:查看指定PG的副本分布在哪些OSD上。
执行PG修复
ceph pg repair <pg-id>:尝试修复指定的PG。
执行数据一致性校验
ceph pg scrub <pg-id> 或 deep-scrub <pg-id>:执行数据一致性校验或深度校验。
6、元数据服务器(MDS)管理命令
查看MDS状态
ceph mds stat:显示MDS的状态信息
查看MDS的映射信息
ceph mds dump:输出MDS的映射信息。
删除MDS节点
ceph mds rm <mds-id> <mds-name>:从集群中删除指定的MDS节点。
7、其他常用命令
查看Ceph日志
ceph-conf --name <daemon-name> --show-config-value log_file:查看指定守护进程的日志文件路径。
启动或停止Ceph服务
systemctl start/stop/restart ceph.target。