问题标签 [inode]

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.

0 投票
1 回答
715 浏览

linux - MEM_SHARED、mmap 和硬链接

只是想知道共享内存的关键是文件名还是 inode。

我有一个名为 .last 的文件,它只是指向名为 YYYYMMDDHHMMSS 的文件的硬链接。

一个目录如下所示:

.last 只是到 20110101143000 的硬链接。

一段时间后,创建了一个新文件

然后我们删除 .last,并重新创建它以引用新文件。

我们的软件在这些更新期间持续运行,使用 MAP_SHARED 映射 .last 文件。处理完文件后,软件可能会将其缓存几分钟而不是取消映射。在一台物理服务器上,有 12-24 个软件实例同时运行。不同的实例通常几乎同时映射同一个文件。我的问题是:

linux 是使用文件名作为共享内存的键,还是使用 inode?

鉴于这种情况:

  1. proc A mmaps .last,并且不会取消映射
  2. 写入一个新文件,删除 .last,创建一个新的 .last 以链接新文件
  3. proc B 映射新的.last,并且不取消映射

如果 linux 使用 inode,那么 proc A 和 B 将看到不同的内存块映射到不同的文件,这正是我们想要的。如果 linux 使用文件名,那么 A 和 B 都会看到映射到新文件的同一块内存。B 很好,但是当分片块中的内存发生变化时,A 会崩溃。

有人知道它实际上是如何工作的吗?我要测试,但如果它是基于名称的,除非有人知道技巧,否则我会被搞砸。

谢谢!

0 投票
5 回答
8968 浏览

c - Linux设备驱动程序编程中使用struct inode和struct file传递数据的原因

我正在学习Linux Device Drivers, 3rd edition的第 3.5 章。本节介绍一种方法来检索我们struct inode *inode在 open 函数中定义的自定义结构:

据我了解,当设备打开时,struct inode *inode代表设备的参数传递给scull_open. 然后,自定义结构dev被提取并传递给filp->private_data其他方法,例如scull_read可以使用它:

这对我来说似乎很好,直到我意识到我们已经struct scull_dev *devscull_setup_cdev 这里进行了初始化。

我很困惑,因为我认为我们可以创建struct scull_dev *dev一个全局变量,然后scull_read其他方法最终将可以访问它,而无需通过使用inodeand的所有传递file

我的问题是,我们为什么不把它变成一个全局变量呢?

谁能提供一些使用这种方法传递数据的实际例子?

0 投票
1 回答
1052 浏览

php - INODES - 变通?

因此,我的托管服务在我的服务器(索引节点)上有 INODES 限制。每个目录/文件 = 1 个 INODE。这可能是未来的一个问题,因为我想在我的网站中实现文件共享。我理论上不能将文件数据存储到 MySQL 数据库中,然后在用户请求下载时提取数据吗?如果这是可能的,我将如何在 PHP 中做到这一点?

MySQL 骨架:

0 投票
2 回答
1252 浏览

linux - Linux procfs inode 编号在进程运行时更改

我正在为 Linux 开发安全软件 (SW)。我们的 SW 做的一件事是,当某个进程启动时,SW stat()s 进程的 /proc/ 条目并记住该条目的 inode 号。当稍后 SW 需要确定进程仍在运行(并且尚未重新启动)时,它会再次查找进程的 inode 并与记住的 inode 进行比较。一切都很好,直到最近我开始收到针对特定应用程序的错误警报 - Opera 浏览器 11.10beta。基本上,当 Opera 运行时,它的 /proc/PID 条目的 inode 编号似乎发生了变化,我们认为这是不可能的。这是 SW 安全概念工作中的一个相当大的扳手 - 非常依赖于这样一个事实,即当一个进程正在运行时,它的 /proc/ 条目的 inode 保持不变。

有人可以告知为什么会出现这种行为。谢谢。

0 投票
2 回答
2232 浏览

linux - 尽管修改时间没有变化,但已安装共享上的目录 inode 更改

我正在运行 Ubuntu 10.4 并正在使用 cifs 安装驱动器。我正在使用的命令是:

'sudo mount -t cifs -o workgroup="workgroup",username="username",noserverino,ro //"drive" "mount_dir"' (显然用 "" 值代替了实际值)

