为什么我的 500GB SSD 只有 477056 个 inode?

为什么我的 500GB SSD 只有 477056 个 inode?
Filesystem        Inodes   IUsed     IFree IUse% Mounted on
udev             4030305     685   4029620    1% /dev
tmpfs            4040316    1252   4039064    1% /run
/dev/sdb1         477056  476282       774  100% /
tmpfs            4040316     399   4039917    1% /dev/shm
tmpfs            4040316       5   4040311    1% /run/lock
tmpfs               1024      17      1007    2% /sys/fs/cgroup
/dev/sda1      122101760 3865680 118236080    4% /media/2TB
/dev/loop2         62342   62342         0  100% /snap/gtk-common-themes/1506
/dev/loop0         26205   26205         0  100% /snap/telegram-desktop/2198
/dev/loop1           249     249         0  100% /snap/whatsdesk/20
/dev/loop3         10476   10476         0  100% /snap/go/6727
/dev/loop4         11573   11573         0  100% /snap/core20/634
/dev/loop5         12826   12826         0  100% /snap/core/10185
/dev/loop6         27807   27807         0  100% /snap/gnome-3-28-1804/145
/dev/loop7         10779   10779         0  100% /snap/core18/1932
/dev/loop8         62411   62411         0  100% /snap/wickrpro/495
/dev/loop9         62411   62411         0  100% /snap/wickrme/430
/dev/loop10          472     472         0  100% /snap/snapd/9721
tmpfs             808063      28    808035    1% /run/user/1000
/dev/loop11        63811   63811         0  100% /snap/gtk-common-themes/1513 
root@desktop:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3.1G  1.8M  3.1G   1% /run
/dev/sdb1       465G  214G  247G  47% /
tmpfs            16G  727M   15G   5% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/sda1       1.8T  1.6T  164G  91% /media/2TB
/dev/loop2       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop0      179M  179M     0 100% /snap/telegram-desktop/2198
/dev/loop1      639M  639M     0 100% /snap/whatsdesk/20
/dev/loop3       92M   92M     0 100% /snap/go/6727
/dev/loop4       61M   61M     0 100% /snap/core20/634
/dev/loop5       98M   98M     0 100% /snap/core/10185
/dev/loop6      163M  163M     0 100% /snap/gnome-3-28-1804/145
/dev/loop7       56M   56M     0 100% /snap/core18/1932
/dev/loop8      449M  449M     0 100% /snap/wickrpro/495
/dev/loop9      449M  449M     0 100% /snap/wickrme/430
/dev/loop10      31M   31M     0 100% /snap/snapd/9721
tmpfs           3.1G   44K  3.1G   1% /run/user/1000
/dev/loop11      65M   65M     0 100% /snap/gtk-common-themes/1513

为什么我的 2TB SSD 有 122101760 个 inode,而我的 500GB SSD 有 477056 个?我的索引节点快用完了,而我的 SSD 仅半满。

答案1

在 Linux 系统中,文件名只是指向真实文件(索引节点)的链接。当您创建文件时,即使是符号链接,您也会保留一个索引节点。您正在使用 inode 来创建文件。因此,当您在 Linux 中设置文件系统时,您(系统)会分配 inode 的数量和每个 inode 的大小。在您的情况下,465 GB(499289948160 字节)文件系统被划分为 477056(数量,计数)个 inode。这意味着每个 INODE 有 499289948160 / 477056 = 1046606 字节 (~1 MB)

当您创建链接 ( ln)、仅需要千字节甚至字节存储的文本文件时,它们会占用一个 inode,并且由于每个 inode 为 1 MB,因此它们很快就会耗尽。

所以实际上,你已经使用了 214 GB,但是因为你有很多小文件(索引节点),这是正常的,所以你的索引节点数量用完了!

要解决此问题,您可以重新格式化系统(但请注意,您需要先备份数据,然后再从备份中恢复数据)。

mke2fs -t ext4 -I 1024 /dev/sdX1

如果您选择 1024,则 499289948160(SSD 的总字节数)将被除以 1024,您将获得大量 inode,而且它们不会很快耗尽。

答案2

某些文件系统类型(例如 XFS)将按需创建 inode,并且可能会将已删除文件的 inode 保留一段时间,以便在需要时可以快速重用它们。

如果较小的 SSD 有 XFS 文件系统,但较大的 SSD 有 ext4 等经典风格的文件系统,这可能是正常且无害的。

相关内容