删除大量大文件后,可用空间增加,但延迟较大

删除大量大文件后,可用空间增加,但延迟较大

昨天,我删除了家庭/媒体服务器上的 71 GB 的文件。

  • 之前可用空间:117 GB
  • 之后可用空间:126 GB

因此,我没有获得 71 GB 的额外可用空间,而只有 9 GB。我仔细检查了没有打开任何文件,我确实删除了 71 GB,可用空间实际上只增加了 9 GB。

我也尝试过同步,但是没有效果。

这不是第一次发生。事实上,多年来我时不时地看到过这种情况。第一次是在 ext3 上,现在是在 ext4 上。

发生这种情况时,我可以通过卸载然后重新安装文件系统来回收可用空间。在这些情况下,卸载需要长达 2 分钟的时间,而不是几乎不需要时间。

如今,我无法轻松地卸载和重新安装文件系统,因为它一直忙于处理我的录像机软件、我家人的 owncloud 服务器以及一些我目前还没有的服务。我不想半夜 3 点起床只是为了卸载和重新安装。

不,该at实用程序不行,因为其中一项服务执行不可恢复的长期运行任务,因此需要手动状态检查以找到可以关闭的良好时机,即一项任务刚刚完成。

但今天早上,我注意到该空间已在一夜之间被释放。在我看来好像进行了某种清理,这可能与卸载时需要额外时间的事情相同。

到目前为止,我只在删除大量数据时才注意到此行为。另一方面,我不确定它是否经常发生,而且差异太小而无法察觉。

文件系统创建时为根保留了 0% ( mkfs -m 0)。根据fsck -f(我在卸载和重新安装之间总是这样做),文件系统没有损坏,并且根据 SMART 诊断扩展测试,硬件也没有问题。

tune2fs 1.42 (29-Nov-2011)  
Filesystem volume name:   bigdata  
Last mounted on:          /bigdata  
Filesystem UUID:          6aebd17a-e064-41dc-9c68-c9a3acbe4f66  
Filesystem magic number:  0xEF53  
Filesystem revision #:    1 (dynamic)  
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize  
Filesystem flags:         signed_directory_hash   
Default mount options:    user_xattr acl  
Filesystem state:         clean  
Errors behavior:          Continue  
Filesystem OS type:       Linux  
Inode count:              121413632  
Block count:              485645568  
Reserved block count:     0  
Free blocks:              29081276  
Free inodes:              121382378  
First block:              0  
Block size:               4096  
Fragment size:            4096  
Reserved GDT blocks:      908  
Blocks per group:         32768  
Fragments per group:      32768  
Inodes per group:         8192  
Inode blocks per group:   512  
Flex block group size:    16  
Filesystem created:       Tue Dec 25 23:42:35 2012  
Last mount time:          Fri Jan  3 17:37:36 2014  
Last write time:          Fri Jan  3 17:37:36 2014  
Mount count:              37  
Maximum mount count:      -1  
Last checked:             Thu Apr 18 17:03:40 2013  
Check interval:           0 (<none>)  
Lifetime writes:          14 TB  
Reserved blocks uid:      0 (user root)  
Reserved blocks gid:      0 (group root)  
First inode:              11  
Inode size:           256  
Required extra isize:     28  
Desired extra isize:      28  
Journal inode:            8  
Default directory hash:   half_md4  
Directory Hash Seed:      be2b977e-5127-4843-9123-fe33b6d7b573  
Journal backup:           inode blocks  

这是我的两个问题:

  1. 这里发生了什么?为什么umount在删除时会延迟释放空间,而不是立即释放?
  2. 我可以做些什么来释放空间现在无需卸载并重新安装?

答案1

有两个因素可能相互作用。

  • 与 Windows 不同,您可以删除打开的文件。如果您删除正在流式传输的电影,它将从目录中删除,但仍将作为文件存在,直到流式传输程序关闭它。一旦流式传输软件关闭它,空间将被释放。该fuser -m命令可用于查找任何打开文件的进程的进程 ID。某些程序在处理完文件后可能不会立即关闭文件。

  • 这些都是日志文件系统。更改会写入日志,然后提交。更改提交可能需要一段时间。操作系统通常会缓存磁盘更改,并且只会定期将更改提交到磁盘。运行该sync命令应该会将所有待处理的更改刷新到磁盘。使用该选项安装磁盘sync将提高磁盘速度,但会使磁盘负载更大。

相关内容