如何查看已安装分区下方正在占用的空间?
环境
- 红帽企业Linux(RHEL)所有版本
问题
- 我的分区是这样排列的(示例):
/ (/dev/sda1)
--/var (/dev/sda2)
--/usr (/dev/sda3)
--/backups (/dev/sda4)
- 我的根分区本身(/ dev / sda1)很小,几乎已满。
- 任何目录上都没有任何内容可以解释占用的空间。
- 如何查看消耗的空间在哪里,并通过删除文件释放它?
决议
以下内容只能用于查看正在安装的分区下方正在占用的空间。你会不会能够挂载根文件系统只读的其他位置上,如果已经安装读写/。因此,在执行以下步骤时,请格外小心,并确保将文件系统活动保持在最低水平。否则可能会导致文件系统损坏。
-
创建一个备用目录,在该目录中将挂载根文件系统:
# mkdir /image
-
在该目录上挂载根文件系统:
# mount /dev/sda1 /image
-
在已挂载的文件系统中执行du命令:
# cd /image # du -sh *
-
为确保不会发生数据损坏,请立即在/ image处卸载根文件系统:
# cd / # umount /image
请注意,根据以上示例,/ image / usr,/ image / var和/ image / backups中不应有任何文件。但是,如果存在(因为文件是在未挂载分区时写入的),则du命令的输出将显示根文件系统所有顶级目录的文件大小,而忽略挂载的分区(因为它们是安装在相应的/子项上,而不是/ image上)。基于该输出,您将能够查看是否有任何文件位于安装在其上的分区之下的顶级目录中。获得此信息后,您可以:
- 卸载驻留在有问题的目录上的分区(该分区不应该占用一个空间),然后手动删除文件。
- 如果无法卸载该分区,则必须将系统重新引导至救援模式(在上述指南的第5步中选择“跳过”),手动安装根文件系统,并按照上述步骤删除概述的文件。
根源
由于Linux文件系统结构的工作方式,如果您在目录上挂载了一个分区(例如/ backups),而在未挂载该分区时将文件写入该目录,则该文件占用的空间将占所使用的空间在其父目录(在本例中为/)中,而不是在该目录中将挂载的分区(/ backups)中。