EC2中Docker容器无法识别扩容卷空间的问题求助
Docker存储卷扩容后容器无法识别新增空间的问题解决
问题原因
你已完成LVM thin pool的扩容(从docker system info的Data Space Total: 80.38GB可确认pool已扩容),但容器对应的dm虚拟块设备尺寸未更新,核心原因如下:
- 现有容器的块设备是创建时基于
dm.basesize(75GB)生成的独立thin设备,pool总容量的扩容不会自动同步更新已有容器的设备大小; lsblk显示的dm设备是容器专属的虚拟块设备,它的大小由容器创建时的配置决定,和pool总空间无直接关联。
解决步骤
一、为现有运行的容器扩容(适用不可丢失的容器)
- 临时停止容器(若业务允许短时间中断):
docker stop <容器名称或ID>
- 定位容器对应的dm设备路径:
执行docker inspect <容器名称或ID>,在输出中找到GraphDriver -> Data -> DeviceName字段,值类似/dev/mapper/docker-259:1-XXXXXX-XXXXXX。 - 扩容该dm设备:
lvextend -L+<需要新增的容量> <上述找到的dm设备路径> # 示例:新增10GB空间 lvextend -L+10G /dev/mapper/docker-259:1-XXXXXX-XXXXXX
- 重启容器:
docker start <容器名称或ID>
- 进入容器扩容内部文件系统:
- 若容器使用ext系列文件系统:
docker exec -it <容器名称或ID> resize2fs <容器内对应的设备路径> # 通常容器内设备路径和外部一致,可简化为: docker exec -it <容器名称或ID> resize2fs /dev/mapper/docker-259:1-XXXXXX-XXXXXX
- 若容器使用XFS文件系统:
docker exec -it <容器名称或ID> xfs_growfs / # 或指定实际挂载点,比如/data docker exec -it <容器名称或ID> xfs_growfs /data
二、让新容器自动使用更大的默认设备大小
你已在/etc/sysconfig/docker-storage配置--storage-opt dm.basesize=75GB,但该配置仅对新创建的容器生效,需重启Docker服务加载配置:
systemctl restart docker
注意:重启Docker会停止所有运行中的容器,操作前需确认业务可接受,建议先停止容器再执行重启。
补充说明
dm.basesize是新容器的默认块设备初始大小,不影响已创建的容器;- Docker thin pool的总容量是所有容器设备的可用空间总和,只要pool有剩余空间,可给单个容器扩容至超过
dm.basesize的大小; - 从你的
docker system info输出看,Data Space Available: 13.14GB,当前pool已有足够剩余空间支持容器扩容。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

