旧CentOS或迁移过来的XFS数据盘上,Docker可能警告后端文件系统没有d_type支持,或在升级后无法使用overlay2。xfs_info常会看到ftype=0。
这不是修改daemon.json就能原地修好的参数问题,而是存储后端能力不符合要求。

ftype和d_type有什么关系
Docker官方文档要求overlay2位于XFS时启用d_type=true,并用xfs_info确认ftype=1。目录项类型信息是OverlayFS正确处理分层文件系统的重要前提;XFS以ftype=0格式化时不满足要求。
Docker 23.0及以后会拒绝在缺少d_type支持的后端上启动overlay或overlay2。
先确认Docker真实数据目录
运行docker info查看Storage Driver、Backing Filesystem和Supports d_type,再用docker info --format或daemon配置确认Docker Root Dir。对实际挂载点执行xfs_info,不要只检查根分区。
若启用了containerd image store,显示字段和迁移路径可能不同。先确认当前存储实现与版本文档。
迁移前要备份哪些内容
记录容器、网络、Compose文件、环境变量来源、挂载点和daemon配置。可重建镜像优先推送到可信镜像仓库;本地独有镜像可用docker save导出。命名卷和绑定挂载中的业务数据需要按应用一致性要求单独备份。
直接复制正在运行的/var/lib/docker不能替代应用一致性备份。数据库容器应先停写或使用官方备份工具。
怎样更换到兼容文件系统
停止Docker后,把业务数据迁出旧盘,在空的新分区或已核验的ext4/XFS文件系统上准备Docker数据目录。若重新格式化XFS,Docker文档给出的参数是mkfs.xfs -n ftype=1。格式化会清空分区,必须先确认备份与设备名。
不要对含有唯一数据的分区直接执行mkfs。更换存储驱动也会让原有镜像和容器在新驱动下不可见。
迁移后的验收方法
启动Docker后重新检查docker info,确认overlay2、正确后端和Supports d_type: true,再按配置重建容器并校验卷数据。可在萤光云或LightNode的空白测试VPS演练。验收标准是Docker可冷启动、镜像与容器可重建、持久化数据完整,并且宿主机重启后挂载顺序正确。
FAQ
问:只把storage-driver改成vfs可以吗?答:vfs可用于特定兼容或测试场景,但性能和空间开销不同,不能作为无评估的生产修复。
问:能直接把ftype=0改成1吗?答:应按XFS工具和发行版文档准备新文件系统并迁移数据,不能把它当作普通挂载选项切换。
温馨提示
温馨提示:调整Docker存储前先做可恢复备份,并记录Docker与内核版本。把文件系统特性检查加入新VPS和数据盘的初始化清单。


