当前位置: 首页 > news >正文

ceph存储配置大全

软件定义存储SDS
传统存储是设计是自下而上,SDS存储是自顶向下

一、Ceph存储对外提供三大类型服务:
1、对象存储(rgw)
2、块存储(rbd)
3、文件存储(cephfs)

二、基本组件
1、mon(Monitor)
Ceph Monitor:由该英文名字我们可以知道它是一个监视器,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,
Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置。

2、osd
OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。

3、mds
Ceph MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。

三、存储过程
rbd/rgw/cephfs—>rados---->crush map(pools)---->PG(placement Groups)---->osds

四、写流程
client—>primary osd(缓存)---->secondary osd/tertiary osd(缓存)

五、部署规划设计:
准备3台虚拟机centos7.9系统,每台一块能上公网的网卡(要用公网yum源),每台vm上添加3盘10G硬盘。

1、改网络配置为静态static、可以访问外网、内网互通
vim /etc/sysconfig/network-scripts/ifcfg-ens33

Node1
BOOTPROTO=“static”
IPADDR=192.168.2.100
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=114.114.114.114

Node2
BOOTPROTO=“static”
IPADDR=192.168.2.101
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=114.114.114.114

Node3
BOOTPROTO=“static”
IPADDR=192.168.2.102
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=114.114.114.114

route -n //看网关

cat /etc/resolv.conf //看dns

ping www.baidu.com //测试上网

2、改计算机名,添加hosts记录
hostnamectl set-hostname ceph_node1
hostnamectl set-hostname ceph_node2
hostnamectl set-hostname ceph_node3

vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.100 ceph_node1
192.168.2.101 ceph_node2
192.168.2.102 ceph_node3

scp /etc/hosts ceph_node2:/etc/ //改好的hosts推送到其它节点

3、关防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
setenforce 0 //临时关selinux
getenforce

4、生成公私密钥,ssh公钥推送(注意要给本机自己也得推送一份公钥)
各个节点都要改sshd文件允许推送过来,不然推送公钥失败
sudo vi /etc/ssh/sshd_config # 用 root 权限编辑
PubkeyAuthentication yes # 启用公钥认证(默认是 yes,若被修改需改回)
AuthorizedKeysFile .ssh/authorized_keys # 指定公钥文件路径(默认正确)
PermitRootLogin yes # 若需以 root 登录,设为 yes(按需调整)

ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node1
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node2
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node3

ssh hosts里的域名测试是否需要密码连接

5、配置时间服务,保持所有的时间一致
设置控制节点时间服务指向外网,其它受控节点指向控制节点

yum -y install chrony

Ceph_node1控制节点上
vi /etc/chrony.conf
server ntp1.aliyun.com iburst //指向公网
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
allow 192.168.111.0/24
local stratum 10

systemctl start chronyd
systemctl enable chronyd

Ceph_node2/3节点上
vi /etc/chrony.conf
server ceph_node1 iburst //指向控制节点

查看时间同步源
chronyc sources -v

手动同步系统时钟
chronyc -a makestep

6、添加yum源
cd /etc/yum.repos.d/
mkdir yum_bak
mv *.repo yum_bak

基础yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

