我有一个带有只读根文件系统和安装在其上的读写overlayfs的linux:
# mount
overlayfs on / type overlayfs (rw,relatime,lowerdir=/root_ro/,upperdir=/root_rw/)
...
Overlayfs 几乎已满
# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlayfs 4003548 3995012 8536 99% /
...
如何识别消耗overlayfs读/写部分的文件?不du
区分 ro 和 rw 介质上占用的空间。我-fstype type
在 中找到了该选项find
,但我的 linux 有 busybox,并且发现那里不支持该选项。
编辑:添加输出cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /dev devtmpfs rw,relatime,size=1026976,nr_inodes=256744,mode=755 0 0
/dev/sda1 /root_rw ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
ubi0:rootfs /root_ro ubifs ro,noatime,nodiratime 0 0
overlayfs / overlayfs rw,relatime,lowerdir=/root_ro/,upperdir=/root_rw/ 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620 0 0
答案1
在覆盖文件系统中并没有真正的“什么占据空间”的概念。工会的每个分支都有自己的空间占用。du
在两个分支上运行。如果它变得更满,那么读写分支就是罪魁祸首。
由于覆盖挂载遮蔽了其分支(/root_ro
并且/root_rw
被 上的挂载隐藏/
),因此您需要获得对分支的访问权限。您可以通过再次挂载块设备来做到这一点(Linux 支持这一点,至少对于大多数块设备类型而言):
mkdir /media/root_ro /media/root_rw
mount /dev/sda1 /mnt/root_rw
mount ubi0:rootfs /mnt/root_ro
du /mnt/root_ro /mnt/root_rw
答案2
卸载覆盖文件系统,然后将其安装到其他位置并使用du
.如果我理解正确的话,你应该可以看到其中的内容。