Articles of inode

inode实际上是否指向磁盘中的地址?

Linux文件系统中的inode如何实际指向磁盘上的块? 它是否包含一个从0到2 ^ 63 – 1的64位可寻址数字? 或者inode结构和实际磁盘地址之间是否有一层?

Yii2:减lessvServer上的inode使用率

在我的Linux vServer上,inode是有限的(例如250.000)。 我发现Yii2安装需要很多的inode。 inode的数量大致是文件和目录的数量。 在当前目录及其子目录中使用的inode数量可以通过 find . -xdev -printf '%h\n' | sort | uniq -c | awk '{total = total + $1}END{print total}' 我的Yii2项目平均约3万个inode。 ./runtime或./web/images文件夹中./web/images文件./web/images 。 大部分inode都用在./vendor目录中。 所以我的Yii2项目数量只限于8个项目。 我能做些什么来减lessYii2项目的inode使用量?

C函数修改inode?

我正在学习如何Linux文件系统的工作,我碰到了inode的概念。 我写了一个C程序来读取一个特定的inode并打印它的内容。 现在我不想从我的C代码修改inode的内容。 我知道这可能会打破文件系统,如果出现问题,但仍然想尝试一下。 我怎样才能做到这一点?

如何在两条path上testing是硬链接的?

我有文件path在一边,他们的新path,我想要复制它们。 如何testing他们是否可以简单地硬链接或他们应该被复制?

如何增加Ubuntu的inode限制?

我正在linode.com上设置一个服务器。 我有48G SSD。 我把很多小文件。 系统向我显示一条消息,说没有剩下,但通过使用df -h命令,我看到我仍然有19GB未使用。 然后我用df -i发现没有inode可用了。 inode的总数是3056000.我怎样才能增加这个限制?

我如何获得Linux中的inode的世代号?

简介:我想从用户空间获取Linux(或至lessext4)中的文件的世代号( i_generation )。 或者,也可以是“出生时间”(文件创build时间)。 我试图写一个双向文件同步程序(又名Unison ),但没有一个中央数据库(简单,只是在同步根存储数据),并通过保留文件移动(非常非常难以得到正确的,如果你想支持所有奇怪的情况下,例如,将文件从之后删除的目录中移出)。 有一个唯一的方法来识别文件将缓解事情很多。 我知道如何获得inode和设备号(通过stat ),但作为inode可以重新使用(我已经看到这个我自己),我想使用一个更稳定的唯一标识。 我已经阅读了NFS正在使用的“世代号”来唯一标识文件。 在NFS中,( st_ino , i_generation )组合用于在重新启动和服务器崩溃之间唯一标识文件句柄(或者至less防止重新使用导致可能的数据损坏的相同文件句柄)。 不过,我还没有成功获得这个数字。 这个ext4文件似乎提示可以从一个ext4文件系统获得这个数字,但是我不能从用户空间得到它(我不打算在内核空间中运行这个简单的程序)。 请参阅EXT4_IOC_GETVERSION 。 我无法在我的系统上find适当的头文件(LMDE,Debiantesting)。 有两个选项我可以find: 尝试使用内核中的一个 – 不能说它不应该从用户空间使用。 尝试在<linux/ext2_fs.h>使用EXT2_IOC_GETVERSION – 给出EBADF ( errno 9)。 也许是因为我想从EXT4文件系统获取EXT2信息? 或者,也许我做错了ioctl ,这是我第一次尝试使用它。 该文件被正确打开,因为在我的情况下open调用返回3(这应该是有效的)。 代码: #include <sys/ioctl.h> #include <sys/fcntl.h> #include <linux/ext2_fs.h> #include <stdio.h> #include <errno.h> int main () { int fileno = open("generation.c", O_RDONLY); printf("fileno: […]

硬连接可以覆盖,而不使用临时文件?

我有一个硬链接,必须始终存在于文件系统上。 什么inode硬链接点是不恒定的。 我想更新硬链接而不添加临时入口到目录。 (创build一个没有目录条目的文件可以使用open(2)和temp标志来完成。) 我面临的问题是replace/更新硬链接。 从相关系统调用的文档,似乎我只有两个选项,既不能避免临时文件: 使用renameat ,可以确保硬链接始终存在。 然而,它必须消耗一个硬链接,因此需要一个临时文件(更不要说它无法解除引用符号链接)。 使用linkat ,可以生成一个硬链接而不牺牲另一个文件。 但不能覆盖现有文件; 要求删除原来的硬链接。 是否可以创build一个链接到一个inode来replace一个同名的旧链接?

创buildpipe道,FIFO或套接字时创buildinode

我有关于Linux的一般问题。 如果我创build了fifo,是否会创buildinode? pipe? sockets?

重新启动后的Inode编号

在重新启动,重新安装后,甚至在所有进程closures之后,inode号码是否能够保证(例如通过标准)是相同的,然后再次打开? 例如,可以在文件打开时自动生成,而不是存储在文件系统上。 一个应用程序可以依靠它吗? 文件系统实现是否需要保证特定的语义?

是否可以通过修改inode数据结构和超级块来连接同一个linux文件系统上的两个文件?

如果我想连接两个非常大的文件驻留在同一个文件系统,比如说ext3或者ext4,linux是否提供了一个api来通过读取和修改这两个文件的inode直接/间接指针来编程来完成,和超级块值? 如果是这样,是否有任何文件的API / headerfiles的呢? 注:我知道build立在Linux的二进制文件,如猫,三通等可以使用,但我的问题是关于编程实现这一点。