推广 热搜: 后台  帝国cms  DESTOON  位置  网站  帝国cms建站  Wordpress教程  MAC系统  内容  destoon模板 

关于Linux的文件系统及节点表(Inodes)

   日期:2020-03-23     浏览:203    违规举报
 
我们都知道当我们安装Linux时会首先给系统分区,然后我们会把分区格式化成EXT3格式的文件系统。那么在Linux系统中还有没有其他的文件系统呢,下面我们就简单的介绍一下Linux系统中常见的几种文件系统。

(1)EXT3文件系统:ext3(第三级扩展Linux文件系统,third extended Linux filesystem)。跟EXT2文件不同之处就是增加了日志功能。

(2)EXT2和MSDOS:一般用于软盘

(3)ISO9660:光盘的文件系统

(4)GFS和GFS2:主要用于集群服务器的文件系统(SAN)


关于 Linux文件系统的节点(Inodes),其实linux文件系统有两层结构,逻辑结构和物理结构。也就是inode和block。

每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码,而block是实际存放文件内容的地方。

但文件名不在这里。在哪?在目录的block里面。

目录也有一个唯一的inode,记录内容与文件inode大体相似。

block是记录该目录下文件名,子目录名与它们的inode信息的地方。

所以我们在找文件时,比如/etc/issue,先读/目录的inode,找到/的内容block,再从中找出etc/的inode,

然后读etc/的block,找出issue的inode,再读issue的block,得出内容。当然前提是所有权限支持。

这也是为什么新建文件,删文件时要目录权限配合的原因。

因为文件本身不记录文件名,文件名记录在其父目录的block中。

那/目录的inode记录在哪里?这是鸡生蛋,蛋生鸡的问题。解决循环要有外力介入。

先有鸡还是先有蛋?先有鸡,因为鸡是恐龙进化来的。恐龙下蛋,但那毕竟不是鸡蛋.....

所以还是先有鸡,后有鸡蛋。这也解决了没有鸡蛋,鸡是从哪里来的问题。

根目录的inode是挂载时候记录的,因此有了/的inode,找文件就是一路顺藤摸瓜


对于Inode我们需要了解以下几点

1 Inode(index node )索引节点

2 首先我们要清楚地是:一个文件其实是由两部分组成:节点表和数据区。Inodes table (节点表)包含了ext2和ext3文件系统的所有属性。节点表里面主要存放文件的类型,权限,UID,GID,link count,大小和时间戳,数据存放在磁盘的什么位置。数据区里面就是存放真正的数据。

3 一个inodes(节点号)的大小大概为128B,一个文件至少要占有1个inodes。通过tune2fs

-l /dev/sda7 可以查看这个分区的inode size,inode count,block count。

我们知道,计算机在识别一个用户是通过UID来识别的,识别一个进程是通过进程号来识别的,那么,同样,计算机识别一个文件是通过一个inode number来识别文件的。而文件名只是给人的识别的。

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。

df -i 

查看每个inode节点的大小,可以用如下命令:

sudo dumpe2fs -h /dev/hda | grep "Inode size"
        由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。

4 查看节点号的方法:#ls -li

[root@localhost ~]# ls -li

total 56

533587 -rw------- 1 root root

1050

Mar

6 02:15 anaconda-ks.cfg

919063 drwxr-xr-x 2 root root 4096

Mar

6 02:43 Desktop

524290 -rw-r--r-- 1 root root

29302

Mar

6 02:15 install.log

524291 -rw-r--r-- 1 root root

3738

Mar

6 02:15 install.log.syslog

前面的一串数字就是文件的节点号,

其实我们的节点号是在分区创建的时候就已经分配好了的。

5 下面我们来学习复制,剪切,删除对文件inode的影响

(1)复制对文件inode的影响

[root@localhost ~]# cd /boot/

[root@localhost boot]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

a   可以看到,这个文件的节点号是6030,现在我们将它复制到另外一个分区

[root@localhost boot]# cp file /var/

[root@localhost boot]# cd /var/

[root@localhost var]# ls -li file

2115361 -rw-r--r-- 1 root root 0 Mar

6 13:27 file

将这个文件复制到/var分区下面后,这个文件的inode number就改变了。

当一个文件从一个分区复制到另外一个分区的时候,系统就分配了另外一个inode给这个文件。

b     那么在同一个分区复制文件节点号会有什么改变呢

[root@localhost boot]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

[root@localhost boot]# cp file /boot/grub/

[root@localhost boot]# cd grub/

[root@localhost grub]# ls -li file

22091 -rw-r--r-- 1 root root 0 Mar

6 13:29 file

可以看到,刚才这个文件的节点号是6030,现在就变成了22091了。

在同一个分区里面复制文件,这个文件的节点号也是会发生改变的。因为在这个分区有两份相同的文件,只是文件的内容相同,但是文件的inode属性却是不一样的。

2. 剪切对文件inode的影响

a 同一分区的剪切

[root@localhost ~]# cd /boot/

[root@localhost boot]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

可以看到,这个文件的节点号是6030,现在我们将这个文件在同个分区里剪切一份。

[root@localhost boot]# mv file /boot/test/

[root@localhost test]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

可以看到,这个文件节点号是没有改变的。

当在同一个分区里面移到文件,文件的节点号没有发生改变。

b 不同的分区剪切

[root@localhost ~]# cd /boot/test/

[root@localhost test]# ls -li file

6030 -rw-r--r-- 1 root

[root@localhost test]# mv /boot/test/file /var/ftp/pub/

[root@localhost test]# cd /var/ftp/pub/

[root@localhost pub]# ls -li file

325584 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

可以看到,这个文件的节点号是肯定会变的。

3 删除对inode的影响

[root@localhost ~]# cd /boot/

[root@localhost boot]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:44 file

[root@localhost boot]# rm -rf file

现在我们把file这个文件给删除了,其实我们只是将file这个文件的节点表给删除了,其实我们的数据都还在。这也就是为什么当我们删除一个文件,这个文件还可以被找回来的原因。当然如果我们在到这个分区里面写入数据,那么原来的数据就会被覆盖。

[root@localhost boot]# touch file1

[root@localhost boot]# ls -li file1

6030 -rw-r--r-- 1 root root 0 Mar

6 13:49 file1

现在我们又新建了一个文件file1,这个文件的节点号也是6030,它就已经覆盖了以前的数据的节点号。那么以前的数据就找不回来了。

4 总结

复制:在同一个分区,节点号改变。

在不同的分区,节点号改变。

剪切:在同一个分区,节点号不变。

在不同的分区,节点号改变。

删除:只是删除了文件的节点表,数据没有被真正删除,只有当往这个分区在写入数据的时候,才会覆盖原来的数据。

免责声明:
1、本站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
2、本站部分作品内容是由网友自主投稿和发布、编辑整理上传,对此类内容本站仅提供交流平台,不为其版权负责,更不为其观点承担任何责任。
3、因行业及专业性有限,故未能核验会员发布内容的真实性及有效性,不为其负责,如有虚假或违规内容敬请准备材料图片发邮件到info@n360.cn举报,本站核实后积极配合删除。
4、如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时处理或删除。
 
打赏
 
更多>同类网站技术
0相关评论

推荐图文
推荐网站技术
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  免责声明  |  版权隐私  |  信息发布规则  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2020081222号
Powered By DESTOON