运维ceph:
配置:
准备硬盘:
我们建议操作系统和 Ceph OSD 守护进程数据分别放到不同的硬盘。如果必须把数据和系统放在同一硬盘里,最好给数据分配一个单独的分区。
文件系统:
OSD 守护进程有赖于底层文件系统的扩展属性( XATTR )存储各种内部对象状态和元数据。底层文件系统必须能为 XATTR 提供足够容量, btrfs 没有限制随文件的 xattr 元数据总量; xfs 的限制相对大( 64KB ),多数部署都不会有瓶颈; ext4 的则太小而不可用。
使用 ext4 文件系统时,一定要把下面的配置放于 ceph.conf 配置文件的 [osd] 段下;用 btrfs 和 xfs 时可以选填。
filestore xattr use omap = true
btrfs 是写时复制( copy-on-write , cow )文件系统,它支持文件创建时间戳和校验和(可校验元数据完整性)功能,所以它能探测到数据坏副本,并且用好副本修复。写时复制功能是说 btrfs 支持可写文件系统快照。 btrfs 也支持透明压缩和其他功能。
btrfs 也集成了多设备管理功能,据此可以在底层支持异质硬盘存储,和数据分配策略。未来开发社区还会提供 fsck 、拆分、数据加密功能,这些诱人的功能正是 Ceph 集群的理想选择。
ceph配置:
各类守护进程都有一系列默认值(很多由 ceph/src/common/config_opts.h 配置),你可以用 Ceph 配置文件覆盖这些默认值。
配置文件:
启动 Ceph 存储集群时,各守护进程都从同一个配置文件(即默认的 ceph.conf )里查找它自己的配置。
配置文件定义了:
集群身份
认证配置
集群成员
主机名
主机 IP 地址
密钥环路径
日志路径
数据路径
Ceph 配置文件使用 ini 风格的语法,以分号 (;) 和井号 (#) 开始的行是注释
监视器配置:
监视器们维护着集群运行图的“主副本”。集群运行图是多个图的组合,包括监视器图、 OSD 图、归置组图和元数据服务器图。
一个监视器需要 4 个选项:
文件系统标识符: fsid 是对象存储的唯一标识符
监视器标识符: 监视器标识符是分配给集群内各监视器的唯一 ID,可以设置于 Ceph 配置文件(如 [mon.a] 、 [mon.b] 等等)、部署工具、或 ceph 命令行工具
密钥: 监视器必须有密钥
存储容量:
[global]
mon osd full ratio = .80 OSD 硬盘使用率达到多少就认为它 full
mon osd nearfull ratio = .70 OSD 硬盘使用率达到多少就认为它 nearfull
如果一些 OSD 快满了,但其他的仍有足够空间,你可能配错 CRUSH 权重了。
监视器存储同步:
心跳的选择:
监视器选项
mon osd min up ratio
描述: 在把 OSD 标记为 down 前,保持处于 up 状态的 OSD 最小比例。
类型: Double
默认值: .3
日志尺寸应该大于期望的驱动器速度和 filestore max sync interval 之乘积的两倍;最常见的方法是为日志驱动器(通常是 SSD )分区并挂载好,这样 Ceph 就可以用整个分区做日志。
osd journal size 默认值是 0 ,所以你得在 ceph.conf 里设置。日志尺寸应该是 filestore max sync interval 与期望吞吐量的乘积再乘以 2
洗刷¶:
Ceph 还要洗刷归置组以确保数据完整性。这种洗刷类似对象存储层的 fsck ,对每个归置组, Ceph 生成一个所有对象的目录,并比对每个主对象及其副本以确保没有对象丢失或错配
洗刷对维护数据完整性很重要,但会影响性能;你可以用下列选项来增加或减少洗刷操作。
osd max scrubs
描述: 一 OSD 的最大并发洗刷操作数。
类型: 32-bit Int
默认值: 1
osd scrub begin hour
描述: 被调度的洗刷操作在一天中可以运行的时间下限。
类型: 0 到 24 之间的整数
默认值: 0
osd scrub end hour
描述: 被调度的洗刷操作在一天中可以运行的时间上限。本选项与 osd scrub begin hour 一起定义了一个时间窗口,在此期间可以进行洗刷操作。但是,在某个归置组的洗刷间隔超过 osd scrub max interval 时,不管这个时间窗口是否合适都会执行。
类型: 0 到 24 之间的整数
默认值: 24
osd scrub thread timeout
描述: 洗刷线程最大死亡时值。
类型: 32-bit Integer
部署:
运维: