我最近收到2 Tb外部ext4驱动器的“设备已满”警告。我删除了一堆文件,大约有90-100 Gb的旧系统备份,并且由于我不想清空所有垃圾,因此从驱动器中删除了垃圾文件夹。但是,没有释放磁盘空间,删除90-100Gb后,我仍然只显示大约5 Gb的可用空间。
我首先尝试重新启动,以确保它不是由于某种原因而保持打开状态的文件。我尝试运行sudo e2fsck -fp /dev/sde1
,sudo e2fsck -f -D -C0 -E discard /dev/sde1
但是这些都没有占用任何磁盘空间。我检查了inode的使用情况,并使用了总数的0.3%。当我运行时sudo xdiskusage
,它说inode消耗了93 Gb。人说这是文件系统使用的开销。93 GB似乎有很多开销,并且删除大约相同数量的文件不会释放磁盘空间这一事实,我猜想我删除trah文件夹时会犯规。有什么方法可以收回删除文件所带来的空间?
这里似乎有两种可能性:
df
根目录保留空间的(令人困惑的)行为感到困惑就个人而言,我怀疑您正在看到#1。下面的详细信息以及一些总结性说明。
df
行为如果您以非root用户身份完全填充了文件系统,则外观如下所示:
Filesystem Size Used Avail Use% Mounted on
/dev/md10 248M 236M 1.0K 100% /boot
但为根保留了空间,通常为5%。如果root将其填满,则df
看起来是这样(对于这个小文件系统,它是另外13 MB):
Filesystem Size Used Avail Use% Mounted on
/dev/md10 248M 248M 0 100% /boot
请注意,它已从100%使用到... 100%使用。尽管实际上又被使用了5%。该Used
字段按预期增加,但是该avail
字段刚刚从1K更改为0。
当您删除前13MB数据时会发生什么?好了,您又回到了第一个输出-您已释放了5%,但仍处于100%的使用状态,几乎没有可用状态。
结论:当您要查看实际释放的空间时,请查看Used
列-而Avail
不是Use%
。
rm
实际上并没有删除文件。它取消链接它们-即删除与它们的硬链接。基本上,每个硬链接都为文件指定一个名称。当文件中没有剩余链接(并且未打开等)时,只有这样,该文件才被实际删除。
实际上,通过文件的索引节点号,可以在文件系统上唯一地标识一个文件,而不管其具有多少名称。如果您知道这些文件的inode编号,则可以find -inum
用来查找所有指向它们的硬链接-但您可能不知道。如果您需要清理一些相关文件,则可以从中获取相关的inode编号stat
。然后,您可以使用find /path/to/mount -inum NUMBER
查找到该文件的所有硬链接(包括您刚刚统计的名称)。此外,一旦实际删除文件,即可重新使用inode编号。
请记住:索引节点号是每个文件系统的。因此,两个不同的文件可以在两个不同的文件系统上成为inode 42。仅在同一文件系统上,inode 42保证始终是同一文件。同样,inode编号有时也不适用于网络文件系统或非Unix文件系统。但是您使用的肯定是ext4。
除此之外,您只需要查找其他名称即可删除常规方式(例如,通过xdiskusage
已经在做的大事情来查找)
废纸folders文件夹只是目录。如果它们充满了您无法删除的垃圾,则会在中显示xdiskusage
。
您应该考虑一个备份系统,该系统可以更好地为您处理删除旧备份的问题-手工操作容易出错。更糟糕的是,它也可能被遗忘,导致备份失败,并且还原通常是最近的数据(例如,意外删除,文件损坏,磁盘故障),而不是旧数据(“哦,是的,我确实需要去年删除的东西) ...”),因此“磁盘完整备份失败”表示您实际上是在丢弃最有价值的数据(新备份)以保留最有价值的数据(两年前的备份)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句