日志配置参考
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
描述: | 块对齐写, dio 和 aio 需要。 |
---|
类型: | Boolean |
---|
是否必需: | 用 dio 和 aio 时自动启用。 |
---|
默认值: | 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 |
---|