diff --git a/docs/user_manual/operation_and_maintenance/emergency_handbook/01_emergency_overview.md b/docs/user_manual/operation_and_maintenance/emergency_handbook/01_emergency_overview.md
index c081b37d6..fc8e5a694 100644
--- a/docs/user_manual/operation_and_maintenance/emergency_handbook/01_emergency_overview.md
+++ b/docs/user_manual/operation_and_maintenance/emergency_handbook/01_emergency_overview.md
@@ -11,7 +11,9 @@ weight: 1
同时考虑到用户意见收集中的 @oceanvoice 、@张雨齐 等老师的建议,准备《进阶教程》的这个章节中,为大家提供一份儿相对比较成体系,也更加全面的《故障应急手册》。
-在《故障应急手册》中,会把用户在使用 OceanBase 的过程中可能遇到的问题,以及对应的解决方案进行汇总,目录大致会是:
+在《故障应急手册》中,会把用户在使用 OceanBase 的过程中可能遇到的问题,以及对应的解决方案进行汇总。**问题肯定并不常见,但会是相对严重,且需要 DBA 同学进行初步分析和止血操作的。** 目录大致会是:
+
+* 故障应急手册概述
* 系统响应时间不符合预期
@@ -21,47 +23,48 @@ weight: 1
* 硬件 & 基础环境故障应急处理
-* 负载变化导致的问题
+ * 网络抖动
-* 集群内部其他问题
+ * 磁盘故障
- * 租户转储阻塞
+* 负载变化导致的问题
- * 集群合并阻塞
+ * 日志盘 / 数据盘写满
- * SYS 租户/ RS 服务问题
+* ……
- * 磁盘泄漏
+## What's more ?
- * 内存泄漏
+这一小节只有手册的内容介绍,没啥干货,有点儿过意不去。那就在最后附送一个 **针对 OceanBase 严重故障(尤其是业务停服场景),进行快速止血恢复的通用方法** ,简单来说就是:切主 -> 隔离 -> 重启 -> 切备集群。
- * 长事务
+- 如果集群中只有一个租户有问题,那就切这个租户的主(通过 set tenant primary_zone 修改租户的 primary_zone)。
- * 悬挂事务
+- 如果集群中只有一个节点有问题,那就 stop or isolate 这个节点。
- * coredump
+- 如果整个集群都有问题,那就轮流重启集群中的各个节点。
- * 无主
+- 如果轮流重启之后还有问题,那就进行 failover 操作,切换备集群。
-* 未完待续……
+- 分析问题永远放在止血和恢复之后。
-手册的更新频率大概是一周一次,因为这个章节的内容较多,所以预计会分成三到四次完成手册内容的更新。希望大家能够持续关注。
+## 未完待续
+集群内部其他问题,一般都需要联系社区论坛的值班人员进行协助,可能并不需要运维同学深入了解。所以优先级放的低些,预计会在进阶教程完结之后,继续在 OceanBase 的社区论坛中的 “官方精选” 板块内进行更新。
-## What's more ?
+ * SYS 租户/ RS 服务问题
-这一小节只有手册的内容介绍,没啥干货,有点儿过意不去。那就在最后附送一个 **针对 OceanBase 严重故障(尤其是业务停服场景),进行快速止血恢复的通用方法** ,简单来说就是:切主 -> 隔离 -> 重启 -> 切备集群。
+ * 内存泄漏
-- 如果集群中只有一个租户有问题,那就切这个租户的主(通过 set tenant primary_zone 修改租户的 primary_zone)。
+ * 磁盘泄漏
-- 如果集群中只有一个节点有问题,那就 stop or isolate 这个节点。
+ * 长事务
-- 如果整个集群都有问题,那就轮流重启集群中的各个节点。
+ * 悬挂事务
-- 如果轮流重启之后还有问题,那就进行 failover 操作,切换备集群。
+ * coredump
-- 分析问题永远放在止血和恢复之后。
+ * ……
## 参考资料
diff --git a/docs/user_manual/operation_and_maintenance/emergency_handbook/07_disk_capacity_problem.md b/docs/user_manual/operation_and_maintenance/emergency_handbook/07_disk_capacity_problem.md
new file mode 100644
index 000000000..bb1c391af
--- /dev/null
+++ b/docs/user_manual/operation_and_maintenance/emergency_handbook/07_disk_capacity_problem.md
@@ -0,0 +1,244 @@
+---
+title: 日志盘 / 数据盘写满
+weight: 6
+---
+
+## 业务及数据库表现
+
+
+### 数据盘满
+
+收到 OCP 的数据盘告警,例如 [ob_host_data_path_disk_percent](https://www.oceanbase.com/docs/common-ocp-1000000001740702) 等。
+
+业务报错,OBServer 可能无法转储、无法合并、内存无法释放,进而导致集群无法写入。
+
+### 日志盘满
+
+收到 OCP 的日志盘告警,例如 [ob_host_log_disk_percent_over_threshold](https://www.oceanbase.com/docs/common-ocp-1000000001740708) 等。
+
+业务报错,OBServer 节点无法正常工作,影响选举。
+
+> 上面两个官网链接的处理方法,前提是 “其它程序在 OceanBase 的 log 盘或者 data 盘产生了大量数据”。千万不要手动删除 OceanBase 的 log 文件和 data 文件,否则可能导致系统无法恢复。
+
+## 排查方向
+
+### 数据盘满
+
+double check 一下 OCP 的告警是否属于误报:通过 sys 租户连 oceanbase 库,查看指定集群按节点统计数据盘的使用率情况,包含总分配大小、已使用大小、剩余可用大小等。
+
+```
+SELECT b.zone, a.svr_ip, a.svr_port,
+ ROUND(a.total_size/1024/1024/1024,3) total_size_GB,
+ ROUND((a.total_size-a.free_size)/1024/1024/1024,3) used_size_GB,
+ ROUND(a.free_size/1024/1024/1024,3) free_size_GB,
+ ROUND((a.total_size-a.free_size)/total_size,2)*100 disk_used_percentage
+FROM __all_virtual_disk_stat a
+INNER JOIN __all_server b
+ ON a.svr_ip=b.svr_ip AND a.svr_port=b.svr_port
+ORDER BY zone
+
+*************************** 1. row ***************************
+ zone: zone1
+ svr_ip: 1.2.3.4
+ svr_port: 22602
+ total_size_GB: 8.000
+ used_size_GB: 0.307
+ free_size_GB: 7.693
+disk_used_percentage: 4.00
+```
+
+如果 disk_used_percentage 的值已经超过 OCP 告警的默认阈值(97%),可以确认告警无误。
+
+
+### 日志盘满
+
+> 因为过期日志会被回收,所以日志盘满的情况相对比较少见。
+
+根据 OCP 告警中的集群和主机信息,在对应节点上进行 double check。
+
+登录 sys 租户,连接 oceanbase 库,执行以下命令,查看是否存在某个租户的日志盘 usage 百分比出现异常。
+
+```
+select a.svr_ip,a.svr_port,a.tenant_id,b.tenant_name,
+ CAST(a.data_disk_in_use/1024/1024/1024 as DECIMAL(15,2)) data_disk_use_G,
+ CAST(a.log_disk_size/1024/1024/1024 as DECIMAL(15,2)) log_disk_size,
+ CAST(a.log_disk_in_use/1024/1024/1024 as DECIMAL(15,2)) log_disk_use_G,
+ log_disk_in_use/log_disk_size 'usage%'
+from __all_virtual_unit a,dba_ob_tenants b
+where a.tenant_id=b.tenant_id\G
+
+*************************** 1. row ***************************
+ svr_ip: 1.2.3.4
+ svr_port: 22602
+ tenant_id: 1
+ tenant_name: sys
+data_disk_use_G: 0.10
+ log_disk_size: 2.00
+ log_disk_use_G: 1.54
+ usage%: 0.7693
+*************************** 2. row ***************************
+ svr_ip: 1.2.3.4
+ svr_port: 22602
+ tenant_id: 1001
+ tenant_name: META$1002
+data_disk_use_G: 0.07
+ log_disk_size: 0.60
+ log_disk_use_G: 0.43
+ usage%: 0.7174
+*************************** 3. row ***************************
+ svr_ip: 1.2.3.4
+ svr_port: 22602
+ tenant_id: 1002
+ tenant_name: mysql
+data_disk_use_G: 0.05
+ log_disk_size: 5.40
+ log_disk_use_G: 3.13
+ usage%: 0.5789
+```
+
+
+## 应急流程
+
+### 数据盘满
+
+#### 首先检查存放数据盘的操作系统磁盘,是否还有空间可以分配。
+
+如果有空间可以分配,考虑修改集群级别的配置项 [datafile_size](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576331) 或者 [datafile_disk_percentage](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576341),增加数据库的数据盘可用空间大小。
+
+通过如下命令确认 datafile_size 和 datafile_disk_percentage 的 value:
+
+```
+show parameters like 'datafile_size'\G
+*************************** 1. row ***************************
+ zone: zone1
+ svr_type: observer
+ svr_ip: 1.2.3.4
+ svr_port: 22602
+ name: datafile_size
+ data_type: CAPACITY
+ value: 2G
+ info: size of the data file. Range: [0, +∞)
+ section: SSTABLE
+ scope: CLUSTER
+ source: DEFAULT
+ edit_level: DYNAMIC_EFFECTIVE
+default_value: 0M
+ isdefault: 0
+1 row in set (0.006 sec)
+```
+
+datafile_size 的默认值为 0M。当为默认值时,磁盘可用空间大小受 datafile_disk_percentage 配置项的影响。
+
+```
+show parameters like 'datafile_disk_percentage'\G
+*************************** 1. row ***************************
+ zone: zone1
+ svr_type: observer
+ svr_ip: 11.158.31.20
+ svr_port: 22602
+ name: datafile_disk_percentage
+ data_type: INT
+ value: 0
+ info: the percentage of disk space used by the data files. Range: [0,99] in integer
+ section: SSTABLE
+ scope: CLUSTER
+ source: DEFAULT
+ edit_level: DYNAMIC_EFFECTIVE
+default_value: 0
+ isdefault: 1
+1 row in set (0.006 sec)
+```
+datafile_disk_percentage 配置项的默认值也为 0。当为默认值时,系统会根据日志和数据是否共用同一磁盘来自动计算数据文件( SN 模式)或本地缓存空间(SS 模式)占用其所在磁盘总空间的百分比:
+- 共用时,数据文件或本地缓存空间占用其所在磁盘总空间的百分比为 60%。
+- 独占时,数据文件或本地缓存空间占用其所在磁盘总空间的百分比为 90%。
+该配置项与 datafile_size 同时配置时,以 datafile_size 设置的值为准。
+
+通过以下命令调大配置项:
+
+```
+-- 设置数据文件的大小为 80G。
+obclient> ALTER SYSTEM SET datafile_size = '80G';
+
+-- 或者,设置数据文件占用其所在磁盘总空间的 95%。
+obclient> ALTER SYSTEM SET datafile_disk_percentage = 90;
+```
+
+**OceanBase 数据库支持根据磁盘数据文件的实际使用情况来进行自动扩容,强烈推荐大家在部署集群时,通过 datafile_next 和 datafile_maxsize 这两个配置项来进行配置。详见官网文档中的[《配置磁盘数据文件的动态扩容》](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001574103),亲测好用。**
+
+**大家在部署生产环境的集群时,为避免出现 IO 性能问题,推荐将数据目录和日志目录分别挂载到不同的磁盘上,并建议日志盘空间为主机内存空间的三倍以及以上。**
+
+
+#### 如果磁盘没有可用空间分配,则考虑在 zone 内添加新的节点,并通过迁移 Unit 的方式均衡节点间的数据分布。
+
+在 zone 里添加节点,以及[迁移租户对应 unit](https://www.oceanbase.com/docs/common-ocp-1000000001739880) 的操作,都可以通过 OCP 白屏完成。
+
+如果一个 OBServer 节点集中了多个租户的 unit,优先考虑通过手动迁移 Unit 的方式均衡数据。、
+
+如果单节点内只有一个用户租户,则可以考虑通过清理回收站数据等方式,删除冗余数据。
+
+
+### 日志盘满
+
+检查集群的 log_disk 磁盘空间是否已经分配完,如果 log_disk_free 为 0,则表示已分配完。
+```
+select zone,concat(SVR_IP,':',SVR_PORT) observer,
+ cpu_capacity_max cpu_total,cpu_assigned_max cpu_assigned,
+ cpu_capacity-cpu_assigned_max as cpu_free,
+ round(memory_limit/1024/1024/1024,2) as memory_total,
+ round((memory_limit-mem_capacity)/1024/1024/1024,2) as system_memory,
+ round(mem_assigned/1024/1024/1024,2) as mem_assigned,
+ round((mem_capacity-mem_assigned)/1024/1024/1024,2) as memory_free,
+ round(log_disk_capacity/1024/1024/1024,2) as log_disk_capacity,
+ round(log_disk_assigned/1024/1024/1024,2) as log_disk_assigned,
+ round((log_disk_capacity-log_disk_assigned)/1024/1024/1024,2) as log_disk_free,
+ round((data_disk_capacity/1024/1024/1024),2) as data_disk,
+ round((data_disk_in_use/1024/1024/1024),2) as data_disk_used,
+ round((data_disk_capacity-data_disk_in_use)/1024/1024/1024,2) as data_disk_free
+from gv$ob_servers\G
+*************************** 1. row ***************************
+ zone: zone1
+ observer: 11.158.31.20:22602
+ cpu_total: 8
+ cpu_assigned: 4
+ cpu_free: 4
+ memory_total: 8.00
+ system_memory: 1.00
+ mem_assigned: 3.00
+ memory_free: 4.00
+log_disk_capacity: 21.00
+log_disk_assigned: 8.00
+ log_disk_free: 13.00
+ data_disk: 8.00
+ data_disk_used: 0.27
+ data_disk_free: 7.73
+1 row in set (0.006 sec)
+```
+
+如果 log_disk_free 不为 0,表示日志盘还有剩余空间,可以直接扩容该租户对应 unit 的 log_disk 大小。
+```
+ALTER RESOURCE UNIT unit_name LOG_DISK_SIZE = '10G';
+```
+
+如果 log_disk_free 为 0,说明为集群分配的日志盘已经用完。通过 ``df -h`` 等命令,检查节点上日志盘挂载的磁盘,是否已经全部分配给日志盘。
+
+如果磁盘仍有剩余空间,可以修改集群级配置项 [log_disk_size](https://www.oceanbase.com/docs/community-observer-cn-10000000001879584) 或者 [log_disk_percentage](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576237),增加集群的可用日志盘大小,然后再通过上面 ``ALTER RESOURCE UNIT`` 的命令,增加对应租户的日志盘大小。
+
+```
+ALTER system SET log_disk_size = '40G';
+
+ALTER system SET log_disk_percentage = 90;
+```
+
+如果操作系统上的磁盘也已经被分配完,则主动停止问题租户的写入,防止 clog 盘临时腾挪的空间再次快速被业务写入打满。停写的同时,临时调大 clog 盘停写的阈值比例 [log_disk_utilization_limit_threshold](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576167),由 95% 调整到 98%。
+```
+ALTER system SET log_disk_utilization_limit_threshold = 98;
+```
+
+后续可以观察一段时间,clog 追上之后,空间会被数据库系统自动回收,集群可以自动恢复。
+
+
+## 参考
+
+- 社区博客[《OceanBase 应急三板斧》](https://open.oceanbase.com/blog/13250502949)
+
+- 官网文档中的[应急处理相关内容](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573632)
\ No newline at end of file