问题标签 [ext2]
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 - inode 位图和 inode 表的区别是什么
我试图了解 inode 位图和 inode 表之间的区别(来自 ext2 文件系统文档),但我不明白。谁能解释一下?
caching - 冷缓存和热缓存的概念是什么意思?
我读了一篇论文,它使用了术语冷缓存和热缓存。我用谷歌搜索了这个术语,但没有找到有用的东西(这里只有一个线程)。
这些术语是什么意思?
linux - FTP、SFTP、HDFS、NTFS、EXT2、EXT3
我只是想知道这些协议和文件系统是如何相互关联的,每个都在哪里使用。
FTP、SFTP、HDFS、NTFS、EXT2、EXT3
任何帮助,将不胜感激。
谢谢。
linux - fsync 的性能在 Linux 2.6.32 ext2 文件系统上得到了混合结果
当我在我的 Linux 机器上测试 fsync 的性能时,我发现 fsync 将数据插入到文件中会增加文件时会花费大量时间,但在插入仅覆盖现有内容而不增加文件大小的数据时,它的执行速度要快 100 倍。
环境:2-CPU 12 核 Linux 版本 2.6.32_1-14-0-0 (scmpf@pwd) (gcc 版本 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)) #1 SMP Mon Mar 31 10:42:09 CST 2014 ext2 文件系统
测试代码:
结果:
在 "echo "" >/home/zhangguangzhou/tmp/0" 之后运行上面的 test_fsync 程序,这会清空文件,每个 fsync 平均花费 8ms。但是当重复运行时,平均花费 50 us。在第二次及以后的运行中。当我从文件中间测试插入数据或插入不同大小的数据时,结果几乎没有变化。
问题: 如果写入正在增长文件,那么 fsync 的额外时间是多少?
我想到了fysnc中的inode IO,但是file-growth write和no-file-growth write的inode IO是一样的,因为它们都需要更新文件修改时间的inode元数据。
bootloader - ext2 inode 5 (EXT2_BOOT_LOADER_INO) 是否被任何操作系统使用?
在 ext2 中,有许多保留的 inode,例如 inode 2 是根目录。在Linux ext2 头文件中,inode 5 被定义为“Boot loader inode”。
是否有任何操作系统实际使用它?
你如何读取和写入这个inode?
c - Linux内核的ext2函数ext2_statfs()中的内存屏障
谁能解释为什么linux内核的ext2功能
int ext2_statfs (struct dentry * dentry, struct kstatfs * buf)
问题smp_rmb()
和以防smp_wmb()
万一
else if (sbi->s_blocks_last != le32_to_cpu(es->s_blocks_count)) {
?
这是在上游内核提交2235219b7721b8e74de6841e79240936561a2b63中添加的,它省略了不必要的 .statfs 计算,但无法理解为什么要添加内存屏障。
linux-kernel - 何时为新创建的 ext2 inode 分配存储空间?
我正在阅读《Understanding the Linux Kernel, 3rd Edition》,了解如何在 ext2fs 上创建新的常规文件。
(这本书可以在多个地方在线获得:不确定它们的合法性。相关章节的更新版本在O'reilly 的网站上- 但它没有所有相关数据)
在我看来,Linux 内核必须创建一个新的 inode,并为其分配必要的块。
本书概述了以下程序:
Creating inodes
(第 758 页)Allocating a Data Block
(第 764 页)
我不明白的是内核何时分配新的 inode 的数据块。
在程序接近尾声(第 14 段)时Creating inodes
,我看到以下内容:
调用
ext2_preread_inode()
以从磁盘读取包含 inode 的块并将该块放入页面缓存中。完成这种类型的预读是因为最近创建的 inode 很可能会很快被写回。
因此,就在此之前-在我看来,这是分配 inode 块的合乎逻辑的地方。但是,可能是 ext2 架构师决定在不同的时间进行分配。
有谁知道什么时候为新创建的 ext2 inode 分配存储空间?
filesystems - 制作linux ext2文件系统磁盘镜像?
如何构建文件系统磁盘映像,然后在位图文件中查看其磁盘布局?您如何向其中添加目录?我在使用 dd 创建的文件上使用了 mkfs.ext2,但我不确定它是否正确完成。我需要能够查看 inode 和 inode 表并了解它们与块的关系。
c - 获取 ext2 映像中的特定 inode (C)
我想使用 C 语言在 ext2 映像中访问特定的 inode(使用其编号)。我打算通过使用 open() 系统调用打开 ext2 映像,然后使用具有正确偏移量的 lseek() 遍历它,直到我到达 inode。这个对吗?还是我做错了什么?我有点困惑使用 open() 是否正确,或者有更合适的功能来做到这一点。
我应该只添加偏移量到 startPosition 直到我到达 inode 吗?但是如何搜索特定的 inode?
更新(更具体)
我已经有了 ext2 文件系统的布局(http://www.nongnu.org/ext2-doc/ext2.html),这给了我需要的一切(所有偏移量)。我需要创建一个 C 程序来操作元数据和数据。例如,删除和复制文件。
我知道该怎么做,但我在执行它时遇到了麻烦。
例如:为了测试我是否知道自己在做什么,我正在尝试读取教授提供的 ext2 磁盘映像中的空闲 inode 数量,这样做:
我收到的输出是:“空闲 inode 数量:32767”
我是否正确解释了从 read() 获得的数据?我不知道收到的这个值是否正确。
java - Ext2: Group Descriptors
I'm writing a Java program to go through and navigate into a ext2 filesystem image. I know my fs is revision 1 (or greater), so I know that there are copies of superblock in groups 0,1 and those that are powers of 3,5 and 7. My question is, what happens to the group descriptor when in a group without a superblock? is there any? if there is, does that mean that it's in the first block of the group? Where should I look for the inode table in my third group?
My fs has 3 groups (0,1,2), each 8192 blocks long with blocksize=1024.