深入解析文件系统原理(inode,软硬链接区别)

第四阶段提升

时  间:2023年8月29日

参加人:全班人员

内  容:

深入解析文件系统原理

目录

一、Inode and Block概述

(一)查看文件的inode信息:stat

(二)Atime、Mtime、Ctime详解:

(三)操作示例:

二、目录文件的结构

三、Inode的号码

(二)查看文件的inode号码

(三)文件存储位置对照

(四)删除指定inode号所对应的文件

(五)查看文件系统的inode与block的信息

(六)格式化时指定文件系统的inode个数与block大小

(七)解决inode耗尽导致的磁盘故障

四、Linux文件系统软硬链接原理

(一)硬链接(hard link)

(二)软链接(soft link)

(三)硬链接与软链接的对比


一、Inode and Block概述

        文件储存在硬盘上,硬盘的最小储存单位叫“扇区”(sector),每个扇区拥有512字节。

        操作系统从硬盘上读取数据时,不会按照扇区的方式读取,这样读取效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(Block,由多个扇区的空间组成)。  

        这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个Block。Block存储文件数据。

        文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,比如文件的所属用户、文件所属组、文件的类型、文件的权限、文件的创建时间、文件的修改时间、文件的访问时间、文件使用的Block信息、文件的硬链接数、文件的大小等等属性信息。

这种储存文件元信息的区域叫做Inode。中文译名为“索引节点”,也叫i节点

        Inode  Block 文件系统组成的基本核心概念,文件系统是在分区格式化的时候形成的,文件系统负责组织文件在分区上的存放的。

注意:

Inode不包含文件名。文件名是储存在目录的目录项中。

一个文件必须占用一个inode,至少占用一个block。

(一)查看文件的inode信息:stat

[root@localhost ~]# stat 1.txt

 

(二)Atime、Mtime、Ctime详解:

英文

别称

中文翻译

何时修改

查看命令

Access

Atime

访问时间

读取

ls -lu

Modify

Mtime

修改时间

写入、修改

ls -l

Change/Create

Ctime

改变时间/创建时间

修改文件名、写入、修改、改权限、做链接

ls -lc

(三)操作示例:

1、读取文件内容,查看Atime的改变:

[root@localhost ~]# echo haha > a.txt

[root@localhost ~]# stat a.txt

[root@localhost ~]# cat a.txt

[root@localhost ~]# stat a.txt

 

2、文件写入内容,查看Mtime/Ctime的改变

[root@localhost ~]# stat a.txt

[root@localhost ~]# echo hehe > a.txt

[root@localhost ~]# stat a.txt

 

3、修改文件权限,查看Ctime的改变

[root@localhost ~]# stat a.txt

[root@localhost ~]# chmod 777 a.txt

[root@localhost ~]# stat a.txt

 

4、创建硬链接,查看Ctime的修改

[root@localhost ~]# stat a.txt

[root@localhost ~]# ln /root/a.txt /tmp/a.txt

[root@localhost ~]# stat a.txt

 

5、修改文件名,查看Ctime的改变

[root@localhost ~]# stat a.txt

[root@localhost ~]# mv a.txt aa.txt

[root@localhost ~]# stat aa.txt

 

6、Touch更新时间,三个时间全部修改

[root@localhost ~]# stat aa.txt

[root@localhost ~]# touch aa.txt

[root@localhost ~]# stat aa.txt

 

二、目录文件的结构

目录也是一种文件

        每个inode都有一个号码,操作系统用inode号码来识别不同的文件

        文件系统内部不使用文件名引用文件,而是使用inode号码来识别文件。对于文件系统来说,文件名只是inode号码便于识别的别称,文件名是目录的数据。

三、Inode的号码

(一)文件系统访问文件的步骤:

1.用户在目录中看到要访问的文件名

2.通过目录的数据找到这个文件名对应的inode号码

3.通过inode号码,获取inode信息(文件的元信息)

4.根据inode信息,找到文件数据所在的block,读出数据

inode一般为128字节或256字节,每个inode中都记录着文件所使用的block号,每条记录着block号的信息占用4字节。

