问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux inod table是什么? 请描述其作用?

发布网友 发布时间:2022-04-22 17:16

我来回答

1个回答

热心网友 时间:2023-11-13 13:15

来自网络
-----

那inode是做什么用的呢?inode 记录档案(文件或目录)的属性、及该档案放置在哪一个 Block 之内的信息。
每个档案都会占用到至少一个 inode 。而当我们 Linux 系统要找到这个档案时,他会先去搜寻 inode table 找到这个档案的属性及数据放置的地区,然后再到数据库去找到数据存放的 Block 进而将数据取出。
一个 partition 格式化为一个 filesystem 之后,他一定会有 inode table 与 data area 两个区块,一个用来记录档案的信息与该档案放置的 block 区块,一个用来记录档案的内容。
Linux 在读取数据的时候,是先查询 inode table 以得到数据是放在那个 Block 里面,然后再去该 Block 里面读取真正的数据内容。block 是我们在格式化硬盘的时候规定出来的一个值,这个 block 是由 2 的 n 次方个sector(扇区,大小为512byte) 所集结而成的,假设 block 规划为 4KBytes,则由于一个 inode 与一个block 最多均只纪录一个档案,所以如果一个档案有 0.1 K bytes 。但是,由于你的 block为 4K bytes 。你就会有 3.9 Kbytes 的空间“浪费掉”!所以,当你在格式化硬盘的时候,请千万注意到您的系统的使用范围。
1、 当 block 越小 ( 最小为 0.5K ) 、inodes 越多,可利用空间越多,但是大档案写入效率较差:适合档案数量多但是
档案容量小的系统,例如 BBS 或者新闻群组 news 这方面的服务之系统;
2、 当 block 越大 ( 最大可到 16 * 0.5K 以上 ) 、 inodes 数越少,大档案写入效率较佳,但浪费的空间较多:适合档案容量大的系统。
inode table是data area的索引表。

Data Area中存放真正的数据。

inode table上有许多的inode, 每个inode分别记录一个档案的属性与这个档案分布在哪些datablock上(也就是我们说的指针)。inode两个功能:记录档案属性和指针

1. linux FS 可以简单分成 inode table与data area两部份。inode table上有许多的inode, 每个inode分别记录一个档案的属性与这个档案分布在哪些datablock上(也就是我们说的指针)。inode两个功能:记录档案属性和指针
2. inode table中红色区域即inode size,是128Byte,在liunx系统上通过命令我们可以看到,系统就是这么定义的。Inode size是指分配给一个inode来记录文档属性的磁盘块的大小。
mpe2fs -h /dev/hda6 | grep node Inode size:128

3. data ares中紫色的区域block size,就是我们一般概念上的磁盘块。这块区域是我们用来存放数据的地方。
4. 还有一个逻辑上的概念:FS中每分配2048 byte给data area, 就分配一个inode。但一个inode就并不一定就用掉2048 byte, 也不是说files allocation的最小单位是2048 byte, 它仅仅是代表filesystem中inode table/data area分配空间的比例是128/2048,也就是1/16。
mkfs.ext3 -i 2048 这条命令中的-i参数就是我们所说的逻辑概念,它的大小决定inode count的大小,redhat5默认-i最小为可设置为1024.
网上很多介绍关于inode的文章,把inode size的定义搞错了,他们把-i参数这个值或block size解读为inode size 所以很多文章令人费解。
5. inode参数是可以通过mkfs.ext3命令改变的:
mkfs.ext3 -i 2048 -b 8192 -f 1024 /dev/sdb2

-i 2048更改inode为每2KB创建一个
-b 8192设置block size的大小为8kB
-f 1024设置fragments的大小为1KB

mkfs.ext3 –N 2939495 /dev/sdb2

–N 2939495更改inode count。

因为每个partition有inode数目*。所以inode可能会用完而导致不能创建新的文件。

#df -h
可以显示block空间用了多少,还剩余多少。

#df -i则显示inode用了多少,还剩余多少等。

所以,如果有非常多小文件,将inode占用光了。则可能也无法创建新文件。
接下来,我们再来分析一下复制文件、移动文件和删除文件对inode的影响

[root@yufei ~]# watch -n 1 "df -i;df"Every 1.0s: df -i;df Tue Apr 5 21:57:38 2011
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 960992 105415 855577 11% /
tmpfs 63946 1 63945 1% /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15118728 2747612 11603116 20% /
tmpfs 255784 0 255784 0% /dev/shm

