linux中os是什么文件夹,Linux下目录文件与普通文件

1.inode是什么?

目录文件虽然是文件(Linux的核心理念就是Everything is file),但是存储内容的只是一张表而已,关于文件名和inode号的映射关系。

我们应该先简单了解一下inode:

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

2.文件的扩展名和文件类型之间没有关系。

在windows下通常可以通过双击某个图标运行可执行文件,例如一个.mp3文件,双击之后其实是根据扩展名找到相应的音乐编辑器,不过,想一下如果你把一个普通的纯文本文件保存为.mp3文件,那么打开之后肯定是乱码。

再来说一下linux下的文件系统,

举例来说,你用了这个命令:cat /home/a.txt

1.你只传递了一个绝对路径,/home/a.txt,系统首先要知道/home/a.txt文件的inode是多少才行,如何得知呢?

2.这里有一个规律,某文件的父目录会(记录)知道该文件的inode号!

3.那么我得到“/home/a.txt”这个文件名,我得先知道/home目录的情况,要知道/home目录的情况,我得先知道/目录的情况,我们可以从/目录开始(假设/目录的inode号是0,并且这是写死的),然后再去一张叫做inode-table的表中查找inode号0所指向的数据域,然后从数据域里面可以找到一些类似于下面的内容:(看起来像一张表,不是么?其实可以想象到,目录文件就是一张表,存储了它内部有哪些文件名,以及该文件名对应的inode号)

文件名 inode号

bin    18

home    **

...    ...

我们从“/”这个目录文件中找到了“/tmp”文件名对应的inode号,假设就是20。

4.然后我们通过inode号20,去inode-table里面找寻20对应的数据域,然后从数据域中,我们又会找到一张表:(为什么又是表呢?因为“/”是一个目录,“/home”也是一个目录,那当然数据域里面存的还是表啦)

文件名  inode号

a.txt 8899

bbb.mp3 10088

kkk.jpg 20000

... ...

好了,我们找到了/home/a.txt的inode号了,就是8899。根据上面的规律,我们是不是又得去           inode-table里面找8899号对应的数据域了?对,就是这样。一直找下去。。。

5.我们找到inode号8899对应的数据域,于是我们会发现如下一些内容:

“abcdefg”(假设文件内容就是这样)

...

为毛这次不是表了?

答案:/home/a.txt文件不是目录文件了,它是一个普通文件,他存储的一般都是一些字符串。

总结:

目录文件:存储的就是一张表,里面是所有文件名和inode的映射关系。

普通文件:存储普通数据(一般就是字符串)。

从父目录中获得本文件的inode号---->找到inode-table表中找到这个inode号对应的数据域中的起点以及其他信息---->去这个数据域中读取该文件的内容

访问任何一个文件,关键是否能搞到inode号,搞不到就没辙了。搞到inode就好说了,拿着inode号去inode表中查找即可,最后找到数据域,那么就可以找到文件的内容了

另外还有一个就是权限问题了

整个过程这不仅仅跟本文件权限有关,还跟它的父目录(还有父目录的父目录...)权限有关(是否能搞到本文件的inode),关于 chmod 权限就不详细叙述了。

3.文件的文件名和文件实际存储内容之间也没有关系。

目录文件实际存储的只是一张inode的表(文件名与inode 序号之间的映射关系),它指向下一个存储空间,可能是一个另一个目录文件,也可能是有实际内容的普通文件。

4.为什么同一个文件系统移动文件要比跨文件系统快?

答:因为只需要修改某个目录中路径和inode对应关系即可,不需要重新写一遍数据域。

5.什么是买来的500G的硬盘,格式化完后总是少了达不到500G?

答:从本文可知,inode-table也是需要占用存储空间的,所以缺少的一部分中inode-table占用了不少。

*.如何了解Linux文件系统和inode的相关知识,能否推荐个文章?

答:http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-inodes.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值