inode中关于block号的记录一共包含有12个直接、1个间接、1个双间接和1个三间接。

        12个直接连接,共占用48字节磁盘空间,包含着12个直接指向block号的信息, 若此文件系统默认的block大小为4KB,则仅仅可以指向12*4=48KB大小的文件内容。

        然而我们的文件若较大时,则需要使用到更多的block,肯定要多于12个block,进而有间接、双间接和三间接。

        间接:指的是inode中所记录这4字节的内容,所指向一个block,这个block中存放的不是真是的文件内容,而是真实文件所存放位置的block号信息,若每个block大小为4KB,那么可以存放1024个block号信息,1个间接可以存放的文件大小为1024*4=4096KB

        双间接:则可以存放更大的文件内容,即在间接的基础上再进行间接,若此时block 大小为默认的4KB,则1个双间接可以存放的文件内容大小为:1024*1024*4=4096MB

        三间接:即在双间接的基础上在进行间接,若此时block大小为默认的4KB,则1个三间接可以存放的文件内容大小为:1024*1024*1024*4=4096GB

        也就是说,在一个block大小默认为4KB的文件系统中,一个文件最大存储可以达到48KB+4096KB+4096MB+4096GB,约为4100GB。

(二)查看文件的inode号码

ls -i 文件名

stat 文件名

示例:

[root@localhost ~]# ls -i aa.txt

[root@localhost ~]# stat aa.txt

 

(三)文件存储位置对照

 

SuperBlock 里面存储的文件系统所有Inode、block的相关信息。

        当一个用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它的inode,看该用户是否具有访问这个文件的权限。如果有,就指向相对应的数据block; 如果没有过,就返回Permission denied(拒绝访问)

(四)删除指定inode号所对应的文件

格式:find ./ -inum inode号 -exec rm -i {} \;

示例:当文件名中包含特殊符号时我们可以删除其inode号达到删除文件的目的

[root@localhost ~]# touch 'a b`_c  de ! 4|'.txt

[root@localhost ~]# ls -li

[root@localhost ~]# find ./ -inum 34097384 -exec rm -i {} \;

rm: 是否删除普通空文件 “./a b`_c  de ! 4|.txt”?  y

[root@localhost ~]# ls

 

从/root/目录下查找3天内修改的文件,并复制到/tmp下

[root@localhost ~]# ls /tmp/

[root@agent ~]# find /root/ -mtime -3 -a -type f  -exec cp {} /tmp \;

 

(五)查看文件系统的inode与block的信息

df -i 设备名(文件系统已挂载时查询,查询inode总数与已用数量)

dumpe2fs -h 设备名(文件系统无需挂载)

tune2fs -l 设备名(文件系统无需挂载)

示例:

[root@localhost ~]# df -i /data

[root@localhost ~]# umount /data

[root@localhost ~]# dumpe2fs -h /dev/sdb1

[root@localhost ~]# tune2fs -l /dev/sdb1

 

(六)格式化时指定文件系统的inode个数与block大小

mkfs.ext4 -N inode数 -b 块大小(单位字节) 设备名

示例:inode数设定为60000个,block大小为1KB

[root@localhost ~]# mkfs.ext4 -N 60000 -b 1024 /dev/sdb1

[root@localhost ~]# dumpe2fs -h /dev/sdb1 | grep -i "inode count"

[root@localhost ~]# dumpe2fs -h /dev/sdb1 | grep -i "block size"

 

(七)解决inode耗尽导致的磁盘故障

1、删除不使用的文件,配置磁盘配额

[root@localhost ~]# find /data -mtime -1 -exec rm -rf {} \;

[root@localhost ~]# rm -rf `find /data -mtime -1` `` = $()

[root@localhost ~]# find /data -mtime -1 |xargs rm -rf  

2.将文件备份,重新格式化此文件系统,指定较多的inode个数

[root@localhost ~]# df -i /test

[root@localhost ~]# touch /test/{1..28213}.txt

[root@localhost ~]# touch /test/hello.txt

使用第二种方法:

[root@localhost ~]# mkdir /backup

[root@localhost ~]# mv /test/* /backup/

[root@localhost ~]# umount /test

[root@localhost ~]# mkfs.ext4 -N 50000 /dev/sdb2 &> /dev/null

[root@localhost ~]# mount /dev/sdb2 /test

[root@localhost ~]# mv /backup/* /test

mv: overwrite `/test/lost+found'? y

