Docker 创建巨大的 devicemapper 文件

Cor*_*rni 2 debian docker

今天,我在备份过程中注意到 docker 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
Run Code Online (Sandbox Code Playgroud)

我的问题:我的服务器有一个 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% /
Run Code Online (Sandbox Code Playgroud)

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

我有一个在 docker 中运行的应用程序:PlexMediaServer 与此脚本:https ://hub.docker.com/r/linuxserver/plex/

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

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

jor*_*anm 5

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

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

它实际上并没有消耗全部 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
Run Code Online (Sandbox Code Playgroud)

搬运工文档包含备份卷的最佳做法的信息。