我决定调整存储驱动器上的分区大小(使用 gparted),一切似乎都很顺利,但现在当我尝试创建目录或将文件复制到驱动器时,出现“设备上没有剩余空间”的错误。
另外,即使我删除一些文件,它也不允许我替换它们。
驱动器上的所有文件似乎都可以正常读取,并且我可以将现有文件移动到其他目录中而没有任何问题。
那里是驱动器上的空间。检查所有文件的大小报告:175,840 个项目,总计 839.8 GB
它是一个 ext3 分区。
奇怪的是,Ubuntu(64 位 karmic)仍然在位置菜单中将驱动器选为“957GB 文件系统”。
请注意,受影响的驱动器不是我的主启动驱动器,而只是一个我在需要时从“位置”菜单安装的存储驱动器。
“df -h”的输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 885G 842G 0 100% /media/acd61702-ff34-460f-8539-ac762d1dc466
“df -i”的输出:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb1 58433536 175818 58257718 1% /media/acd61702-ff34-460f-8539-ac762d1dc466
我已经运行了“fsck -f -v /dev/sdb1”:
fsck from util-linux-ng 2.16
e2fsck 1.41.9 (22-Aug-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
175818 inodes used (0.30%)
8348 non-contiguous files (4.7%)
142 non-contiguous directories (0.1%)
# of inodes with ind/dind/tind blocks: 76655/8046/56
222404925 blocks used (95.17%)
0 bad blocks
79 large files
161176 regular files
12907 directories
0 character device files
0 block device files
0 fifos
38 links
1726 symbolic links (1512 fast symbolic links)
0 sockets
--------
175847 files
任何帮助,将不胜感激。
谢谢,e。
编辑:按照要求“tune2fs -l /dev/sdb1”:
tune2fs 1.41.9 (22-Aug-2009)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: acd61702-ff34-460f-8539-ac762d1dc466
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 58433536
Block count: 233703571
Reserved block count: 11685177
Free blocks: 11298646
Free inodes: 58257718
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 968
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 256
Filesystem created: Thu May 15 14:59:19 2008
Last mount time: Fri Nov 13 13:47:23 2009
Last write time: Fri Nov 13 14:40:32 2009
Mount count: 2
Maximum mount count: 35
Last checked: Thu Nov 12 15:14:03 2009
Check interval: 15552000 (6 months)
Next check after: Tue May 11 16:14:03 2010
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: tea
Directory Hash Seed: 793715af-66d6-46da-82aa-97ab4549b0ad
Journal backup: inode blocks
答案1
首先,您不能简单地将磁盘上所有文件的大小相加,并期望这就是使用的总空间。每次存储文件时,都会浪费一些空间。这就像把书放在书架上,如果书的大小不同,那么在书的顶部和下一个书架的底部之间就会有空间。
其次,如果您有任何打开但被删除的文件,那么所使用的空间将一直被使用,直到处理该文件的程序将其关闭或退出。这通常用于临时文件,程序不必担心清理它们,它所需要做的就是打开一个文件,然后删除它,然后再使用它。这些文件使用的空间将显示在 df 中,但您找不到与其对应的文件名。如果您想找到它们,那么您必须在 /proc/*/fd 中查找
第三,这也是您的问题所在,ext3 文件系统有一定比例的保留空间,只有 root 才能写入。这有两个原因,许多文件系统在磁盘接近满时会变得效率低下,系统必须花费越来越多的时间将文件放入剩余的空间中。此外,读取和写入文件的速度很慢,因为它们最终会严重碎片化。为 root 保留空间的另一个原因是它允许 root 压缩文件并希望为用户恢复一些空间。如果磁盘完全满了,那就不可能了。
因此,没有什么问题,您所看到的是磁盘已满时的正常行为。
答案2
它表示文件系统已 100% 使用,可用空间为 0。文件系统已满。出于各种原因,可用空间 + 已用空间 != 大小。
答案3
好的,你没事,它已经满了:D
感谢 Quack 对 tune2fs 的评论,我明白我错在哪里了:
Reserved block count: 11685177
Free blocks: 11298646
我刚刚从驱动器中移出了大约 60GB 的数据,现在它运行正常:)
感谢大家的帮助。