如何在不增加存储 space 的情况下复制 /var/lib/docker 与数据 *原样* 的 overlayfs 目录结构

How to copy /var/lib/docker with overlayfs directory structure with data *as-is* without increasing the storage space

我有一个 docker 安装,在 /var/lib/docker 中有几个图像和大约 150G 的数据。此设置使用 overlayfs 作为其存储驱动程序。 /var/lib/docker/overlay 下的每一层都有几个目录保存实际数据。分区大小为160G.

我的要求是将/var/lib/docker的docker目录复制到一个1TB的新盘,这样我就指向docker从这个新分区开始继续使用我的旧照片。

现在的问题是,当我将 rsynccp 命令与 -a 一起使用时,将 /var/lib/docker 复制到新分区,而不是总共150G 实际数据,总复制数据将达到 600G(并且还在增加中……)。

Docker 也停止了,但不确定 OS 如何查看 160G 数据并复制到 600G+。我希望它不是 overlayfs(合并目录)。 df -aTh 上没有覆盖信息。它也没有帮助使用 rmmod overlay

卸载内核 overlayfs 驱动程序

我怎么可能只按原样复制这些数据,而没有任何 expansion/merge 发生。

原来 docker 在 /var/lib/docker/overlay 下的那些目录中使用了 hardlinks。使用 -H 和 rsync(将硬链接复制为硬链接)解决了这个问题。

rsync -avPHSX /var/lib/docker /new/partition/