如何在不增加存储 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从这个新分区开始继续使用我的旧照片。
现在的问题是,当我将 rsync
或 cp
命令与 -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/
我有一个 docker 安装,在 /var/lib/docker
中有几个图像和大约 150G 的数据。此设置使用 overlayfs
作为其存储驱动程序。 /var/lib/docker/overlay
下的每一层都有几个目录保存实际数据。分区大小为160G.
我的要求是将/var/lib/docker
的docker目录复制到一个1TB的新盘,这样我就指向docker从这个新分区开始继续使用我的旧照片。
现在的问题是,当我将 rsync
或 cp
命令与 -a
一起使用时,将 /var/lib/docker
复制到新分区,而不是总共150G 实际数据,总复制数据将达到 600G(并且还在增加中……)。
Docker 也停止了,但不确定 OS 如何查看 160G 数据并复制到 600G+。我希望它不是 overlayfs(合并目录)。 df -aTh
上没有覆盖信息。它也没有帮助使用 rmmod overlay
我怎么可能只按原样复制这些数据,而没有任何 expansion/merge 发生。
原来 docker 在 /var/lib/docker/overlay
下的那些目录中使用了 hardlinks
。使用 -H
和 rsync(将硬链接复制为硬链接)解决了这个问题。
rsync -avPHSX /var/lib/docker /new/partition/