1,文件系统基本概念

文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。

2,硬链接和软链接的区别

硬链接和软链接的区别

–        符号链接

–        ln –s file1 file2

•       目录项,内容为指向文件名的指针,并不存在其他数据。目标文件删除时,符号链接仍然继续保持。使用了一个独立的inode。Inode的数据段包含了一个字符串,给出了链接目录的路径。(相当于windows中的快捷键)

–        硬链接

–        ln file1 file2

•       与原文件共用一个inode,增加引用计数。新建或者删除硬链接,则相应的增加或减小该引用计数。为0时,删除源文件;

•       dentry还是不一样,inode是一样

3,struct inode结构体

这里虚拟文件系统里的inode节点是指内存里的inode节点,包含了一些实际硬盘上的inode节点所没有的信息。

[cpp] view plaincopy
  1. <pre name="code" class="cpp"><fs.h>
  2. struct inode {
  3. struct hlist_node i_hash;
  4. struct list_head i_list;
  5. struct list_head i_sb_list;
  6. struct list_head i_dentry;
  7. unsigned long i_ino;    //每个inode的唯一编号
  8. atomic_t i_count;<span style="white-space:pre">   </span>//记录使用该inode的进程的个数
  9. unsigned int i_nlink;<span style="white-space:pre">   </span>//使用该inode的硬连接的个数
  10. uid_t i_uid;<span style="white-space:pre">        </span>//文件的user
  11. gid_t i_gid;<span style="white-space:pre">        </span>//文件的group
  12. dev_t i_rdev;<span style="white-space:pre">       </span>//当该inode表示设备文件的时候表示与哪个设备文件通信,只是一个数字
  13. unsigned long i_version;
  14. loff_t i_size;   <span style="white-space:pre">       </span>//文件的长度,以字节大小表示
  15. struct timespec i_atime;     //文件最后访问时间
  16. struct timespec i_mtime;<span style="white-space:pre">    </span>//文件最后修改时间
  17. struct timespec i_ctime;         //最后修改inode结构本身的时间
  18. unsigned int i_blkbits;
  19. blkcnt_t i_blocks;<span style="white-space:pre">      </span>//文件按块计算的长度
  20. umode_t i_mode;<span style="white-space:pre">         </span>//文件的权限
  21. struct inode_operations *i_op;<span style="white-space:pre">  </span>//inode操作,创建连接,文件重命名,在目录下创建文件,删除文件
  22. const struct file_operations *i_fop; /* former ->i_op->default_file_ops */   //文件内容的操作,设置文件位置指针等等
  23. struct super_block *i_sb;
  24. struct address_space *i_mapping;
  25. struct address_space i_data;
  26. struct dquot *i_dquot[MAXQUOTAS];
  27. struct list_head i_devices;
  28. union {
  29. struct pipe_inode_info *i_pipe;  //管道
  30. struct block_device *i_bdev;<span style="white-space:pre">    </span>//块设备
  31. struct cdev *i_cdev;<span style="white-space:pre">        </span>//字符设备
  32. };
  33. int i_cindex;
  34. __u32 i_generation;
  35. unsigned long i_state;
  36. unsigned long dirtied_when; /* jiffies of first dirtying */
  37. unsigned int i_flags;
  38. atomic_t i_writecount;
  39. void *i_security;
  40. };

i_mapping成员指向该文件所在的内存空间,要访问该文件的实际内容则通过该成员访问,address_space用于管理文件映射到内存的页面。

inode结构中的i_mapping成员的目的是缓存文件的内容,对文件的读写操作首先在i_mapping包含的缓存里寻找文件的内容,如果有缓存,对文件读写操作可以直接从缓存中获取,而不用再去物理硬盘读取,写操作也是首先写到缓存,然后在合适时机由缓存写到磁盘。

每个inode有一个i_list成员,用于将inode存储在一个链表中,根据inode状态,它有三种主要情况
(1)inode在内存中,未关联到任何文件,处于非活动状态
(2)inode在内存中,正在由一个或者多个进程使用,通常表示一个文件,此时i_count和i_nlink都大于0。
文件内容和底层元数据都于底层磁盘上的信息相同,
(3)inode处于活动使用状态,其数据内容已经改变,与存储介质上的内容不一样,这种状态的inode节点为脏的。

