[文件系统]文件系统学习笔记(一)---基本概念以及inode
1,文件系统基本概念
文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。
2,硬链接和软链接的区别
硬链接和软链接的区别
– 符号链接
– ln –s file1 file2
• 目录项,内容为指向文件名的指针,并不存在其他数据。目标文件删除时,符号链接仍然继续保持。使用了一个独立的inode。Inode的数据段包含了一个字符串,给出了链接目录的路径。(相当于windows中的快捷键)
– 硬链接
– ln file1 file2
• 与原文件共用一个inode,增加引用计数。新建或者删除硬链接,则相应的增加或减小该引用计数。为0时,删除源文件;
• dentry还是不一样,inode是一样
3,struct inode结构体
这里虚拟文件系统里的inode节点是指内存里的inode节点,包含了一些实际硬盘上的inode节点所没有的信息。
- <pre name="code" class="cpp"><fs.h>
- struct inode {
- struct hlist_node i_hash;
- struct list_head i_list;
- struct list_head i_sb_list;
- struct list_head i_dentry;
- unsigned long i_ino; //每个inode的唯一编号
- atomic_t i_count;<span style="white-space:pre"> </span>//记录使用该inode的进程的个数
- unsigned int i_nlink;<span style="white-space:pre"> </span>//使用该inode的硬连接的个数
- uid_t i_uid;<span style="white-space:pre"> </span>//文件的user
- gid_t i_gid;<span style="white-space:pre"> </span>//文件的group
- dev_t i_rdev;<span style="white-space:pre"> </span>//当该inode表示设备文件的时候表示与哪个设备文件通信,只是一个数字
- unsigned long i_version;
- loff_t i_size; <span style="white-space:pre"> </span>//文件的长度,以字节大小表示
- struct timespec i_atime; //文件最后访问时间
- struct timespec i_mtime;<span style="white-space:pre"> </span>//文件最后修改时间
- struct timespec i_ctime; //最后修改inode结构本身的时间
- unsigned int i_blkbits;
- blkcnt_t i_blocks;<span style="white-space:pre"> </span>//文件按块计算的长度
- umode_t i_mode;<span style="white-space:pre"> </span>//文件的权限
- struct inode_operations *i_op;<span style="white-space:pre"> </span>//inode操作,创建连接,文件重命名,在目录下创建文件,删除文件
- const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ //文件内容的操作,设置文件位置指针等等
- struct super_block *i_sb;
- struct address_space *i_mapping;
- struct address_space i_data;
- struct dquot *i_dquot[MAXQUOTAS];
- struct list_head i_devices;
- union {
- struct pipe_inode_info *i_pipe; //管道
- struct block_device *i_bdev;<span style="white-space:pre"> </span>//块设备
- struct cdev *i_cdev;<span style="white-space:pre"> </span>//字符设备
- };
- int i_cindex;
- __u32 i_generation;
- unsigned long i_state;
- unsigned long dirtied_when; /* jiffies of first dirtying */
- unsigned int i_flags;
- atomic_t i_writecount;
- void *i_security;
- };
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相关推荐
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- HTML/CSS学习笔记01【概念介绍、基本标签】
w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...
- 网络流算法学习笔记——最大流问题基本概念和Ford-Fulkerson方法(标号法C++实现)
屈婉玲<算法设计与分析>第2版第7章网络流算法学习笔记. 基本概念 最大流问题,相当于有从s到t的供水系统,每段路径都有限定流量,除了s.t两地外,每个中间点都不能滞留,从s流入多少,就从 ...
- 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...
前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...
- TCP/IP详解学习笔记(1)-基本概念
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...
- 冰冰学习笔记:进程概念
欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...
- 认知无线电学习笔记1 物理层概念
认知无线电学习笔记1 认知无线电物理层基础 Physical architecture of the cognitive radio PHY LAYER: 频谱感知(侦听) 接入技术 Radio fr ...
- 嵌入式之根文件系统原理学习笔记
注:如下内容来自朱老师物联网大讲堂课件 1. 根文件系统概述 1.1 为什么需要根文件系统 (1)init进程的应用程序在根文件系统上 (2)根文件系统提供了根目录/ (3)内核启动后的应用层配置(e ...
- android 读写sd文件系统,SD卡FAT16文件系统的学习笔记
一.读文件的流程读物理扇区0,得到引导扇(逻辑扇区0)的偏移地址. 读引导扇的内容,得到文件系统基本配置信息. 根据文件系统的基本配置信息计算FAT,FDT,数据簇的起始地址和大小. 根据要读的文件名 ...
- (1)《Head First HTML与CSS》学习笔记---HTML基本概念
前言: 1. 这本书并没有面面俱到,涵盖所有内容,只提供作为初学者真正需要的东西:基本知识和信心.所以这不是唯一的参考书.(我买了一本<HTML5权威指南>作为参考书和这本一起看, ...
最新文章
- 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用
- lambda 表达式中的 this 与普通情况下的 this 指向
- C#基础系列——语法
- 扫地机器人水箱背景_水箱尘盒组件及扫地机器人的制作方法
- 带有数据库的动态级联菜单
- kibana界面汉化
- ECCV2020 | CPNDet:Anchor-free两阶段的目标检测框架,详解
- Base64编码解码(一)——介绍
- Unity如何查看当前内存使用情况
- c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
- Linux下的任务管理器-top命令
- 国产spfa瞎几把嗨
- H3C设备配置wifi
- (跟我一起来学区块链(1.8))之 区块链缩短了信任的距离
- 专注ASP.NET的博客【2012年度IT博客大赛分类推荐】
- C语言猜数字游戏的进阶设计
- ThinkPad T400s之Windows 7系统安装指南(转)
- 水果店的连环营销方案,只用半天时间就收款53万,你敢信?
- 比较出名的导航类网站
- 2021年美容师(中级)考试及美容师(中级)多少分及格