Как скопировать /var/lib/docker со структурой каталогов overlayfs с данными *как есть* без увеличения места для хранения

У меня есть установка докера с несколькими изображениями и около 150 гигабайт данных в /var/lib/docker. Эта установка использует overlayfs в качестве драйвера хранилища. Для каждого слоя под /var/lib/docker/overlay есть несколько каталогов, содержащих фактические данные. Размер раздела 160G.

Мое требование состоит в том, чтобы скопировать каталог docker из /var/lib/docker на новый диск емкостью 1 ТБ, чтобы я указал Docker для запуска с этого нового раздела и продолжал использовать мои старые образы.

Теперь проблема в том, что когда я использую команду rsync или cp с -a, чтобы скопировать /var/lib/docker в новый раздел, вместо 150 ГБ фактических данных, общий объем скопированных данных достигает 600 ГБ (и подсчет ..) .

Docker также остановлен, но не уверен, как ОС просматривает данные 160G и копирует их в 600G+. Я надеюсь, что это не оверлейфы (объединенные каталоги). На df -aTh нет информации о наложении. Не помогла и выгрузка драйвера оверлейфс ядра с rmmod overlay

Как это возможно, что я мог просто скопировать эти данные как есть, без какого-либо расширения/слияния.


person VanagaS    schedule 23.09.2016    source источник


Ответы (1)


Оказалось, что докер использует hardlinks в этих каталогах под /var/lib/docker/overlay. Использование -H с rsync (копирование жестких ссылок как жестких ссылок) решило проблему.

rsync -avPHSX /var/lib/docker /new/partition/
person VanagaS    schedule 24.09.2016
comment
на заметку, при копировании на другой сервер не забудьте перезапустить докер на этом сервере - person apito; 11.02.2021