我有一个文件系统,其中包含许多我定期删除的小文件(这些文件是可以轻松重新生成的缓存)。rm -rf简单地创建一个新的文件系统比运行或rsync删除所有文件要快得多(即有效删除包含数千个文件的大目录)。
创建新文件系统来擦除文件系统的唯一问题是它的 UUID 发生变化,从而导致例如/etc/fstab.
有没有一种方法可以简单地从 ext4 文件系统中“取消链接”目录,或者完全清除其 inode 列表?
可能的重复:
如何增加 ext4 文件系统中的 inode 数量?
我有一个带有 Debian Wheezy 64 位的自制 NAS。它具有三个磁盘 - 2x2TB 和 1.5TB,使用 RAID1/5 和 LVM 汇集在一起。结果是一个 LVM 逻辑卷,大小约为 3.16TB,格式化为 ext4 并挂载为 /home。但是,我刚刚发现 Inodes 使用了大约 50GB 的容量(确切数量为 212 459 520,大小为 256B,或者换一种说法——每 16k 分区大小一个 Inode)。
虽然 3.16TB 中的 50GB 约占总容量的 1.5%,但它仍然有很大的空间。由于这是一个存储 NAS,主要用于多媒体,我不希望 /home 分区中有 2.12亿个文件。
所以,我的问题是 - 是否可以在不实际重新创建整个分区的情况下降低/更改 inode 的数量?虽然有可能做到这一点,但我仍然更愿意找到一种方法来做到这一点,而不是移动 2TB 的数据并等待 RAID 再次重新同步。
设备文件本身不是文件。它们是在类 Unix 操作系统中使用设备的 I/O 接口。它们不使用磁盘空间,但是,它们仍然使用stat命令报告的 inode :
$ stat /dev/sda
File: /dev/sda
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 6h/6d Inode: 14628 Links: 1 Device type: 8,0
Run Code Online (Sandbox Code Playgroud)
设备文件是否使用文件系统中的物理inode 以及它们为什么需要它们?
关闭投票通知:虽然链接的副本提出了相同的问题,但评论和唯一答案并未提供来自权威来源的答案。在由托马斯·迪基我的问题的答案,事实上确实提供我一直在寻求答案。因此,建议的重复没有帮助,但是托马斯在这里的回答是正确的。
根据G-Man在这个 PerlDuck 的评论中对超级用户问题和个人帐户的回答,具有大量条目的目录大小超过 4096 字节(可以通过ls -l输出看到),但是一旦条目被删除 -数字永远不会下降。
问题是“为什么”?是否由于ext4文件系统配置为保留目录元数据的方式?显然,删除目录并重新创建它不是解决方案,因为它会删除原始 inode 并创建一个新的 inode。可以做些什么来手动减少数量?
什么是关系之间的差异xattr和chattr?我想知道当我chattr在 Linux 中设置属性时 Linux 内核和 inode 元数据中发生了什么。
在ext4文件系统中,假设file1有 inode number1和file2inode number 2。现在,无论任何crtime可能可用的时间戳如何,假设它的file1创建时间早于file2仅因为 inode1小于inode是错误的2吗?
我最近在一台装有 RHEL6 的机器上发现:
ls -lbi
917921 -rw-r-----. 1 alex pivotal 5245 Dec 17 20:36 application.yml
917922 -rw-r-----. 1 alex pivotal 2972 Dec 17 20:36 application11.yml
917939 -rw-r-----. 1 alex pivotal 3047 Dec 17 20:36 application11.yml
917932 -rw-r-----. 1 alex pivotal 2197 Dec 17 20:36 applicationall.yml
Run Code Online (Sandbox Code Playgroud)
我想知道如何实现这样的目标?
起初我使用stat -c %i file(帮助检测 jail 的存在),它似乎适用于阳光下的任何 Linux 发行版。在 OS X 上,我不得不使用ls -i file | cut -d ' ' -f 1.
是否有某种方法可以在可跨 *nix 平台移植且不依赖于众所周知的反复无常的 shell 脚本中找到文件的 inode 编号ls?
在 PHP 中,fileinode()函数返回文件的 inode。我想知道是否可以使用它来确定文件是否被重命名、移动或修改。
我做了一些测试,重命名后 inode 似乎保持不变。这种行为是否一致?它适用于任何类型的文件,在任何 Linux 发行版上吗?
在很多*nix系统如OS X和Ubuntu上,我们可以看到根目录的inode是2,那么inode 1是干什么用的呢?