基于cephfs搭建高可用分布式存储并mount到本地
服务器硬件配置及环境
项目 | 说明 |
---|---|
CPU | 1核 |
内存 | 1GB |
硬盘 | 40GB |
系统 | CentOS 7.5 |
时间同步服务 | chrony |
ceph | 13.2.2-0 |
节点部署图
节点功能简介
项目 | 说明 |
---|---|
yum repo | 如果部署环境每个节点都可以访问外网, 则无需做任何操作, 部署脚本会自动添加外网环境的yum源. 如果部署无法访问外网, 需要自行部署centos, epel, ceph三个yum源. 每个节点都必须可以访问所提到的所有yum源 |
时间同步服务器 | 每个节点都必须可以访问, 如果部署环境无法访问外网需要自行搭建时间同步服务器 |
client-x | 需要挂载存储的设备, 需要同时可以访问每个storage-ha-x和yum源, 时间服务器 |
storage-deploy-1 | 用于统一部署ceph集群的工作机, 系统为CentOS 7.5 |
storage-ha-x | 承载ceph各项服务的服务器节点, 系统为CentOS 7.5 |
mon | Monitors, 节点映射管理, 身份验证管理, 需要达到冗余和高可用至少需要3个节点 |
osd | object storage daemon, 对象存储服务, 需要达到冗余和高可用至少需要3个节点 |
mgr | Manager, 用于跟踪运行指标和集群状态, 性能. |
mds | Metadata Serve, 提供cephfs的元数据存储 |
参考:
默认端口
项目 | 说明 |
---|---|
ssh | tcp: 22 |
mon | tcp: 6789 |
mds/mgr/osd | tcp: 6800~7300 |
参考:
默认路径
项目 | 说明 |
---|---|
主配置文件 | /etc/ceph/ceph.conf |
配置文件夹 | /etc/ceph |
日志文件夹 | /var/log/ceph |
各服务认证key文件 | /var/lib/ceph/{server name}/{hostname}/keyring |
admin认证key文件 | ceph.client.admin.keyring |
部署脚本说明
- node-init.sh: storage-ha-x节点初期运行的初始化脚本
- admin-init.sh: storage-deploy-1节点初期运行的初始化脚本, 必须要在每个storage-ha-x节点都运行完node-init.sh之后才能运行.
- ceph-deploy.sh: ceph部署脚本, 仅在storage-deploy-1节点上运行即可, 需要在
node-init.sh
和admin-init.sh
运行完成且成功后运行.
PS: 脚本中涉及到的ip和其它不同信息请先自行修改后再运行.
脚本运行命令
请将 附录: 脚本内容
章节或脚本Git库
章节中的各个脚本放到各个对应服务器任意位置并使用以下命令按照顺序运行.
PS: 需严格按照部署脚本说明
章节中的持续顺序执行脚本.
PS: 脚本中涉及到不同于当前环境的信息(如: ip, yum源, 密码, 主机名等)请先自行修改后再运行.
- 初始化ceph节点
1
|
/bin/bash node-init.sh
|
执行命令结果
- 初始化部署节点
1
|
/bin/bash admin-init.sh
|
执行命令结果
- 开始部署
1
|
/bin/bash ceph-deploy.sh
|
执行命令结果
可以看到上方的pgs
下方有个creating+peering
, 这表示OSDs在创建和准备同步中.需要等待
这时可以在任意有admin角色的storage-ha-x
节点上执行以下命令看查是否完成准备
1
|
ceph -s
|
当pgs
显示为下图的active+clean
代表各个节点同步完成.
如果一直无法达到active+clean
状态, 请参考以下操作文章:
TROUBLESHOOTING PGS
挂载存储
创建测试用户
以下命令在任意一个storage-ha-x服务器上运行
1
|
# 此命令含义是创建一个名为client.fs-test-1的用户, 对于挂载的根目录'/'只有可读权限, 对于挂载的'/test_1'目录有读写权限.
|
获取用户授权信息
以下命令在任意一个添加过admin
角色的storage-ha-x服务器上运行
1
|
# 获取client.admin用户的授权信息
|
挂载方式
挂载方式分为两种, 分别是cephfs和fuse. 选择其中一种方式进行挂载即可.
两种挂载方式的区别和优势请参考以下文章:
WHICH CLIENT?
cephfs方式
以下命令在任意需要挂载存储的client下执行
PS: 此挂载方式依赖于ceph, 需要先添加ceph和epel的yum源.
1
|
# cephfs方式挂载
|
fuse方式
以下命令在任意需要挂载存储的client下执行
PS: 此挂载方式依赖于ceph-fuse, 需要先添加ceph和epel的yum源.
1
|
yum install ceph-fuse -y
|
挂载结果
挂载结果可以使用以下命令查看
1
|
df -h
|
运维命令
- 状态查看
1
|
# 查看集群整体状态
|
- 简单写性能测试
1
|
# 在挂载了存储的client下简单测试写性能
|
- 删除cephfs和pool
1
|
# 删除cephfs前需要的操作
|
- 同步ceph配置文件
1
|
# 同步的配置文件
|
FAQ
-
Q: health_warn:clock skew detected on mon
A: 使用chrony同步每台服务器节点的时间 -
Q: Error ERANGE: pg_num “*“ size “*“ would mean “*“ total pgs, which exceeds max “*“ (mon_max_pg_per_osd 250 num_in_osds “\“)
A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000
(参数中的数值自己根据实际情况修改)并用同步ceph配置文件
方式上传到各个节点, 并重启ceph-mon.target
-
Q: too many PGs per OSD
A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000
(参数中的数值自己根据实际情况修改)并用同步ceph配置文件
方式上传到各个节点, 并重启ceph-mon.target
参考
ceph cephx认证参考
设置cephfs访问权限
ceph用户管理
ceph-fuse方式挂载
Ceph 运维手册
Red Hat Ceph存储—《深入理解Ceph架构》
Ceph常规操作及常见问题梳理
脚本Git库
https://github.com/x22x22/cephfs-verify-script
附录: 脚本内容
- node-init.sh
1
|
|