有时人们删除他们不应该删除的文件,长时间运行的进程仍然打开文件,通过 catting 恢复数据/proc/<pid>/fd/N还不够棒。如果您可以通过对 ln 运行一些魔术选项来“撤消”删除,这将让您重新链接到 inode 编号(通过 lsof 恢复),那就太棒了。
我找不到任何 Linux 工具来做到这一点,至少用粗略的谷歌搜索。
你有什么,服务器故障?
EDIT1:从文件中捕获文件的原因/proc/<pid>/fd/N还不够棒,因为仍然打开文件的进程仍在写入文件。删除会从文件系统命名空间中删除对 inode 的引用。我想要的是一种重新创建参考的方法。
EDIT2: 'debugfs ln' 有效,但风险太高,因为它会破坏原始文件系统数据。恢复的文件也疯狂不一致。链接数为零,我无法向其添加链接。我的情况更糟,因为我可以/proc/<pid>/fd/N用来访问数据而不会破坏我的 fs。
最近我们遇到了一个问题,其中一个 ext4 文件系统似乎无法处理大量文件,more than 6mln in this case尽管有足够的空间。它6mln是使用所有默认设置格式化时 ext4 文件系统可以拥有的最大数量吗?我试图谷歌它,但没有得到任何明确的答案。任何人都可以在此遮蔽一些光线吗?干杯!!
我试图挂载以前只读挂载的文件系统read-writeable:
mount -o remount,rw /mountpoint
Run Code Online (Sandbox Code Playgroud)
不幸的是它没有工作:
mount: /mountpoint not mounted already, or bad option
Run Code Online (Sandbox Code Playgroud)
dmesg 报告:
[2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list. Please umount/remount instead
Run Code Online (Sandbox Code Playgroud)
Aumount也不起作用:
umount /mountpoint
umount: /mountpoint: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Run Code Online (Sandbox Code Playgroud)
不幸的是没有lsof的fuser不显示位于挂载点下的任何进程访问的东西。
那么 - 我怎样才能清理这个未处理的孤立列表,以便能够在不重新启动计算机的情况下再次挂载文件系统?
我有一个包含很多小文件的文件系统。目前使用了大约 80% 的 inode(我使用 进行了检查df -i),但是仅使用了 60% 的磁盘空间。如何“增加”inode 的数量?如果只是磁盘空间,我知道我可以增加磁盘的大小(这个磁盘在 LVM 上)。如果我增加磁盘的大小,那会使我有更多的 inode 吗?
如果有帮助,我愿意扩大此磁盘所在的文件系统。
我最近在开发 Web 服务器上安装了 Munin 以跟踪系统使用情况。我注意到系统的 inode 使用率每天增加约 7-8%,即使磁盘使用率几乎没有增加。我猜有些东西正在写大量的小文件,但我找不到什么/在哪里。
我知道如何查找磁盘空间使用情况,但似乎找不到总结 inode 使用情况的方法。
有没有一种好方法可以按目录确定 inode 的使用情况,以便我可以找到使用的来源?
我有一个文件已被删除,但仍被程序打开。我使用 lsof 找到了 inode 编号。我怎样才能创建一个硬链接回到那个inode?
Tune2fs 允许将 inode 大小从默认值(ext3 上的 128 字节,ext4 上的 256 字节)更改为几乎任何大小,但它应该是 2 的幂。更改默认 inode 大小的原因是什么?
这里写到可以这样做,以便能够在 inode 中存储 ACL 属性。inode 中还可以存储什么?
是否有任何理由增加现代高容量驱动器(2TB 及更多)上的 inode 大小?
我有一个带有 2.4.17 内核的 Linux MIPS 路由器。根 fs 是一个 tmpfs,而 /rom 是一个 cramfs。tmpfs 上有 4MB 可用内存和 3MB 可用内存。
我可以创建一些新的空文件,但下一个失败并显示“空间不足”。但是,我可以将 1MB 的数据附加到现有文件中。所以我的麻烦在于 inode 计数。
还有我的问题:
我想知道是否有一些规则(或公式)可以用来确定文件系统在 ext4 分区中将使用多少磁盘空间。例如,在 100 GB 的分区中,我实际可以使用多少?它是否取决于其他参数,如 inode 大小等?
我的 inode 快用完了。只有11%可用:
the-foo:~ # df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/system-home 9830400 8702297 1128103 89% /home
Run Code Online (Sandbox Code Playgroud)
有没有办法在不创建和复制到新分区的情况下解决这个问题?
细节:
the-foo:~ # tune2fs -l /dev/mapper/system-home
tune2fs 1.42.6 (21-Sep-2012)
Filesystem volume name: <none>
Last mounted on: /home
Filesystem UUID: 55899b65-15af-437d-ac56-d323c702f305
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors …Run Code Online (Sandbox Code Playgroud) inode ×10
linux ×10
ext4 ×5
filesystems ×4
hard-drive ×1
kernel ×1
lsof ×1
mount ×1
tune2fs ×1