
# 默认数据盘空间分配说明
本章节将详细介绍节点数据盘空间分配的情况，以便您根据业务实际情况配置数据盘大小。
#### 设置默认数据盘空间分配
![](https://support.huaweicloud.com/api-cce/public_sys-resources/note_3.0-zh-cn.png)
- v1.23.18-r0、v1.25.13-r0、v1.27.10-r0、v1.28.8-r0、v1.29.4-r0以下版本的集群中，节点会添加一块默认数据盘供容器运行时和Kubelet组件使用，您可以根据需要自定义默认数据盘的空间分配**。**
- v1.23.18-r0、v1.25.13-r0、v1.27.10-r0、v1.28.8-r0、v1.29.4-r0及以上版本的集群中，如果"系统组件存储"选择"数据盘"，节点才会添加一块默认数据盘供容器运行时和Kubelet组件单独使用，您可以自定义默认数据盘的空间分配。
 
在创建节点时，您可在存储配置中，单击"展开高级配置"，自定义默认数据盘的空间分配。
图1设置数据盘空间分配   
![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000002034825870.png)
- [容器运行时空间分配]：
  - 指定磁盘空间：CCE将数据盘空间默认划分为两块，一块用于存放容器运行时 (Docker/Containerd) 工作目录、容器镜像的数据和镜像元数据；另一块用于Kubelet组件和EmptyDir临时存储等。容器运行时空间的剩余容量将会影响镜像下载和容器的启动及运行。
    - 容器运行时和容器镜像空间（默认占90%）：用于容器运行时工作目录、存储容器镜像数据以及镜像元数据。
    
    - Kubelet组件和EmptyDir临时存储（默认占10%）：用于存储Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。
    
    
    ![](https://support.huaweicloud.com/api-cce/public_sys-resources/note_3.0-zh-cn.png)
    当"容器运行时和容器镜像空间"和"Kubelet组件和EmptyDir临时存储空间"分配比例之和不满100%时，剩余空间将分配给用户数据使用，您可以将其挂载到指定路径下。挂载路径请填写业务目录路径，不可设置为空或根目录等操作系统关键路径。
    
  
  - 共享磁盘空间：v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后版本的集群中，CCE使用的数据盘支持采用[容器运行时和Kubelet共享磁盘空间]的方式，即不再划分容器运行时 (Docker/Containerd) 和Kubelet组件的空间。
   
- [Pod容器空间分配]：即容器的basesize设置，每个工作负载下的容器组 Pod 占用的磁盘空间设置上限（包含容器镜像占用的空间）。合理的配置可避免容器组无节制使用磁盘空间导致业务异常。建议此值不超过容器引擎空间的 80%。该参数与节点操作系统和容器存储Rootfs相关，部分场景下不支持设置。详情请参见[操作系统与容器存储Rootfs对应关系]。
- 写入模式：
  - 线性：线性逻辑卷是将一个或多个物理卷整合为一个逻辑卷，实际写入数据时会先往一个基本物理卷上写入，当存储空间占满时再往另一个基本物理卷写入。
  
  - 条带化：有两块以上数据盘时才可支持选择条带化模式。创建逻辑卷时指定条带化，当实际写入数据时会将连续数据分成大小相同的块，然后依次存储在多个物理卷上，实现数据的并发读写从而提高读写性能。条带化模式的存储池不支持扩容。
   
 
 #### 容器运行时空间分配
对于容器运行时和Kubelet共享磁盘空间的节 点，容器存储Rootfs为**OverlayFS类型** ，数据盘空间分配详情请参见[容器运行时和Kubelet共享磁盘空间说明]。
对于容器运行时和Kubelet不共享磁盘空间的节点，数据盘根据容器存储Rootfs不同具有两种划分方式（以100G大小为例）：**Device Mapper类型** 和**OverlayFS类型** 。不同操作系统对应的容器存储Rootfs请参见[操作系统与容器存储Rootfs对应关系]。
- **Device Mapper类型存储Rootfs**
  其中默认占90%的容器运行时和容器镜像空间又可分为以下两个部分：
  - 其中/var/lib/docker用于Docker工作目录，默认占比20%，其空间大小 = **数据盘空间 \* 90% \* 20%**
  
  - thinpool用于存储容器镜像数据、镜像元数据以及容器使用的磁盘空间，默认占比为80%，其空间大小 = **数据盘空间 \* 90% \* 80%**
    thinpool是动态挂载，在节点上使用**df -h** 命令无法查看到，使用**lsblk**命令可以查看到。
    
   
  图2Device Mapper类型容器运行时空间分配   
  ![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000001199021278.png) 

- **OverlayFS类型存储Rootfs**
  OverlayFS类型存储Rootfs没有单独划分thinpool，容器运行时和容器镜像空间（默认占90%）都在/var/lib/docker目录下。
  图3OverlayFS类型容器运行时空间分配   
  ![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000001244101121.png) 
 
 #### Pod容器空间分配
自定义Pod容器空间（basesize）设置与节点操作系统和容器存储Rootfs相关（容器存储Rootfs请参见[操作系统与容器存储Rootfs对应关系]）：
- Device Mapper模式下支持自定义Pod容器空间（basesize）配置，默认值为10GiB。
- OverlayFS模式默认不限制Pod容器空间大小。
配置Pod容器空间（basesize）时，需要同时考虑创建节点时的最大实例数配置。理想情况下，容器运行时空间需要大于容器使用的磁盘总空间，即：**容器运行时和容器镜像空间（默认占90%）** \> **容器数量 \* Pod容器空间（basesize）**。否则，可能会引起节点分配的容器运行时空间不足，从而导致容器启动失败。
图4创建节点时的最大实例数配置   
![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000001981030921.png)
对于支持配置basesize的节点，尽管可以限制单个容器的主目录大小（开启时默认为10GiB），但节点上的所有容器还是共用节点的thinpool磁盘空间，并不是完全隔离，当一些容器使用大量thinpool空间且总和达到节点thinpool空间上限时，也会影响其他容器正常运行。
另外，在容器的主目录中创删文件后，其占用的thinpool空间不会立即释放，因此即使basesize已经配置为10GiB，而容器中不断创删文件时，占用的thinpool空间会不断增加一直到10GiB为止，后续才会复用这10GiB空间。如果节点上的容器数量\*basesize \> 节点thinpool空间大小，理论上有概率出现节点thinpool空间耗尽的场景。
 #### 操作系统与容器存储Rootfs对应关系
表1CCE集群节点操作系统与容器运行时对应关系 
| 操作系统                     | 容器存储Rootfs                                                                                                                                                                                                                                                                                                 | 自定义Pod容器空间（basesize）                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| CentOS 7.x               | v1.19.16以下版本集群使用Device Mapper v1.19.16及以上版本集群使用OverlayFS 说明： 老版本集群升级时，使用Device Mapper的节点不会自动切换至OverlayFS，您需要手动重置节点。       | Rootfs为Device Mapper且容器运行时为Docker时支持自定义Pod容器空间，默认值为10G。 Rootfs为OverlayFS时不支持自定义Pod容器空间。                                                                                                                                                                                      |
| EulerOS 2.3              | Device Mapper                                                                                                                                                                                                                                                                                              | 仅容器运行时为Docker时支持自定义Pod容器空间，默认值为10G。                                                                                                                                                                                                                                                                                                    |
| EulerOS 2.5              | Device Mapper                                                                                                                                                                                                                                                                                              | 仅容器运行时为Docker时支持自定义Pod容器空间，默认值为10G。                                                                                                                                                                                                                                                                                                    |
| EulerOS 2.8              | v1.19.16-r2以下版本集群使用Device Mapper v1.19.16-r2及以上版本集群使用OverlayFS 说明： 老版本集群升级时，使用Device Mapper的节点不会自动切换至OverlayFS，您需要手动重置节点。 | Rootfs为Device Mapper且容器运行时为Docker时支持自定义Pod容器空间，默认值为10G。 Rootfs为OverlayFS且容器运行时为Docker时支持自定义Pod容器空间，默认值为不限制。                                                                                                                                                                  |
| EulerOS 2.9              | OverlayFS                                                                                                                                                                                                                                                                                                  | v1.19.16-r0、v1.21.3-r0、v1.23.3-r0及以上的集群版本中，Docker支持自定义Pod容器空间，默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时，containerd支持自定义Pod容器空间，默认值为不限制。 v1.19.16-r0、v1.21.3-r0、v1.23.3-r0以前的集群版本不支持自定义Pod容器空间。 |
| EulerOS 2.10             | OverlayFS                                                                                                                                                                                                                                                                                                  | 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时，仅容器运行时为Docker时支持自定义Pod容器空间，默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时，Docker和containerd均支持自定义Pod容器空间，默认值为不限制。                                                                                      |
| Ubuntu 18.04             | OverlayFS                                                                                                                                                                                                                                                                                                  | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                                                                                                         |
| Ubuntu 22.04             | OverlayFS                                                                                                                                                                                                                                                                                                  | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                                                                                                         |
| Huawei Cloud EulerOS 1.1 | OverlayFS                                                                                                                                                                                                                                                                                                  | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                                                                                                         |
| Huawei Cloud EulerOS 2.0 | OverlayFS                                                                                                                                                                                                                                                                                                  | 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时，仅容器运行时为Docker时支持自定义Pod容器空间，默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时，Docker和containerd均支持自定义Pod容器空间，默认值为不限制。                                                                                     |
   
表2CCE Turbo集群节点操作系统与容器运行时对应关系 
| 操作系统                     | 容器存储Rootfs                | 自定义Pod容器空间（basesize）                                                                                                                                                                                                                             |
|:---|:---|:---|
| CentOS 7.x               | OverlayFS                 | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                   |
| Ubuntu 18.04             | OverlayFS                 | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                   |
| Ubuntu 22.04             | OverlayFS                 | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                   |
| EulerOS 2.9              | OverlayFS                 | Rootfs为OverlayFS且仅容器运行时为Docker时支持自定义Pod容器空间，默认值为不限制。集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时，Docker和containerd均支持自定义Pod容器空间。                                                                                                        |
| EulerOS 2.10             | 弹性云服务器-物理机使用Device Mapper | Rootfs为Device Mapper且容器运行时为containerd时支持自定义Pod容器空间，默认值为10G。                                                                                                                                                                                      |
| Huawei Cloud EulerOS 1.1 | OverlayFS                 | 不支持自定义Pod容器空间。                                                                                                                                                                                                                                   |
| Huawei Cloud EulerOS 2.0 | OverlayFS                 | 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时，仅容器运行时为Docker时支持自定义Pod容器空间，默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时，Docker和containerd均支持自定义Pod容器空间，默认值为不限制。 |
   
#### 镜像回收策略说明
当容器运行时空间不足时，会触发镜像垃圾回收。
镜像垃圾回收策略只考虑两个因素：HighThresholdPercent 和 LowThresholdPercent。当kubelet磁盘使用率超过上限阈值（HighThresholdPercent，默认值为80%）将触发垃圾回收。 垃圾回收将删除最近最少使用的镜像，直到kubelet磁盘使用率满足下限阈值（LowThresholdPercent，默认值为70%）。
如果您需要修改镜像垃圾回收策略阈值，请参见[kubelet组件配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0652.html#cce_10_0652__section54143014011)（默认节点池不支持）。
#### 容器运行时空间大小配置建议
- 容器运行时空间需要大于容器使用的磁盘总空间，即：**容器运行时空间** \> **容器数量 \* Pod容器空间（basesize）**
- 容器业务的创删文件操作建议在容器挂载的本地存储（如EmptyDir、HostPath）或云存储的目录中进行，这样不会占用thinpool空间。其中EmptyDir使用的是kubelet空间，需要规划好kubelet空间的大小。
- 可将业务部署在使用OverlayFS存储模式的节点上（请参见[操作系统与容器存储Rootfs对应关系]），避免容器内创删文件后占用的磁盘空间不立即释放问题。
 
 #### 容器运行时和Kubelet共享磁盘空间说明
容器运行时和Kubelet共享磁盘空间即在节点上不再划分容器运行时 (Docker/Containerd) 和Kubelet组件的空间，二者共用磁盘空间。
![](https://support.huaweicloud.com/api-cce/public_sys-resources/notice_3.0-zh-cn.png)
- 容器运行时和Kubelet共享磁盘空间仅v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上的集群支持。
- 容器存储Rootfs为OverlayFS类型时支持共享磁盘空间，Device Mapper类型不支持。
- 若您在集群中安装了CCE节点故障检测插件，请将插件升级至1.18.10版本及以上，否则会产生误报警。
- 若您在集群中安装了云原生日志采集插件，请将插件升级至1.3.0版本及以上，否则会影响日志采集。
- 若您在集群中安装了ICAgent，请将ICAgent升级至5.12.140版本及以上，否则会影响日志采集。查看或升级ICAgent版本请参见[CCE接入](https://support.huaweicloud.com/usermanual-aom2/agent_01_0013.html)。
 
图5共享磁盘空间配置   
![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000001872555577.png)
对于共享磁盘空间的节点，容器存储Rootfs为**OverlayFS类型**。节点创建完成后，数据盘空间（以100G大小为例）不再划分容器运行时和容器镜像空间和Kubelet组件空间，均在/mnt/paas目录下，并通过两个文件系统区分：
- dockersys：/mnt/paas/runtime
- kubernetes：/mnt/paas/kubernetes/kubelet
图6共享数据盘空间分配   
![](https://support.huaweicloud.com/api-cce/zh-cn_image_0000001631086710.png)
#### 常见问题
[如何扩容容器的存储空间？](https://support.huaweicloud.com/cce_faq/cce_faq_00224.html)
[CCE集群中的节点磁盘扩容](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_00198.html)
