сегодня я заметил во время резервного копирования, что докер 17.05 создает два очень больших файла в /var/lib/docker/devicemapper/devicemapper/
на Debian Stretch.
-rw------- 1 root root 100G Dez 8 22:50 data
-rw------- 2 root root 2,0G Dez 7 01:22 metadata
Моя проблема: у моего сервера есть SSD на 120 ГБ, а раздел /
root@server:/# df -h /
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/mapper/server--vg-root 71G 32G 37G 47% /
Так как это возможно? И почему? Эти файлы занимают огромное количество моей резервной копии, и я удалил ее. Без него демон Docker не запустится.
У меня есть одно приложение, работающее в докере: PlexMediaServer с этим скриптом: https://hub.docker.com/r/linuxserver/plex/
И да, есть том, содержащий все мои музыкальные и видео файлы. Но это на RAID, а не на системном диске.
Восстановление файла из резервной копии занимает несколько часов, и я уверен, что он полностью заполнит мой SSD, а затем остановится.
Этот файл известен как разреженный файл. Вот выдержка из определения в Википедии:
В информатике разреженный файл - это тип компьютерного файла, который пытается более эффективно использовать пространство файловой системы, когда сам файл в основном пуст. Это достигается записью на диск краткой информации (метаданных), представляющей пустые блоки, вместо фактического «пустого» пространства, составляющего блок, с использованием меньшего дискового пространства. Полный размер блока записывается на диск как фактический размер только тогда, когда блок содержит «реальные» (непустые) данные.
На самом деле он не занимает все 100 ГБ дискового пространства. Что отображается ls
это «видимый размер». Чтобы просмотреть объем дискового пространства, который он фактически занимает, вы можете использовать du
команда.
# ls -lh /var/lib/docker/devicemapper/devicemapper/data
-rw------- 1 root root 100G Dec 13 15:00 /var/lib/docker/devicemapper/devicemapper/data
# du -sh /var/lib/docker/devicemapper/devicemapper/data
43G /var/lib/docker/devicemapper/devicemapper/data
В документация докеров содержит информацию о передовых методах резервного копирования томов.
Я решил проблему:
mv /var/lib/docker /raid/docker
rm -r /var/lib/docker
ln -s /raid/docker /var/lib/docker