然后当我运行命令 ls -i 我得到:394070 第二次运行它我得到:12103522782806018

是否有任何理由期望 inode 值发生变化?运行 ls -i --full-time 显示修改时间没有变化。

0 投票
2 回答
328 浏览

unix - 为什么是 '。' Unix中的硬链接?

我已经看到很多解释为什么在基于 Unix 的操作系统中空目录的链接计数是 2 而不是 1。他们都说这是因为 '.' 目录,每个目录都指向自己。我明白为什么会有一些“。”的概念。对于指定相对路径很有用,但是通过在文件系统级别实现它可以获得什么?为什么不让 shell 或采用路径的系统调用知道如何解释它?

'..' 是一个真正的链接对我来说更有意义——文件系统需要存储一个指向父目录的指针才能导航到它。但我不明白为什么'。成为一个真正的链接是必要的。它似乎也导致了实现中的一个丑陋的特殊情况——你会认为你只能释放链接数小于 1 的 inode 使用的空间,但如果它们是目录,你实际上需要检查一个链接数少于2。为什么不一致?

0 投票
1 回答
1761 浏览

c - 知道“inode number”时如何获取inode结构

我阅读了 minix 的 API,但仍然感到困惑,并且无法仅使用 inode 编号获得“真正的”inode 结构

我们只能通过“stat”结构获得“inode number”,对吧?但是得到那个数字之后,有没有什么办法可以得到对应的inode结构呢?

0 投票
1 回答
2648 浏览

linux - inode 编号如何分布在 linux 根文件系统中?

关于如何在 linux 文件系统中使用 inode 编号,我有几个问题。这些问题可能是相关的,但为了清楚起见,我将一一问他们。

Q1:以EXT2/3为例,在《第二个扩展文件系统的设计与实现》中,我知道块组中有inode表,我知道inode存在文件,但是如果文件太多但inode个数怎么办?还不够吗?我最好的猜测是,如果文件系统的所有 inode 编号都用尽了,它什么也不做。如果稍后某些文件被删除,它的 inode 可能会被回收。

Q2:我在我的 Linux 服务器上运行“df -i”,我得到了这个:

我看到每个文件系统都有自己的 inode 计数,并且这些文件系统(如 devtmpfs 和 tmpfs)都安装到根文件系统。我猜每个文件系统都有自己的inode表,但是不同文件系统的inode数量分布在不同的范围内,比如根文件系统是[0,N]而tmpfs是[N+1,M]?

如果不同文件系统的 inode 数量在不同的范围内(我不这么认为),文件系统如何就范围划分达成协议?

如果不同文件系统的inode编号是根据相同的规则生成的(就像都是从0开始),如果我们将它们挂载在一起,不同的文件系统会发生冲突吗?据我所知,inode 在运行的操作系统中提供文件,如果根文件系统中的文件的索引节点编号为 N,并且另一个文件系统中的另一个文件(如 tmpfs)也具有索引节点编号 N,操作系统会做什么?

PS。我是 Linux 的新手,我不是来自说英语的国家,如果我没有明确表达,请见谅。提前致谢。

0 投票
3 回答
1840 浏览

linux - 如何创建 64 位 inode?

我需要测试 64 位版本的文件 IO API(打开、创建统计等)。在这个过程中,我需要创建一个具有 64 位 inode 的文件,以便测试内部 64 位数据结构/变量以及 API。如何创建 64 位 inode ?

我编写了一个脚本,在其中我试图创建一个嵌套的目录数组,每个目录中有 1024 个文件。该脚本需要大量时间来执行并突然终止。我无法继续,还有其他方法可以实现吗?

0 投票
2 回答
6920 浏览

java - 为什么 JDK NIO 使用了这么多 anon_inode 文件描述符?

我正在使用 Sun 的 JDK 1.6.0_26 和 NIO(带有 Netty),在 lsof 中我看到了数百个文件描述符anon_inode

我找不到关于什么是匿名 inode 的明确解释,我查看fs/anon_inodes.c了 Linux 内核的源代码树,似乎可能epoll使用它,但我不确定为什么会有这么多。我确实有多个“epoll 循环”和计时器线程,但没有我的anon_inode.