日志配置参考

Ceph 的 OSD 使用日志的原因有二:速度和一致性。

  • 速度: 日志使得 OSD 可以快速地提交小块数据的写入, Ceph 把小片、随机 IO 依次写入日志,这样,后端文件系统就有可能归并写入动作,并最终提升并发承载力。因此,使用 OSD 日志能展现出优秀的突发写性能,实际上数据还没有写入 OSD ,因为文件系统把它们捕捉到了日志。
  • 一致性: Ceph 的 OSD 守护进程需要一个能保证原子操作的文件系统接口。 OSD 把一个操作的描述写入日志,然后把操作应用到文件系统,这需要原子更新一个对象(例如归置组元数据)。每隔一段 filestoremaxsyncinterval 和 filestore min sync interval 之间的时间, OSD 停止写入、把日志同步到文件系统,这样允许 OSD 修整日志里的操作并重用空间。若失败, OSD 从上个同步点开始重放日志。

OSD 守护进程支持下面的日志选项:

journaldio
描述:对日志启用径直 IO ,需要 journalblockalign 设置为 true
类型:Boolean
是否必需:aio 时自动启用。
默认值:true
journalaio

Changed in version 0.61: Cuttlefish

描述:异步写入日志时用 libaio 库,需要 journaldio 设为 true
类型:Boolean
是否必需:No.
默认值:0.61 版之后为 true , 0.60 及之前为 false
journalblockalign
描述:块对齐写, dioaio 需要。
类型:Boolean
是否必需:dioaio 时自动启用。
默认值:true
journalmaxwritebytes
描述:一次写入日志的最大尺寸。
类型:Integer
是否必需:No
默认值:10<<20
journalmaxwriteentries
描述:一次写入日志的最大数量。
类型:Integer
是否必需:No
默认值:100
journalqueuemaxops
描述:队列里一次允许的最大操作数量。
类型:Integer
是否必需:No
默认值:500
journalqueuemaxbytes
描述:队列里一次允许的最大字节数。
类型:Integer
是否必需:No
默认值:10<<20
journalalignminsize
描述:对齐大于指定最小值的数据有效载荷。
类型:Integer
是否必需:No
默认值:64<<10
journalzerooncreate
描述:在创建文件系统( mkfs )期间用 0 填充整个日志。
类型:Boolean
是否必需:No
默认值:false