硬盘和文件系统推荐

准备硬盘

Ceph 注重数据安全,就是说, Ceph 客户端收到数据已写入存储器的通知时,数据确实已写入硬盘。使用较老的内核(版本小于 2.6.33 )时,如果日志在原始硬盘上,就要禁用写缓存;较新的内核没问题。

hdparm 禁用硬盘的写缓冲功能。

sudo hdparm -W 0 /dev/hda 0

在生产环境,我们建议操作系统和 Ceph OSD 守护进程数据分别放到不同的硬盘。如果必须把数据和系统放在同一硬盘里,最好给数据分配一个单独的分区。

文件系统

Ceph 的 OSD 依赖于底层文件系统的稳定性和性能。

Note

当前,我们推荐部署生产系统时使用 xfs 文件系统;推荐用 btrfs 做测试、开发和其他不太要紧的部署。我们相信,长远来看 btrfs 适合 Ceph 的功能需求和发展方向,但是 xfsext4 能提供当前部署所必需的稳定性。 btrfs 开发在迅速推进,所以它的用户应该有能力经常更新到最新内核发布,而且能跟踪严重缺陷的修正进度。

OSD 守护进程有赖于底层文件系统的扩展属性( XATTR )存储各种内部对象状态和元数据。底层文件系统必须能为 XATTR 提供足够容量, btrfs 没有限制随文件的 xattr 元数据总量; xfs 的限制相对大( 64KB ),多数部署都不会有瓶颈; ext4 的则太小而不可用。

使用 ext4 文件系统时,一定要把下面的配置放于 ceph.conf 配置文件的 [osd] 段下;用 btrfsxfs 时可以选填。

filestore xattr use omap = true

文件系统背景知识

XFSbtrfsext4比较 ext3 而言,在高伸缩性数据存储方面有几个优势。

XFSbtrfsext4 都是日志文件系统,这使得在崩溃、断电后恢复时更健壮,因为这些文件系统在写入数据前会先记录所有变更。

xfs 由 Silicon Graphics 开发,是一个成熟、稳定的文件系统。相反, btrfs 是相对年轻的文件系统,它致力于实现系统管理员梦寐以求的大规模数据存储基础,和其他 Linux 文件系统相比它有独一无二的功能和优势。

btrfs 是写时复制( copy-on-write , cow )文件系统,它支持文件创建时间戳和校验和(可校验元数据完整性)功能,所以它能探测到数据坏副本,并且用好副本修复。写时复制功能是说 btrfs 支持可写文件系统快照。 btrfs 也支持透明压缩和其他功能。

btrfs 也集成了多设备管理功能,据此可以在底层支持异质硬盘存储,和数据分配策略。未来开发社区还会提供 fsck 、拆分、数据加密功能,这些诱人的功能正是 Ceph 集群的理想选择。