登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SeaRiver Blog

实力才是你一生最好的依靠!

 
 
 

日志

 
 

Unix文件系统研究、一 i节点  

2009-04-18 00:59:47|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Unix文件系统研究、一
 
关键词:ScoUnix 文件系统 i节点
 
 
最近研究了一下unix的文件系统,小有收获,拿出来show下。
UNIX文件系统包括引导块、超级块、i节点区、文件存储区、进程对换区等几部分。
引导块占用第0号物理块,不属于文件系统管辖,如果系统中有多个文件系统,只有根文件系统才有引导程序放在引导块中,其余文件系统都不使用引导块;
超级块占用第1号物理块,是文件系统的控制块,超级块包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目、空闲i节点索引表、封锁标记等。超级块是系统为文件分配存储空间、回收存储空间的依据。
i节点区存放i节点,i节点是对文件进行控制和管理的一种数据结构。
 
文件存储区是存放文件内容的区域,文件存储区中各数据块的使用情况在超级块中由记录,系统利用超级块中的记录完成对数据块的分配和回收
 
 
unix文件系统中很重要的概念之一就是i节点,下面就开始说说这个重要概念。
 
每一个文件都有自己的i节点,每个i节点都有一个唯一的i节点号。
i节点结构如下(参考/usr/include/sys/ino.h):
struct dinode
{
 ushort di_mode;  /*文件类型+用户权限*/
 short di_nlink;  /*文件链接数*/
 ushort di_uid;  /*属主用户id*/
 ushort di_gid;  /*属主用户组id*/
 off_t di_size;  /*文件大小*/
 char di_addr[40]; /*文件数据区起点地址*/
 time_t di_atime; /*最后访问时间*/
 time_t di_mtime; /*最后修改时间*/
 time_t di_ctime; /*创建时间*/
};
从上面这个结构可以看出以下一些信息:
 
1、i节点保存了文件的属性和类型、存放文件内容的物理块地址、最近一次的存取时间、最近一次的修改时间、创建此文件的时间。
 
2、i节点中没有记录文件名字,那文件名是怎么关联到i节点,这么设计又有什么好处呢?
呵呵,这里就关系到了 硬连接与符号连接的区别?
 
3、di_mode这个是怎么保存文件类型+用户权限的,这个如果引申下来也很值得一说。
一般我们用l列文件看到的是这样的结果:
drwxr-xr-x   7 root     sys          512 Dec 15  2002 var
-rw-r--r--   1 root     sys         4003 Jul  4 23:37 1
红色字体部门说明就是文件类型记文件权限,这个字符串跟ushort di_mode怎么关联,用到了一个编码跟掩码的算法(Ip地址用的就是东东),留着下次说吧。
 
  评论这张
 
阅读(501)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018