尽管有可用空间,但设备上没有剩余空间

尽管有可用空间,但设备上没有剩余空间

我无法创建目录,

$ mkdir 2groups2
mkdir: cannot create directory ‘2groups2’: No space left on device

我什至无法更改目录

cd <TAB>

导致这个

$ cd -bash: cannot create temp file for here-document: No space left on device

同时df报告超过 9Gb:

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev            31428656        0  31428656   0% /dev
tmpfs            6288016     9080   6278936   1% /run
/dev/xvda1      60923900 51409376   9498140  85% /
tmpfs           31440072   276252  31163820   1% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs           31440072        0  31440072   0% /sys/fs/cgroup
tmpfs            6288016        0   6288016   0% /run/user/1000

如何解释?该怎么办?

df -i显示零:

$ df -i
Filesystem      Inodes   IUsed   IFree IUse% Mounted on
udev           7857164     397 7856767    1% /dev
tmpfs          7860018     488 7859530    1% /run
/dev/xvda1     7680000 7680000       0  100% /
tmpfs          7860018       1 7860017    1% /dev/shm
tmpfs          7860018       3 7860015    1% /run/lock
tmpfs          7860018      16 7860002    1% /sys/fs/cgroup
tmpfs          7860018       4 7860014    1% /run/user/1000

这是什么意思?

答案1

索引节点是对磁盘内文件内容的引用。我喜欢将它们视为文件头 - 它们告诉操作系统文件的一些元数据以及文件包含的实际数据的位置。

在经典的 Unix 文件系统设计中,每个文件系统除了具有固定数量的数据空间之外,还具有固定数量的 inode 空间。如果其中任一分区已满,则将无法在该分区上创建新文件。这是一个非常好的页面,它详细解释了 inode 及其用途:http://www.grymoire.com/Unix/Inodes.html

inode 使用的一个示例是将两个不同的文件指向相同的数据,也称为硬链接。这会以 inode 空间为代价节省分区中的数据空间。

//在Linux的ext2文件系统家族中,ext3ext4每单位磁盘空间的索引节点比率可以在文件系统创建时指定,然后在该文件系统的剩余生命周期中固定。如果你用完了 inode,你可以通过扩展文件系统的总大小来获得更多的 inode,但这可能效率低下。

更现代的文件系统设计(例如 XFS)将能够按需动态创建新的索引节点。该机制的延伸范围可能存在也可能不存在一些限制,因此您应该确保您了解所使用的文件系统类型的限制。

相关内容