[root@localhost ~]# touch /test/hello.txt

四、Linux文件系统软硬链接原理

(一)硬链接(hard link)

方法:ln 源文件 目标文件

特点:

        硬链接指向的文件inode号,新生成的硬链接文件的inode号与源文件的inode号相同,不可针对目录进行硬链接,必须在同一文件系统内。删除一个文件名,不影响另外一个的访问。

示例:

[root@localhost ~]# df -h /data

[root@localhost ~]# cd /data

[root@localhost data]# ln a.txt hardlink-a.txt

[root@localhost data]# ls -li

 

删除源文件,硬链接不受影响

[root@localhost data]# echo "abc" > a.txt

[root@localhost data]# rm -rf a.txt

[root@localhost data]# cat hardlink-a.txt

 

(二)软链接(soft link)

方法:ln -s 源文件或目录 目标文件或目录

特点:

软连接又被称为符号链接

        软链接指向的文件名,新生成的软链接文件的inode号与源文件不同,目录也可以生成软链接,软链接文件与源文件可以不在同一文件系统内,软链接文件的内容是源文件的路径,读取时系统会自动导向源文件路径,根据源文件找到文件内容,但当源文件移动或重命名时,软链接将报错。

示例:

[root@localhost data]# echo "soft test" > a.txt

[root@localhost data]# ln -s a.txt softlink-a.txt

[root@localhost data]# ll -i

 

重命名源文件,硬链接不受影响,但软链接失效

[root@huyang1 data]# ls -li

[root@huyang1 data]# ln a.txt hardlink.txt

[root@huyang1 data]# ls -li

[root@localhost data]# mv a.txt b.txt

[root@localhost data]# ls -li

[root@huyang1 data]# cat b.txt

[root@huyang1 data]# cat hardlink.txt

[root@localhost data]# cat softlink-a.txt 

 

(三)硬链接与软链接的对比

硬链接

软链接

指向

inode号

文件名

inode号是否相同

相同

不同

是否可以针对目录

不可针对目录

可以针对目录

可否跨文件系统

不可跨文件系统

可跨文件系统

删除、重命名、移动源文件

不受影响

失效

创建命令

ln 源文件 目标文件

ln -s 源文件或目录 目标文件或目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/94900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络aaaaaaa

差错检测 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate) 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111…

「Vue|网页开发|前端开发」02 从单页面到多页面网站:使用路由实现网站多个页面的展示和跳转

本文主要介绍如何使用路由控制来实现将一个单页面网站扩展成多页面网站,包括页面扩展的逻辑,vue的官方路由vue-router的基本用法以及扩展用法 文章目录 本系列前文传送门一、场景说明二、基本的页面扩展页面扩展是在扩什么创建新页面的代码,…

Linux内核源码分析 (3)调度器的实现

Linux内核源码分析 (3)调度器的实现 文章目录 Linux内核源码分析 (3)调度器的实现一、概述二、调度器数据结构1、task_struct中与调度有关的的成员2、调度器类3、就绪队列4、调度实体 三、处理优先级1、优先级的内核表示2、计算优先级3、计算负荷权重 四、核心调度器1、周期性调…

网络安全(黑客技术)学习手册

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

VBA技术资料MF48:VBA_在Excel中将列号与字母转换

【分享成果,随喜正能量】除非自己的认知获得了改变和刷新,否则,人们常说的“顺应自己的内心”,顺的不过是一颗旧心,一颗惯性的,充满了各种习性的套路之心。与“顺应自己的内心”恰恰相反,人要用…

自动化PLC工程师能否转到c#上位机开发?

成功从自动化PLC工程师转向C#上位机开发的经历可能因人而异,以下是一些分享的思路和建议:扩展编程技能:学习C#语言和相关的开发工具和框架,掌握语言的基础知识和常用的编程技巧。可以通过在线教程、培训课程、书籍等途径进行学习&…

c# modbus CRC计算器(查表法)