ceph源
cat << EOF | tee /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[Ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

EOF

生成yum源缓存
yum clean all

yum makecache fast

yum list |grep ceph

7、部署Ceph
部署控制节点在ceph_node1节点上安装ceph-deploy
yum -y install ceph-deploy ceph

在ceph_node1上创建一个cluster目录,下面所有命令必须再此目录下进行操作
[root@ceph_node1 ~]# mkdir /cluster
[root@ceph_node1 ~]# cd /cluster

将ceph_node1,ceph_node2,ceph_node3加入集群
[root@ceph_node1 cluster]# ceph-deploy new ceph_node1 ceph_node2 ceph_node3

输出没有报错,表示部署成功。
如果报python错误:
yum install python2-pip

所有节点上node1-node3上安装ceph
Yum install ceph -y

查看ceph版本
[root@ceph_node1 cluster]# ceph -v

必须再此目录下进行操作cluster,生成mon角色
[root@ceph_node1 cluster]# ceph-deploy mon create-initial

必须再此目录下进行操作cluster,生成ceph密钥
[root@ceph_node1 cluster]# ceph-deploy admin ceph_node1 ceph_node2 ceph_node3

部署MGR,提供web界面管理ceph(可选安装)
ceph-deploy mgr create ceph_node1 ceph_node2 ceph_node3

8、部署rgw
yum -y install ceph-radosgw
[root@ceph_node1 cluster]# ceph-deploy rgw create ceph_node1

9、部署cephfs(可选)
[root@ceph_node1 cluster]# ceph-deploy mds create ceph_node1 ceph_node2 ceph_node3

10、初始化OSD
在ceph_node1上一次初始化所有磁盘
ceph-deploy osd create --data /dev/sdb ceph_node1
ceph-deploy osd create --data /dev/sdc ceph_node1
ceph-deploy osd create --data /dev/sdd ceph_node1
ceph-deploy osd create --data /dev/sdb ceph_node2
ceph-deploy osd create --data /dev/sdc ceph_node2
ceph-deploy osd create --data /dev/sdd ceph_node2
ceph-deploy osd create --data /dev/sdb ceph_node3
ceph-deploy osd create --data /dev/sdc ceph_node3
ceph-deploy osd create --data /dev/sdd ceph_node3

查看OSD状态
[root@ceph_node1 cluster]# ceph osd status

±—±-----------±------±------±-------±--------±-------±--------±----------+
| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |
±—±-----------±------±------±-------±--------±-------±--------±----------+
| 0 | ceph_node1 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 1 | ceph_node1 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 2 | ceph_node1 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 3 | ceph_node2 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 4 | ceph_node2 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 5 | ceph_node2 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 6 | ceph_node3 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 7 | ceph_node3 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
| 8 | ceph_node3 | 1031M | 9204M | 0 | 0 | 0 | 0 | exists,up |
±—±-----------±------±------±-------±--------±-------±--------±----------+

11、查看osd进程
Ps aux | grep osd

12、查看ceph状态
[root@ceph_node1 cluster]# ceph -s
[root@ceph_node1 cluster]# ceph -s
cluster:
id: 17342e84-06cd-406d-a48b-c66be10c5b48
health: HEALTH_OK

services:
mon: 3 daemons, quorum ceph_node1,ceph_node2,ceph_node3 (age 10m)
mgr: ceph_node1(active, since 37m), standbys: ceph_node2, ceph_node3
mds: 3 up:standby
osd: 9 osds: 9 up (since 44s), 9 in (since 44s)
rgw: 1 daemon active (ceph_node1)

task status:

data:
pools: 4 pools, 128 pgs
objects: 187 objects, 1.2 KiB
usage: 9.1 GiB used, 81 GiB / 90 GiB avail
pgs: 128 active+clean

至此,整个ceph的部署就完成了,健康状态也是ok的。

如果状态不OK,有以下问题
health: HEALTH_WARN
mons are allowing insecure global_id reclaim

禁用不安全的 global_id 回收可以解决
ceph config set mon auth_allow_insecure_global_id_reclaim false
systemctl restart ceph-mon@$(hostname -s)

13、Ceph操作使用
创建存储池
[root@ceph_node1 cluster]# ceph osd pool create mypool1 128
pool ‘mypool1’ created

#查看已创建的存储池信息
[root@ceph_node1 cluster]# ceph osd pool ls
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
mypool1

查看存储池详细参数
[root@ceph_node1 cluster]# ceph osd pool ls detail

查看存储池单个参数配置
[root@ceph_node1 cluster]# ceph osd pool get mypool1 size
[root@ceph_node1 cluster]# ceph osd pool get mypool1 pg_num

修改存储池参数
ceph osd pool set mypool1 pg_num 64

14、创建EC池,创建EC策略
[root@ceph_node1 cluster]#ceph osd erasure-code-profile set ec001 k=3 m=2 crush-failure-domain=osd
[root@ceph_node1 cluster]# ceph osd pool create mypool2 100 erasure ec001
[root@ceph_node1 cluster]# ceph osd pool ls detail

15、rgw使用
设置mypool2为rgw,使用rados客户端工具测试上传下载
[root@ceph_node1 cluster]# ceph osd pool application enable mypool2 rgw

#将/etc/passwd 上到mypool2中,命名为t_pass
[root@ceph_node1 cluster]# rados -p mypool2 put t_pass /etc/passwd

#查看mypool2 中的文件
[root@ceph_node1 cluster]# rados -p mypool2 ls

将mypool2中的文件t_pass下载到/tmp/passwd
[root@ceph_node1 cluster]# rados -p mypool2 get t_pass /tmp/passwd

查看下载的文件内容
[root@ceph_node1 cluster]# cat /tmp/passwd

16、rbd使用
设置mypool3为rbd,并创建卷,挂载到/mnt, 映射给业务服务器使用。

#创建存储池mypool3
[root@ceph_node1 cluster]# ceph osd pool create mypool3 64

#设置存储池类型为rbd
[root@ceph_node1 cluster]# ceph osd pool application enable mypool3 rbd

在存储池里划分一块名为disk1的磁盘,大小为1G
[root@ceph_node1 cluster]# rbd create mypool3/disk1 --size 1G

#将创建的磁盘map成一个块设备
[root@ceph_node1 cluster]# rbd map mypool3/disk1

[root@ceph_node1 cluster]# rbd feature disable mypool3/disk1 object-map fast-diff deep-flatten

[root@ceph_node1 cluster]# rbd map mypool3/disk1

[root@ceph_node1 cluster]# ll /dev/rbd
rbd/ rbd0

[root@ceph_node1 cluster]# ll /dev/rbd0
brw-rw----. 1 root disk 252, 0 Feb 18 14:46 /dev/rbd0

#格式化块设备
[root@ceph_node1 cluster]# mkfs.ext4 /dev/rbd0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1024 blocks, Stripe width=1024 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

#挂载使用
[root@ceph_node1 cluster]# mount /dev/rbd0 /mnt
[root@ceph_node1 cluster]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 18M 973M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.9G 16G 11% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 199M 0 199M 0% /run/user/0
tmpfs 991M 52K 991M 1% /var/lib/ceph/osd/ceph-0
tmpfs 991M 52K 991M 1% /var/lib/ceph/osd/ceph-1
tmpfs 991M 52K 991M 1% /var/lib/ceph/osd/ceph-2
/dev/rbd0 976M 2.6M 907M 1% /mnt

http://www.dtcms.com/a/393087.html

相关文章:

  • 数据库造神计划第十六天---索引(1)
  • 【软件推荐】免费图片视频管理工具,让灵感库告别混乱
  • C语言入门教程 | 阶段二:循环语句详解(while、do...while、for)
  • GEO(Generative Engine Optimization)完全指南:从原理到实践
  • Msyql日期时间总结
  • IP地址入门基础
  • 【ROS2】Beginner: CLI tools
  • LeetCode刷题记录----279.完全平方数(Medium)
  • H7-TOOL的250M示波器模组采集CANFD标准波形效果,开口逻辑0,闭口逻辑1
  • 打工人日报#20250920
  • 详解C/C++内存管理
  • SSM(springboot部分)
  • C++ std:string和Qt的QString有哪些差异?
  • FunASR开源项目实战:解锁语音识别新姿势
  • (华为杯)数学建模比赛编程助手
  • 通义千问对postgresql wire协议的连接和执行SQL过程的解释
  • 钣金折弯机被远程锁机了怎么办
  • 基于陌讯AIGC检测算法的高性能部署实践:FastAPI与多进程并发设计详解
  • 群晖 NAS 远程访问痛点解决:神卓 N600 公网 IP 盒实战体验
  • JavaWeb之HttpServletRequest与HttpServletResponse详解及快递管理系统实践
  • Git详细介绍
  • 大话计算机网络(上)
  • JVM方法调用机制深度解析:从aload_1到invokevirtual的完整旅程
  • STM32CubeIDE学习——安装
  • 追觅宣布进军手机市场,已经白热化的手机赛道追觅优势何在?
  • AI智能体开发工作流的成功案例分享及思路
  • 【算法基础】String、Hash 与 Stack
  • 使用springboot开发一个宿舍管理系统练习项目
  • 像素版推箱子游戏
  • 2025年CSP-J认证 普及组初赛真题解析 CCF信息学奥赛C++ 中小学初级组 第一轮真题-选择题解析