pio*_*qui 69 filesystems size partition inode files
上周我遇到了一个问题(对我来说是新的)。我有一个 ext4(Fedora 15)文件系统。服务器上运行的应用程序突然停止。乍一看,我找不到问题所在。
df显示 50% 的可用空间。搜索了大约一个小时后,我看到了那个人使用的论坛帖子df -i。该选项查找 inode 使用情况。系统没有inode,这是一个我没有意识到的简单问题。该分区只有 3.2M 的 inode。
现在,我的问题是:我可以让系统有更多的 inode 吗?应该/可以在格式化磁盘时设置吗?使用 320 万个 inode,我可以拥有多少个文件?
小智 37
似乎您的文件比正常预期多得多。
不知道有没有办法动态改变inode表大小。恐怕您需要备份您的数据,创建新的文件系统,并恢复您的数据。
要使用如此庞大的 inode 表创建新文件系统,您需要使用 mke2fs(8) 的“-N”选项。
我建议首先使用“-n”选项(它不会创建 fs,但会显示有用的信息),以便您可以获得估计的 inode 数量。然后,如果需要,请使用“-N”创建具有特定 inode 编号的文件系统。
tij*_*agi 17
作为另一种解决方法,我建议考虑将大量文件打包到一个未压缩的(!)tar存档中,然后archivemount将其作为文件系统挂载。tar 存档比文件系统映像更适合共享,并且在备份到云或其他存储时提供类似的性能。
如果集合应该是只读的,squashfs可能是一个选项,但它需要在内核中启用某些选项,并且xz压缩也可用于 tar 并具有相同的性能。
小智 17
使用 320 万个 inode,您总共可以拥有 320 万个文件和目录(但指向一个文件的多个硬链接仅使用一个 inode)。
是的,它可以在分区上创建文件系统时设置。选项-T usage-type, -N number-of-inodes, 或-i bytes-per-inode都可以设置 inode 的数量。我一般使用-i,输出比较后du -s和find | wc -l一个类似文件的收集,并允许一些松弛。
不,它不能在现有文件系统上就地更改。然而:
resize2fs扩展文件系统。这大致与增加的空间成比例地增加了更多的 inode。如果您想避免在空间之前耗尽 inode 假设未来的文件平均具有大致相同的大小,请使用tune2fs -m.小智 7
对于这种情况,我有一个替代解决方案。假设您在10G的分区中有 1000 个 inode 。但是由于 inode 限制,您不应该使用partition 的所有空间。但是在此解决方案中,您将能够使用分区的剩余空间而无需对其进行格式化。
$ df -i # see list ( I need just one free inode here so move just one file into other PARTITION)
/dev/part1 1000 999 1 99.9% /data
$ dd if=/dev/zero of=/data/new_data
$ mkfs.ext4 /data/new_data
$ mkdir /data1
$ mount /data/new_data /data1
Run Code Online (Sandbox Code Playgroud)
用于永久安装
$ echo "/data/new_data /data1 ext4 defaults 0 1" >> /etc/fstab
Run Code Online (Sandbox Code Playgroud)
小智 5
最近在使用 apt 或 aptitude upgrade 时遇到了这个问题。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 5.1G 2.3G 70% /
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 521497 2791 100% /
Run Code Online (Sandbox Code Playgroud)
发出命令:
du /|sort -k1 -n
Run Code Online (Sandbox Code Playgroud)
显示大多数文件位于以下几个内核版本的子文件夹中:
/usr/src/linux-headers
Run Code Online (Sandbox Code Playgroud)
删除了这些子文件夹并修复了 inode 问题。
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 104986 419302 21% /
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试du -s --inodes * 2>/dev/null |sort -g将 cd 放入输出中的最后一个目录并重复。
完全披露:并非所有操作系统都支持--inodesdu 命令(我的 Mac 操作系统没有),但许多 Linux 操作系统都支持。