为什么不建议ob的clog和data同盘部署

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】
官方不建议在生产环境clog/data同盘部署,这个是有什么原理机制

影响因素比较多,主要是对生产上的性能方面影响比较大。
1)对容量规划的影响
因为同盘默认是按百分比方式分配预占用空间的。数据文件占用其所在磁盘总空间的百分比为 60%,Redo 日志占用其所在磁盘总空间的百分比为 30%,共会占用90%的空间,如果同盘目录下有其他程序也在使用,或core dump(开启默认会在数据盘下)会出现磁盘占满风险,影响正常使用。
2)对磁盘性能影响
业务比较多的时候,clog同步数据会占用磁盘io,数据读写也会抢占io资源,可能出现clog同步夯住或者同步延迟等问题,同时查询性能也会受磁盘瓶颈影响。
3)维护影响
有时候可能出现clog无法回收,需要应急增大clog空间,如果同盘可能没有剩余空间可申请,增大维护成本和难度。

3 个赞

补充一下秃蛙的回答

  1. 底层存储引擎, 因为下面3个原因, 采用了提前预占用磁盘空间的设计.
    1.1 为了更好的获取io 性能,
    1.1.1 底层存储引擎提前将磁盘空间申请下来, 并采用mmap 技术, 将部分空间映射起来, 能获得更快的磁盘性能
    1.1.2 另外有一些文件io 操作, 可以提前做, 减少io 指令, 提升性能.
    1.1.3 多块盘, 能提供更多的并发能力.
    1.2 增强系统的稳定性, 提前将磁盘占住, 避免被一些其他的程序将磁盘空间消耗掉, 导致存储引擎申请磁盘空间出错, 导致一系列的问题.
    1.3 部分场合下可以减少硬件成本. 更快的盘(更贵的盘)可以用于clog, 更大容量或稍慢一点(更便宜的盘) 用于data 盘.

曾经发生过的故障:

  1. 用户将clog 盘和data 盘共用, 刚开始的时候, 磁盘空间能支撑业务, 随着业务量增大, data 的文件大小设置小了, 用户赶紧把data 文件大小 datafile_size 调大, 一不小心, 忘记了data 和clog 共用一个盘, 导致data 侵占了clog 的空间, 最后导致clog 写日志失败, observer 处在只读状态.
  2. 分盘部署, 能减少运维的故障风险.
5 个赞

小本本记起来