[root@yufei test]# ls -li
total 4
977 drwxr-xr-x. 2 root root 4096 Apr 5 16:48 testdir
976 -rw-r--r--. 3 root root 0 Apr 5 18:54 testfile
976 -rw-r--r--. 3 root root 0 Apr 5 18:54 testfile.hard
976 -rw-r--r--. 3 root root 0 Apr 5 18:54 testfile.hard1
978 lrwxrwxrwx. 1 root root 8 Apr 5 17:03 testfile.soft -> testfile
我们先记录以上的信息

先看复制文件的情况
[root@yufei test]# cp testfile testfile.cp
[root@yufei test]# ls -li
976 -rw-r--r--. 3 root root 0 Apr 5 21:50 testfile
979 -rw-r--r--. 1 root root 0 Apr 5 21:58 testfile.cp
我们只对比这两个文件,发现Inode number不一样,我们再来看看inodes和blocks的剩余情况
Every 1.0s: df -i;df Tue Apr 5 22:02:49 2011

Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 960992 105416 855576 11% /
tmpfs 63946 1 63945 1% /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15118728 2747620 11603108 20% /
tmpfs 255784 0 255784 0% /dev/shm
发现inodes减少了一个,而blocks也少了,这就说明,复制文件是创建文件,并占Inode和Block的。
文件创建过程是:先查找一个空的Inode,写入新的Inode table,创建Directory,对应文件名,向block中写入文件内容

关于移动文件和删除文件的实验,大家可以自己动手来实践吧。我直接给出相应的说明。
移动文件,他分两种情况:
在同一个文件系统中移动文件时
创建一个新的文件名和Inode的对应关系(也就是在Directory中写入信息),然后在Directory中删除旧的信息,更新CTIME,其他的信息如Inode等等均无任何影响

在不同文件系统移动文件时先查找一个空的Inode,写入新的Inode table,创建Directory中的对应关系,向block中写入文件内容,同时还会更改CTIME。
删除文件他实质上就是减少link count,当link count为0时,就表示这个Inode可以使用,并把Block标记为可以写,但并没有清除Block里面数据,除非是有新的数据需要用到这个block。
最后我们来做个总结:

1、一个Inode对应一个文件,而一个文件根据其大小,会占用多块blocks。
2、更为准确的来说,一个文件只对应一个Inode。因为硬链接其实不是创建新文件,只是在Directory中写入了新的对应关系而已。3、当我们删除文件的时候,只是把Inode标记为可用,文件在block中的内容是没有被清除的,只有在有新的文件需要占用block的时候,才会被覆盖
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
割绳子:实验室篇游戏简介 割绳子游戏试玩 割绳子繁体中文版游戏介绍 割绳子游戏成就 我的世界沙盘口袋怎样打入特殊种子 我的世界手机上的沙盘版怎么找村庄 男人经常吃什么有利于阴茎发育 吃什么可以补下面大起来 买一两汽车分期付款购买要加价7%如果现金购买可按九五折交货王叔叔算了... ...百分之七,如果现金付款可按九五折,赵叔叔算了算,发现分期付款比现... linux上的inode编号是什么 linux 是如何通过i节点号找到目录项的 Linux中的超级块和MBR各指的是什么?请详解!! 404 Not Found linux 如何查看文件的i节点 什么是节点?在linux内核中如何实现的? 在linux中,为什么【i 节点】不是和文件一一对应的? 绠怎么读 绠的拼音是什么 linux系统I节点满了怎么清理 Linux 的i节点问题 i节点不包含文件的哪些相关信息 i节点在Linux文件系统中的作用 i节点在文件系统中的作用是什么? 华润集团在青海有哪些公司?????? 在淘宝上卖厨房电器要交钱吗? 华润集团在福州有什么项目吗??? 淘宝卖东西交易需要收费吗? 华润集团有多少家酒店 淘宝上开店卖东西要交钱吗 华润河南分公司有几个? 华为手机怎么更改手机短信的背景? 红萝卜与胡萝卜的营养区别 红萝卜和什么食物相克 红萝卜和什么相克 红萝卜和胡萝卜的区别 红萝卜和胡萝卜哪个营养价值高 红萝卜与胡萝卜能在一起吃吗 胡萝卜和红萝卜的区别 胡萝卜和红萝卜可以一起吃吗 红萝卜功效与作用营养价值 红萝卜的营养价值与功效 红萝卜和黄萝卜哪个营养价值高 红萝卜与胡萝卜的功效 红萝卜与胡罗卜能一起吃吗 红萝卜与什么相克 蝶儿蝶儿慢慢飞,带你走过千山和万水说什么歌 火火的爱 dj 视频里的女星叫什么 能否将蓝琪儿(DJ何鹏版)-火火的爱MP3,时长00:04:18,降速为原来的95%。谢谢 火火的爱DJ视频里开始跳舞的韩国女星是谁?? 火火的爱DJ里刚开始跳舞的韩国女星是谁