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

news2025/1/18 9:03:03

第四阶段提升

时  间: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 源文件或目录 目标文件或目录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高精度 低纹波|12A大电流电源解决方案,网通、视频显示、国产PC行业多领域适用

随着科技的快速发展,各行业产品都在不断迭代和加速升级,TV产品也不例外。TV产品的演变一直朝着大尺寸、高分辨率的方向发展,从2K到4K再升级至8K,每一次的升级都为消费者带来更好的视觉体验。 从技术层面来看,“8K大尺寸…

RocketMQ消息查询

区别于消息消费:先尝后买 尝就是消息查询 买:消息的消费 RocketMQ支持按照下面两种维度("按照Message ld查询消息"、"按照Message Key查询消息")进行消息查询。 1按照Messageld查询消息 Msgld总共16字节,包含消息存储…

[Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)

After Effects是动画图形和视觉效果的行业标准。由运动设计师、平面设计师和视频编辑用于创建复杂的动画图形和视觉上吸引人的视频。 创建动画图形 使用预设样式为文本和图形添加动画效果,或逐帧调整它们。编辑、添加深度、制作动画或转换为可编辑的路径&#xff…

冠达管理:美股涨了!“越南特斯拉”市值直追丰田!这一论坛将召开

当地时间8月28日,美股三大股指团体收涨,到收盘,道指报34559.98点,涨0.62%;标普500指数报4433.31点,涨0.63%;纳指报13705.13点,涨0.84%。 高盛上星期五发布的数据显现,在英…

聚焦数据安全,“2023数据安全平台神兽企业”调研正式启动

当下,数字经济正蓬勃发展,数据已成为关键驱动力,而数据安全是保障数据要素价值的前提。数据安全建设也正在从孤立的数据安全产品过渡到数据安全平台,以更大程度促进数据的业务利用率和价值。 为了更好洞察和反映当前数据安全平台…

开发工具——IDE安装 / IDEA子module依赖导入失败编译提示xx找不到符号 / IDEA在Git提交时卡顿

近期换了工作电脑,公司的IT团队不够给力,不能复制电脑系统,所以又到了需要重装IDE配置开发环境的时候了;在安装和导入Java编译器IDEA的时候遇到一些"棘手"问题,这里整理下解决方法以备不时之需; …

bootloader串口更新程序[瑕疵学习板]

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、储备知识二、程序步骤2.程序展示1.bootloader2.然后是主运行函数总结前言 很久没有更新文章了。最近工作太忙,没有学习很多的知识,然后这两天不忙了,就学习了一下bootloader的程序升级…

hive lateral view 实践记录(Array和Map数据类型)

目录 一、Array 1.建表并插入数据 2.lateral view explode 二、Map 1、建表并插入数据 2、lateral view explode() 3、查询数据 一、Array 1.建表并插入数据 正确插入数据: create table tmp.test_lateral_view_movie_230829(movie string,category array&…

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于水基湍流算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.水基湍流优化BP神经网络2.1 BP神经网络参数设置2.2 水基湍流算法应用 4.测试结果:5…

搭建自己的ChatGPT智能问答,HelpLook ChatBot 正式上线!

基于已有内容的站点或现成文档 零代码快速导入 即可生成自己专属的ChatGPT智能问答机器人 HelpLook ChatBot,正式发布上线! 只需连接您的数据源,HelpLook 就能为您的数据创建一个类似 ChatGPT 的聊天机器人。您可以将它作为小工具以 JS 的…

【计算机网络】TCP 的三次握手和四次挥手

TCP 是面向连接的,面向连接就是数据通讯的时候需要进行三次握手,断开通讯的时候需要进行四次挥手。 1.seq(sequence number),序列号,随机生成的 2.ack(acknowledgement number),确认号,ackseq1 3.ACK(ackno…

Could not autowire. No beans of ‘DiscoveryClient‘ type found.

一、导错了包 DiscoveryClient对应有两个包: org.springframework.cloud.client.discovery.DiscoveryClient; com.netflix.discovery.DiscoveryClient; 目前导入的包是: 改成第一个包,发现不再报红了。

数据安全治理方案

数据安全能力建设工作并非从零开始,大部分组织在此前或多或少已有一些安全体系,基本上是围绕 信息系统和网络环境开展安全保护工作,主要聚焦在信息安全和网络安全;而数据安全是以数据为核心, 围绕数据安全生命周期进行…

【Java】知识点回顾

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理后端技术的Java的知识点以及回顾Java基础🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下&…

SpringBootWeb 登录认证[Cookie + Session + Token + Filter + Interceptor]

目录 1. 登录功能 1.1 需求 1.2 接口文档 1.3 登录 - 思路分析 1.4 功能开发 1.5 测试 2. 登录校验 2.1 问题分析 什么是登录校验? 我们要完成以上登录校验的操作,会涉及到Web开发中的两个技术: 2.2 会话技术 2.2.1 会话技术介绍…

移动云发布长三角信创云电脑资源池

8月27日,2023长三角算力发展大会在苏州举行。中国移动云能力中心与江苏移动苏州分公司同期联合举办“移动云算力网络分论坛”,与各界领导、行业专家、领军企业家等分享了移动云算力调度能力新型应用、移动云“五岳”量子计算云平台的最新进展&#xff0c…

2023年Twitter营销应该知道的一些数据

2023 年的 Twitter月活跃用户数量达到了 3.539 亿。根据专家的最新估计数据(eMarketer,2022 年),这一数字在前一年回升了 3.9%,在全球社交媒体用户总数中占比为 9.4 %。 明显可以看出,马斯克的收购对 Twit…

冠达管理:核污染防治板块热度不减,建工修复等多只个股涨停

日本福岛核污染水排海引发商场担忧,核污染防治概念股表现持续活跃。 8月28日,建工修复(300958.SZ)、中电环保(300172.SZ)、捷强配备(300875.SZ)20CM强势涨停,中广核技&a…

实现人物关系图还在用Echarts吗?快试试relation-graph

关于relation-graph 支持Vue和React的 关联关系图谱组件,可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱,可提供多种图谱布局,包括树状布局、中心布局、力学布局自动布局等。官网 安装使用 一,通过nodejs开发v…

课程表00

题目链接 课程表 题目描述 注意点 prerequisites[i] 中的所有课程对 互不相同prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 binumCourses表示这个学期必须选修 numCourses 门课程prerequisites[i].length 2 解答思路 最初想到的是使…