linux文件节点,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文件系统权限详解

对于文件系统权限,我们前面已经讲解了一部分,这里就不在重复了. 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的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于 ...

随机推荐

高性能javascript学习笔记系列(6) -ajax

参考 高性能javascript javascript高级程序设计 ajax基础  ajax技术的核心是XMLHttpRequest对象(XHR),通过XHR我们就可以实现无需刷新页面就能从服务器端读 ...

python基础——多重继承

python基础——多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗: Bat ...

Why does pthread_cond_signal not work?【转】

转自:http://stackoverflow.com/questions/16819169/why-does-pthread-cond-signal-not-work# 0 down vote fa ...

Oracle 经典语法(二)

--提示:工资 = 薪金 + 佣金 1. 找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名.SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '__ ...

python 语句,条件,循环

#coding:utf-8__author__ = 'Administrator'#想要在同一行打印,print后面加','print 12,print 34'''从模块导入函数import some ...

gdb命令调试技巧

gdb命令调试技巧 一.信息显示1.显示gdb版本 (gdb) show version2.显示gdb版权 (gdb) show version or show warranty3.启动时不显示提示信 ...

通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句

参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008 ...

调研android开发环境的发展演变

这是第一次接触android开发,特意上网搜索视频进行了自身知识补充,觉得说视频做得很不错,从android的发展历程以及一些基本常识都讲得很详细,也很有趣,也所以拿出来同大家一起分享学习,网址是:h ...

Asp .Net Core网页数据爬取笔记

突然要用到地区数据,想到以前用python的Scrapy框架写过一个爬虫,于是打算直接去国家统计局把最新的地区数据抓取回来.本想只需要copy一下以前的代码,就可以得到新鲜出炉的数据,谁知打开以前的项 ...

centos7 下 的lamp 的安装原创详细教程

时间 : 2017-08-03           目标: 基于CENTOS7 安装 LNMP,liunx的安装不做讲解,主要是 NGINX PHP7 MYSQL 的编译安装 第一节    nginx ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值