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的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于 ...
随机推荐
- 两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)
我们搭建VPN采用的是openvpn,搭建过程总体需要经过三大步骤: 1.openvpn的安装与配置 2.端口转发 3.系统重启iptables规则自动生效 注意:以下所有名令在ro ...
- JS日期类型处理
Date 操作日期和时间的对象 Date.getDate( ) 返回一个月中的某一天 Date.getDay( ) 返回一周中的某一天 Date.getFullYear( ) 返回Date对象的年份字 ...
- JS 数字,金额 用逗号 隔开(数字格式化)
<script> function fmoney(s,n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s ...
- 基于JSON的级联列表实现
html代码: <select id="provice" onChange="setCity()"> <option value=" ...
- Learning in Two-Player Matrix Games
3.2 Nash Equilibria in Two-Player Matrix Games For a two-player matrix game, we can set up a matrix ...
- GoldenGate Studio 12.2.1.1发布
OGG studio是一款图形化OGG配置部署产品,其主要特性:1. 逻辑层面设计OGG,不需要了解OGG细节:2. 最值实践加快常用场景的配置:3. 使用拖拉映射,自动匹配源和目标对象:4. 一键部 ...
- innerHTML属性
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- 浅谈 Struts2 面试题收藏
Struts2面试题 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Fi ...
- windows Path变量优先级
系统>用户 且第一次配置无需重启即可使用 如遇到升级版本,需要重新配置Path,则需要重启方可生效~~
- javascript实现当前页面截屏
javascript实现当前页面截屏 一.前言 有客户要求能对用户当前页面进行指定区域截屏,类似qq截屏的实现效果.比如用户在处理工作的时候,将当前页面录入后的一些信息进行截图下载保存.但又不能安装任 ...