linux文件系统节点详解
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,找文件就是一路顺藤摸瓜。
再谈谈linux下的link。
它分硬链接和软链接两种。软链接应用较广。
硬链接只是在相应目录的block里面记录了目标文件的inode。也就是多写了一行。它,不是真正意义上的文件,没有自己的inode,所以不会占用inode和block,但目标文件的inode引用计数会+1。
删除目标文件,硬链接依旧可以打开,毕竟删除只是删block里的文件名映射而已,由于硬链接里有完整的文件名映射,所以依然可以打开。
软链接则不同。软链接记录的是目标文件的文件名。会占用新的inode和block,block里记录的是目标文件的文件名。打开软链接时,先找到目标文件的文件名,在去相应目录去找inode, 相当于中间多了一层。
删除目标文件后,软链接无法打开。因为目标文件的文件名已经被删除,中间层不存在,所以即使目标文件的inode和block还在,但逻辑上它已经不存在了。所以无法打开。
但,无论更改软链接或者硬链接,都相当于更改原文件!
另外新建目录时会自动建两个硬链接.和..,所以本目录初始化时,link为2。上层目录link数会+1.
ln 默认建硬链接,-s 建软链接。
linux文件系统节点详解的更多相关文章
- 十一、linux文件系统权限详解
对于文件系统权限,我们前面已经讲解了一部分,这里就不在重复了. 1.修改文件权限有两种,一种是数字.一种是字母 (chmod 的修改只能是属主或者root) 数字: 修改目录权限和目录内所有文件的权限 ...
- Linux文件系统的详解
这里以 EXT2 文件系统为例 在Linux下,一个磁盘的最前面是MBR,大小为512Byte 在每一个分区下,第一部分是boot sector,接下来是super block,再接下来是inode, ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...
- linux lsof命令详解
linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...
- Linux lsof命令详解和使用示例【转】
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接 ...
- 高可用,多路冗余GFS2集群文件系统搭建详解
高可用,多路冗余GFS2集群文件系统搭建详解 2014.06 标签:GFS2 multipath 集群文件系统 cmirror 实验拓扑图: 实验原理: 实验目的:通过RHCS集群套件搭建GFS2集群 ...
- [转贴]linux lsof命令详解
linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...
- Linux find命令详解
转自Linux find命令详解 一.find 命令格式 1.find命令的一般形式为: find pathname -options [-print -exec -ok ...] 2.find命令的 ...
- Linux 内存机制详解宝典
Linux 内存机制详解宝典 在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于 ...
随机推荐
- XML特殊字符处理
XML共有5个特殊字符,分别为:&<>"' 如果XML文件中需要包含如上5个特殊字符,有两种方式: 1.将包含特殊字符的字符串放在<![CDATA[]]>中 ...
- error the @annotation pointcut expression is only supported at Java 5 compliance
今天碰到这个错误,在网上找了下,是因为aspectjweaver.jar用的是1.5.3 本地eclipse的jdk版本为1.7 下载高版本的aspectjweaver.jar会解决此问题 http: ...
- 一个Java复制目录的方法(递归)
/** * 将目标目录复制为指定目录(也可以用于复制文件) * @param src 源路径 * @param dest 目标路径 * @throws IOException */ public st ...
- Android 完整开源应用,完整开源项目
(Antox)聊天的 (new) (OpenKeychain)OpenPGP在android上的实现 (new) (Flock)提供同步服务 (OpenFlappyBird)曾经火爆的 ...
- Linux下swoole的安装配置
前几天搭建swoole环境,在安装php的swoole扩展时不知道什么原因,提示成功,但是使用的时候不能加载,最后决定重新安装php试试,顺便记录了php的安装过程 wget http://cn2.p ...
- RainCup_No.1
Rain杯No.1 初见篇 本系列故事以及人名地名等纯属虚构,如有雷同,纯属巧合 在极东之地,有一个岛国,与岛国隔了一个海域有一个古老的国度,天朝.天朝T镇有个少年叫小S,故事从小S与少女Rain的相 ...
- jquery中的DOM事件绑定与解绑
在jquery事件中有时候有的事件只需要在绑定后有效触发一次,当通过e.target判断触发条件有效触发后解除绑定事件,来避免多次无效触发和与未知情况造成冲突. 这时候就要用到了jquery中的事件绑 ...
- mysql数据库引擎 MyISAM和 InnoDB区别
1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件 ...
- flash 居中问题
如果舞台是1000的宽度,要剧中比较容易 mc1.x = (1000-400)/2; 这样就居中了,来看原理,首先我们要舞台居中,很容易就想到一个数字 1000/2 结果是500 但是x对舞台的中央是 ...
- 使用RelativeLayout控制WebView以及Bottom按钮的位置
使用RelativeLayout控制WebView以及Bottom按钮的位置 (地址) 在Design View中加入控件RelativeLayout, WebView, LinearLayout(H ...