Tune2fs 允许将 inode 大小从默认值(ext3 上的 128 字节,ext4 上的 256 字节)更改为几乎任何大小,但它应该是 2 的幂。更改默认 inode 大小的原因是什么?
这里写到可以这样做,以便能够在 inode 中存储 ACL 属性。inode 中还可以存储什么?
是否有任何理由增加现代高容量驱动器(2TB 及更多)上的 inode 大小?
我有一个 Ubuntu 14.04 服务器,它无法在 65,000 目录之外创建新目录。我已经运行 atune2fs -l并且可以看到该dir_nlink标志已设置。有谁知道还可以检查什么来允许这种情况发生?我有这个服务器配置的许多其他克隆,它们都超过了 65,000 大关并按预期工作。我已经比较了tune2fs -l输出,它们看起来是一样的。我仍然有几百万个空闲的 inode 和块。我已经卸载并重新安装了文件系统,但没有任何改变。
最近我们在运行嵌入式 Linux 系统的 ext3 格式的闪存卡上遇到了一个问题(坏块)。启动时,启动了根文件系统检查,但它似乎挂起,因为它比平时花费的时间要长得多。后来我将卡插入另一台 PC 并检测到坏块。我现在想知道如果我等待的时间足够长,初始根文件系统检查是否也会发现修复的块。为了找到它,我检查了 tune2fs 和 e2fsck 手册页,但找不到我的问题的答案:
我可以影响使用这些自动根文件系统检查执行的检查/修复吗?如果是,我该如何配置它?
如果无法配置:究竟检查或修复了什么,默认设置是什么,自动检查使用哪些标志?
我最近使用 mdadm 设置了我的第一个软件突袭,在向突袭添加更多磁盘后,我无法将文件系统调整为突袭的完整大小。我通过以下方式在 /dev/md0 上创建了一个(~16TB)文件系统:
mkfs.ext4 -v -b 4096 -t huge -E stride=128,stripe-width=256 /dev/md0
Run Code Online (Sandbox Code Playgroud)
然后我痛苦地等待了几天,因为旧的raid 中的所有数据都复制到了新的raid 中;我移动了磁盘并扩大了突袭,然后最后我:
resize2fs -p /dev/md0
Run Code Online (Sandbox Code Playgroud)
这告诉我
resize2fs 1.42 (29-Nov-2011)
resize2fs: /dev/md0: The combination of flex_bg and !resize_inode features is not supported by resize2fs
Run Code Online (Sandbox Code Playgroud)
我对这两个功能的确切用途或为什么组合很麻烦一无所知,因此根据我的更好判断,我尝试添加 resize_inode:
tune2fs -O +resize_inode /dev/md0
Run Code Online (Sandbox Code Playgroud)
但我被击落了:
Setting filesystem feature 'resize_inode' not supported.
Run Code Online (Sandbox Code Playgroud)
而且我没有足够的勇气尝试删除 flex_bg,因为我真的不想做任何可能使我的数据处于危险之中的事情。我正在使用 3.5.1 内核运行 Ubuntu 12.04:
Linux critter 3.5.1-030501-generic #201208091310 SMP Thu Aug 9 17:11:48 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我用 v1.42.5(最新的可用版本)再次测试了 resize2fs,但无济于事。所以,要清楚,我的问题是:如何将这个 ext4 文件系统的大小调整为 raid 的大小(最好不要重新创建)?
编辑:这里有一些可能有用的文件系统信息。 …