问题标签 [ext4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Ext4 的可扩展性
文件系统 Ext4 的特性之一是此处记录的新的可扩展性特性。我想知道源代码级别的哪些更改将使 Ext4 能够支持这些功能,例如 Ext3 没有的几乎无限数量的子目录。指向内核源代码树相关区域的指针将不胜感激。
我试图在 fs/ext4/ 来源中找到线索,但还没有找到。
filesystems - 每个 inode 有多少字节?
我需要创建大量不是很大的文件(如 4kb、8kb)。这在我的计算机上是不可能的,因为它占用了所有 inode 高达 100% 并且我无法创建更多文件:
(我开始删除文件,这就是为什么现在是 67%)
在我的文件系统(ext4)上,每个节点的字节数为 256
我想知道是否可以将此值设置得非常低,甚至低于 128(在重新格式化期间)。如果是,我应该使用什么值?谢谢
directory - 如何在 POSIX 中持久地重命名文件?
在 POSIX 文件系统中持久重命名文件的正确方法是什么?特别想知道目录上的fsyncs。(如果这取决于 OS/FS,我问的是 Linux 和 ext3/ext4)。
注意:StackOverflow 上还有其他关于持久重命名的问题,但是 AFAICT 他们没有解决对目录进行 fsync 的问题(这对我来说很重要——我什至没有修改文件数据)。
我目前有(在 Python 中):
具体问题:
- 这是否也隐式地 fsync 源目录?或者我可能会在电源循环后最终在两个目录中显示文件(这意味着我必须检查硬链接计数并手动执行恢复),即不可能保证持久的原子移动操作?
- 如果我 fsync 源目录而不是目标目录,那是否也会隐式 fsync 目标目录?
- 是否有任何有用的相关测试/调试/学习工具(故障注入器、自省工具、模拟文件系统等)?
提前致谢。
filesystems - 文件名的长度如何影响磁盘上的剩余存储空间?
文件名的长度如何影响磁盘上的剩余存储空间?
我意识到这取决于文件系统。特别是我正在考虑 EXT 系列文件系统。我不完全了解 inode 如何影响磁盘空间以及文件名本身是如何存储的。这个问题也很难得到相关的搜索结果。这就是我在这里问的原因。在 linux 上,最大文件名长度通常为 255 或 256 个字符。创建文件系统时,是否为每个文件名“保留”了该空间量?换句话说,磁盘存储是否不受实际文件名的影响,因为已经使用了最大值?还是比这更复杂?
假设,我有一个名为“joe.txt”的文件并将其重命名为“joe2.txt”。在此之后可用磁盘空间量是否减少了?像“joe_version.txt”或“joe_original_version_with_bug_that_Jim_solved.txt”这样的较长名称呢?我担心 8、16、32、64 等字符的阈值。我将存储数百万张图像。我以前从来没有担心过这样的问题,所以我不完全确定它是如何工作的。
尽管 EXT 是我使用的唯一文件系统,但讨论 FAT 和其他文件系统可能对其他有类似问题的人有用。
linux - EXT4 上的触摸时间戳准确性
更新:原来我很愚蠢。当我应该检查访问时间时,我正在检查修改时间。无法重现的原因是测试文件是用 制作的dd if=/dev/urandom of="$target" bs='1K' count=1 || exit 1
,大多数时间太快了,以至于dd
新文件的修改时间(结束时间)与访问时间(开始时间dd
)不同。另一件需要注意的事情。
我正在编写一个脚本,将一个文件的访问时间加上两年的时间应用于另一个文件。这使用stat -c %x
,date --rfc-3339=ns
和touch -a --date="$result"
。stat
并且date
都输出带有纳秒的日期字符串,例如
,并info coreutils 'touch invocation'
说它支持纳秒。但有时在应用触摸时,应用的时间戳与 stat 之后返回的时间戳之间存在微小差异。以下是实际运行的数据:
因此,100 次测试中有 21 次失败,平均为 3.938 毫秒,中位数为 4.001 毫秒。有什么想法可能导致这种情况吗?
java - Android (Java) 中的 ext4/fsync 情况不清楚
Tim Bray 的文章“安全地保存数据”给我留下了一些悬而未决的问题。今天,它已经一个多月了,我还没有看到任何后续,所以我决定在这里讨论这个话题。
文章的一个观点是,在使用 FileOutputStream 时应该调用 FileDescriptor.sync() 以确保安全。起初,我很生气,因为在我做 Java 的 12 年里,我从未见过任何 Java 代码进行同步。特别是因为处理文件是一件非常基本的事情。此外,FileOutputStream 的标准 JavaDoc 从未暗示同步 (Java 1.0 - 6)。经过一番研究,我认为 ext4 实际上可能是第一个需要同步的主流文件系统。(是否存在建议显式同步的其他文件系统?)
我很欣赏对此事的一些一般性想法,但我也有一些具体问题:
- Android 何时会同步到文件系统?这可以是周期性的并且另外基于生命周期事件(例如,应用程序的进程进入后台)。
- FileDescriptor.sync() 是否负责同步元数据?那就是同步更改文件的目录。与 FileChannel.force() 进行比较。
- 通常,不直接写入 FileOutputStream。这是我的解决方案(你同意吗?):
/code>
linux - 在 Linux 中存储和访问多达 1000 万个文件
我正在编写一个需要存储大量文件的应用程序,最多大约 1000 万个。
它们目前以 UUID 命名,每个大小约为 4MB,但大小始终相同。从/向这些文件读取和写入将始终是顺序的。
我正在寻求答案的 2 个主要问题:
1)哪个文件系统最适合这个。XFS 还是 ext4?2)是否有必要将文件存储在子目录下以减少单个目录中的文件数量?
对于问题 2,我注意到人们试图发现 XFS 对您可以存储在单个目录中的文件数量的限制,但没有找到超过数百万的限制。他们注意到没有性能问题。ext4下呢?
与做类似事情的人一起谷歌搜索,有些人建议将 inode 编号存储为文件的链接而不是文件名以提高性能(这是在数据库索引中。我也在使用)。但是,我没有看到通过 inode 编号打开文件的可用 API。这似乎更像是在 ext3 下提高性能的建议,我不打算顺便使用它。
ext4 和 XFS 的限制是什么?一个比另一个有什么性能优势,在我的例子中,你能看到在 XFS 上使用 ext4 的理由吗?
ext3 - ext4 规格?
我在哪里可以找到 ext4 文件系统规范?
(非官方草稿很好,只要它们是最新的;如果不可用,ext3 也可以。)
filesystems - posix reads() 的延迟
我们有一个对延迟非常敏感的应用程序,从某种意义上说,读取的延迟峰值非常非常糟糕。
我已经测试了 XFS 和 ext4,将 O_ASYNC 写入文件,然后在最后写入 fdatasync() 会导致读取延迟达到 1 秒或更多峰值!
然后我尝试了 O_SYNC,我得到了更稳定的读取延迟,但写入文件非常慢。
因此,我尝试编写 O_ASYNC 并每隔 5 兆字节同步写入文件,它的快速和读取延迟也相当稳定。
但是,30 分钟后,我仍然可以阅读需要一秒钟或更长时间的内容。
如果您在 Linux 上构建对延迟敏感的应用程序,您是如何处理文件系统的,还是根本不使用它并将设备作为 RAW 设备安装?
file - 访问时间、修改时间、编码和文件名如何存储在 NTFS 和 EXT3/4 上的文件中?
出于学术和任务相关的目的,我需要知道文件相关数据在 NTFS 和 EXT 文件中是如何关联的。操作系统如何知道文件名?编辑者如何知道处理文件内容的编码方式?
这些详细信息是存储在 NTFS/EXT 上的单独信息位置还是包含在文件本身中?