一、简介: 本案例为crc计算器,通过查表法计算出结果 1.窗体后台源代码 using Crc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text…

利用SSL证书的SNI特性建立自己的爬虫ip服务器

今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识,让你的爬虫ip服务器更加强大!无论是用于数据抓取、反爬虫还是网络调试,自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…

AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统

基于AI相关的技术来对一些重复性的但是又比较重要的工作来做智能化助力是一个非常有潜力的场景,关于这方面的项目开发实践在我之前的文章中也有不少的实践,感兴趣的话可以自行移步阅读即可:《AI助力智能安检,基于目标检测模型实现…

Java面试题—2023年8月24日—YDZH

2023-08-24 10:54:28 北京 yī do zh h 答案仅供参考,博主仅记录发表,没有实际查询,不保证正确性。 面试题: 1、请你谈谈关于 Synchronized 和 lock ? 2、请简单描述一下类的加载过程?类加载器有几个种,分别作用是什…

DC电源模块不同的尺寸可以适应实际应用场景

BOSHIDA DC电源模块不同的尺寸可以适应实际应用场景 DC电源模块是现代电子设备的必备部件之一,其可提供稳定的直流电源,保证电子设备正常运行。DC电源模块尺寸的选择直接影响到其适应的应用场景及其性能表现。本文将从尺寸方面分析DC电源模块的适应性&a…

自动化测试工具Selenium的语法续.

OK,那么上篇博客我们介绍了如何搭建基于Javaselenium的环境,并且使用selenium的一些语法给大家演示了如何进行自动化测试的案例,那么本篇博客我们来继续学习selenium的一些其他的比较重要的语法,感谢关注,期待三连~ 目…

港联证券:游资爆炒中电环保,还有谁在蹭核污染防治概念?

8月28日,核污染防治概念股持续大涨,建工修复(300958.SZ)、捷强配备(300875.SZ)、东方园林(002310.SZ)、华盛昌(002980.SZ)等涨停。 中小市值的概念股成为游资…

SCI论文创新思路

SCI论文创新思路 一、 创新的分类1、算法创新2、架构创新3、迁移创新4、思想创新5、方法创新6、组合创新 二、组合创新的必要性三、组合创新的流程四、组合创新举例1、组合创新公式2、生活中的例子3、关于CV的例子4、魔改的方法 一、 创新的分类 1、算法创新 比如提出CNN、LS…

PDF如何转ppt?PDF转ppt的方法

PDF是一种广泛应用于文档传输和存储的格式,然而,在某些情况下,我们可能需要将PDF文件转换为PPT,以便更加灵活地编辑和展示内容。那么,PDF如何转ppt呢?在本文中,我们将介绍几种常用的方法和工具&#xff0c…

Java“牵手”1688商品跨境属性数据,1688API接口申请指南

1688平台商品详情跨境属性数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取1688商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片,重量,详情描述等详细信息 。 获取商品详情接口API是一种用于…

Linux 终端命令行 产品介绍

Linux命令手册内置570多个Linux 命令,内容包含 Linux 命令手册。 【软件功能】: 文件传输 bye、ftp、ftpcount、ftpshut、ftpwho、ncftp、tftp、uucico、uucp、uupick、uuto、scp备份压缩 ar、bunzip2、bzip2、bzip2recover、compress、cpio、dump、gun…

ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红

a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景,都是后端返回html结构,前端直接渲染实现,但是如果需要前端处理的话,实现也是很简单的,接下来我直接上应用场景吧 应用场景就是通过关键…

EXCEL数据处理

1. 自定义数字格式 选中数字--右键--设置单元格格式--自定义--shang ↑ 2.条件格式 如果。。。。就。。。。 选中某列--开始--条件格式--突出显示--大于/小于/等于。。。--设置为(可选自定义格式) 选中区域--条件格式--清除规则--清除所选单元格的规…

Java中线程的7大状态的基本介绍

在线程的生命周期中,有七种不同的状态,这些状态描述了线程在不同阶段的情况。Java中线程的七大状态如下: 新建(New): 当创建一个线程对象时,线程就处于新建状态。此时,线程已经被创建…