superblock是用于管理该文件系统中所有的inode相关信息的,比如增加inode,每个inode的起始地址等等。

如果一个分区大小为1GB,每个block为4KB,一个inode为128B,并假设平均每个文件占用2个block。那么inode的数量为1GB/(8KB+128B)=129055.5,即129055。那么inode table的大小为129055*128B=15.75MB。所以按照这样的规划,如果一个1GB的磁盘,那么格式化后,就已经有15.75MB被使用了。

3,查看文件inode信息的命令

stat命令

转载于:https://www.cnblogs.com/zhiliao112/p/4067833.html

[文件系统]文件系统学习笔记(一)---基本概念以及inode相关推荐

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  3. 网络流算法学习笔记——最大流问题基本概念和Ford-Fulkerson方法(标号法C++实现)

    屈婉玲<算法设计与分析>第2版第7章网络流算法学习笔记. 基本概念 最大流问题,相当于有从s到t的供水系统,每段路径都有限定流量,除了s.t两地外,每个中间点都不能滞留,从s流入多少,就从 ...

  4. 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...

  5. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  6. 冰冰学习笔记:进程概念

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  7. 认知无线电学习笔记1 物理层概念

    认知无线电学习笔记1 认知无线电物理层基础 Physical architecture of the cognitive radio PHY LAYER: 频谱感知(侦听) 接入技术 Radio fr ...

  8. 嵌入式之根文件系统原理学习笔记

    注:如下内容来自朱老师物联网大讲堂课件 1. 根文件系统概述 1.1 为什么需要根文件系统 (1)init进程的应用程序在根文件系统上 (2)根文件系统提供了根目录/ (3)内核启动后的应用层配置(e ...

  9. android 读写sd文件系统,SD卡FAT16文件系统的学习笔记

    一.读文件的流程读物理扇区0,得到引导扇(逻辑扇区0)的偏移地址. 读引导扇的内容,得到文件系统基本配置信息. 根据文件系统的基本配置信息计算FAT,FDT,数据簇的起始地址和大小. 根据要读的文件名 ...

  10. (1)《Head First HTML与CSS》学习笔记---HTML基本概念

    前言: 1.     这本书并没有面面俱到,涵盖所有内容,只提供作为初学者真正需要的东西:基本知识和信心.所以这不是唯一的参考书.(我买了一本<HTML5权威指南>作为参考书和这本一起看, ...

最新文章

  1. 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用
  2. lambda 表达式中的 this 与普通情况下的 this 指向
  3. C#基础系列——语法
  4. 扫地机器人水箱背景_水箱尘盒组件及扫地机器人的制作方法
  5. 带有数据库的动态级联菜单
  6. kibana界面汉化
  7. ECCV2020 | CPNDet:Anchor-free两阶段的目标检测框架,详解
  8. Base64编码解码(一)——介绍
  9. Unity如何查看当前内存使用情况
  10. c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
  11. Linux下的任务管理器-top命令
  12. 国产spfa瞎几把嗨
  13. H3C设备配置wifi
  14. (跟我一起来学区块链(1.8))之 区块链缩短了信任的距离
  15. 专注ASP.NET的博客【2012年度IT博客大赛分类推荐】
  16. C语言猜数字游戏的进阶设计
  17. ThinkPad T400s之Windows 7系统安装指南(转)
  18. 水果店的连环营销方案,只用半天时间就收款53万,你敢信?
  19. 比较出名的导航类网站
  20. 2021年美容师(中级)考试及美容师(中级)多少分及格

热门文章

  1. 设计模式之 抽象工厂 封装业务逻辑层和Dao层
  2. 2440裸机编程之四 外部中断
  3. android ScrollView实现上拉、下拉更新
  4. golang中的strings.HasSuffix
  5. muduo之TimerQueue
  6. 阿里云配置tornado无法访问
  7. lua中的魔法字符转义问题
  8. 静态局部变量和全局变量的区别!
  9. Nanopi NEO Air串口代码
  10. 解读main()方法中的String[] args