我正在尝试将两个挂载点聚合到一个目录中,以便将两个挂载点中的文件合并到一个挂载点。我正在使用 overlayfs 进行一些测试,并且能够创建合并的挂载点,但是当我从这个合并目录中删除文件时,问题就出现了。
我理解 overlayfs 有上层文件系统和下层文件系统,如果你从下层文件系统删除某些内容,那么上层文件系统上就会出现“空白”,基本上就是隐藏了下层文件系统上的文件,使其无法“照耀”到合并层。文件仍然占用下层文件系统上的空间;只是没有显示为可用。
我的问题是:如何从上层和下层文件系统中删除文件并回收已删除文件使用的空间,而不仅仅是隐藏它?我可以手动从合并目录中删除文件,然后从下层目录中删除文件(这样做不好吗?)但df -ha
仍然显示合并目录占用空间:
none 6.8G 1.9G 4.6G 30% /var/www/merged
/dev/loop0 380M 2.3M 354M 1% /mnt/lower1
/dev/loop1 380M 2.3M 354M 1% /mnt/lower2
/dev/loop2 380M 2.3M 354M 1% /mnt/upper
none 380M 2.3M 354M 1% /mnt/merged
从 overlayfs 文件系统中删除文件并正确报告准确的磁盘使用情况的正确方法是什么?
答案1
Overlay 的作用如下:
您有 2 个目录,下层目录为只读目录,上层目录为读写目录。只能从可写层删除文件。
Overlay 的设计并非为了满足您的目的。此外,它还认为下层目录不会真正改变,因此您最终可能会遇到问题。
如果您确实需要合并多个驱动器,请使用 lvm。它也适用于文件。
答案2
你不能,除非使用原始路径 (/lower1/file) 删除文件。OverlayFS 不打算以这种方式合并挂载,以创建联合可写存储。