Docker 创建巨大的 devicemapper 文件

Docker 创建巨大的 devicemapper 文件

今天,我在备份过程中注意到docker17.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

我的问题:我的服务器有一个 120 GB 的 SSD,并且 / 分区是

root@server:/# df -h /
Dateisystem                 Größe Benutzt Verf. Verw% Eingehängt auf
/dev/mapper/server--vg-root   71G     32G   37G   47% /

那么这怎么可能呢?为什么?这个文件占用了我大量的备份,所以我删除了它。没有它,Docker 守护进程就无法启动。

我在docker中运行一个应用程序:PlexMediaServer,其脚本如下:https://hub.docker.com/r/linuxserver/plex/

是的,有一个卷包含我的所有音乐和视频文件。但那是在 RAID 上,而不是在系统驱动器上。

从备份恢复文件需要花费几个小时,而且我很确定它会完全填满我的 SSD 然后停止。

答案1

该文件称为稀疏文件。以下是维基百科定义的摘录:

在计算机科学中,稀疏文件是一种计算机文件,当文件本身大部分为空时,它会尝试更有效地利用文件系统空间。这是通过将代表空块的简要信息(元数据)写入磁盘而不是构成块的实际“空”空间来实现的,从而使用较少的磁盘空间。仅当块包含“真实”(非空)数据时,才会将完整块大小作为实际大小写入磁盘。

它实际上并没有占用全部 100GB 的磁盘空间。显示的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

docker 文档包含有关备份卷的最佳实践的信息。

答案2

我已经解决了这个问题:

mv /var/lib/docker /raid/docker
rm -r /var/lib/docker
ln -s /raid/docker /var/lib/docker

相关内容