Linux 驱动程序一直显示 0 个可用字节,并且只有 root 可以写入

Linux 驱动程序一直显示 0 个可用字节,并且只有 root 可以写入

我的 ssd sata 硬盘遇到了非常非常严重的问题。

我确实填满了硬盘,而 Thunderbird 却抱怨“设备上没有剩余空间”。

但即使我从硬盘中删除一些文件,df 仍会显示 0 个可用块。但它会减少已用块的数量。因此,它看起来像是在释放块并删除文件,但它不会将块放回空闲池。

但事情就是从这里开始变得疯狂:如果我以普通用户身份登录,当我尝试写入硬盘时,会得到“无可用空间”的提示。但如果我以 root 身份登录,我可以写入文件系统,尽管 df 显示有 0 个可用块。

我确实尝试运行 fsck -f,但它只是运行测试,然后说一切正常。但它运行时间不到 10 秒,这在 40GB 的 SSD 分区上是正常的吗?

有谁知道这里可能出了什么问题吗?

这是使用带有 ext4 的 Fedora 14。

tune -l /dev/sda2 (我的 / 和唯一分区)的输出为:

tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   myroot
Last mounted on:          /
Filesystem UUID:          14079141-278f-437e-b042-7271a2ac07ed
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:              2150288
Block count:              8600576
Reserved block count:     430028
Free blocks:              380030
Free inodes:              1775702
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8176
Inode blocks per group:   511
Flex block group size:    16
Filesystem created:       Sat Jul 31 21:49:31 2010
Last mount time:          Fri Nov 26 17:38:42 2010
Last write time:          Fri Nov 26 16:44:15 2010
Mount count:              3
Maximum mount count:      -1
Last checked:             Fri Nov 26 16:44:15 2010
Check interval:           0 (<none>)
Lifetime writes:          386 GB
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:      a0bb9b2c-9238-49eb-94c9-9979fb0fd825
Journal backup:           inode blocks

答案1

要列出文件系统超级块的内容,请使用以下命令:

tune2fs -l <device>

请注意,这将以物理设备而不是挂载点作为其参数。

值得关注的是您的可用 inode 数、可用块数和保留块数。假设您将此文件系统安装在某个重要位置,这里指的是系统必需的目录树,例如 /,建议维护保留的超级用户块。但是,如果您的选择有限,您可以再次利用 tune2fs 命令,如下所示:

tune2fs -m n <device>

设置文件系统为超级用户保留的百分比n

答案2

mke2fs为根保留卷上大约 5% 的磁盘空间,可用空间量仅显示用户空间。删除卷上足够多的文件,空间应该会释放。

答案3

以下是我经常采取的解决此问题的方法。

第一的,

tune2fs -m 1 <device>

然后使用类似下面的方法查找并删除/重新定位/压缩最大的文件:

find /mountpoint/of/device -xdev -type f -printf "%s %h/%f\n" | sort -rn -k1 | head -n 50 | awk '{ print $1/1048576 "MB" " " $2}'

最后,一旦设备上有足够的可用空间:

tune2fs -m 5 <device>

相关内容