71,895
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
当CN和DN的磁盘使用率达到阈值时,集群管理就会自动将相应的CN或DN分片设为只读(业务只能读不能写),执行cm_ctl query -Cv命令查询集群状态如下:
设置为只读后禁止业务继续写入,避免磁盘被撑爆,同时也避免后续无法扩容(扩容需要磁盘有一定的剩余空间)。
datastorage_threshold_value_check磁盘使用率阈值,超过该阈值,就会被设置为只读,默认85%
enable_transaction_read_only 检测磁盘只读的开关,如果关闭,不再检测磁盘,即使磁盘使用率超过阈值也不会设置只读,磁盘清空后也不会消除只读,默认值为on。
datastorage_threshold_check_interval 检测磁盘使用率的时间间隔,多久检测一次磁盘使用率,默认为10秒。
3个参数都在CMserver数据目录下的cm_server.conf配置文件中。
当CN或DN被设置为只读时,根据上图中查到的CN或DN目录,检查所在磁盘使用率是否超过阈值。
1、检查对应磁盘被什么文件占用,确认文件用途,是否可以清理或转移到其他磁盘。
2、可以调高磁盘使用率阈值。
可以通过如下命令修改CMserver的guc参数,支持reload修改参数,无需重启CMserver进程。
确认集群是否有扩容计划,若有后续扩容计划,datastorage_threshold_value_check值建议不要超过50,扩容要求,数据磁盘使用率不超过50%。
gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 85"
gs_guc reload -Z cmserver -N all -I all -c "enable_transaction_read_only = on"
当磁盘使用率超阈值时,集群管理会自动把CN、DN设置为只读,对应的guc参数default_transaction_read_only被设置为on。
当磁盘使用率降到阈值以下或者调高阈值后,集群管理会自动把CN、DN解除只读,对应的guc参数default_transaction_read_only被设置为off。
由于集群管理默认检测磁盘的周期是10s秒,所以磁盘超阈值或者降到阈值以下,或者通过gs_guc调整阈值,CN、DN的只读状态可能最长会延迟600秒才变化,请耐心等待。
如果想马上去掉只读限制,除了清理磁盘或调整阈值外,手动设置对应的CN、DN的guc参数。
DN、CN设置只读和取消只读参数:
gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置DN只读
gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消DN只读
gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = on' 设置CN只读
gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = off' 取消CN只读