我的 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>