news 2026/6/10 1:29:20

Linux文件操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux文件操作

磁盘

想知道文件,我们需要知道文件的存储地。
也就是磁盘
机械磁盘是计算机中唯一的一个机械设备。也就是外设
磁盘的物理结构

扇区:磁盘存储数据的基本单位,512字节块设备
如何定义一个扇区
先定位磁头,确定磁头要访问哪个柱面。定义一个扇区,CHS地址定位
文件=内容+属性,为非就是占据扇区数量的问题。能定位一个扇区,能定位多个扇区吗?
磁头数:每个盘片一般都头上下两面,分别对应一个磁头,一共两个磁头
磁道数:磁道是从盘片外圈往内圈编号0磁道,1磁道
柱面数:磁道构成柱面,数量上等同于磁道个数
扇区数:每个磁道都被切成多个扇形区域
圆盘数:盘片数量
所谓CHS,就是柱面cylinder,磁头head,扇区sector
磁盘的逻辑结构
磁带上面可以存储数据,磁带顺直就形成了线性结构
磁盘本质是硬质的,但是可以堪称卷在一起的磁带。磁盘的逻辑结构类似于卷
每一个扇区都有一个下标,我们叫做LBA(logical block address)地址,就是线性地址
LBA转成CHS,chs如何转成LBA
OS只需要LBA就行,LBA转成CHS,CHS转成LBA的话,磁盘有这个能力
CHS&&LBA
磁头数“每磁道扇区数”=单个柱面的扇区总数
LBA转CHS
柱面号C=LBA//磁头数每磁道扇区数
磁头号H=(LBA%(磁头数*每磁道扇区数))//每磁道扇区数
扇区号S=(LBA%每磁道扇区数)+1

引入文件系统

引入块的概念
其实硬盘是典型的块设备,操作系统读取硬盘数据的时候,其实不会一个个的读取,效率太低,而是一次读取多个扇区,这多个扇区的集合就是一个块
磁盘的每个分区都是被一个个划分出来的块,一个块的大小是由格式化的时候决定第,最常见的是4Kb,连续八个扇区组成一个块,块是文件存取的最小单位。
磁盘那是一个餐位数组,我们看成一维数组,下标就是LBA,每个元素都是扇区。
每个扇区都有LBA。8个扇区一个块,,每个块的地址都能算出来
直到LBA:块号=LBA/8
知道块号:LBA=块号*8+n
引入分区概念
其实磁盘可以分为多个分区。WIndows来看的话,磁盘会分成C,D,E。这就是分区,实际上就是格式化。
柱面是分区的最小单位。可以利用参考柱面号码的方式进行分区。
inode概念
文件=数据+属性,我们使用ls -l的时候看到除了看到文件名,还能看到文件元数据
inode可以成为索引节点,这是储存文件元信息的区域

ext2文件系统

宏观认识:所有的准备工作都已经做完,我们想要在硬盘上存储文件,必须把硬盘格式化为某种格式的文件系统。,才能存储文件,文件系统的目的就是管理和存储硬盘中的文件。
block group
ext2文件系统会根据分区大小划分为多个block group。而每个block group都有相同的结构组成。
块组内部结构
超级块
存放文件系统本身的结构信息,描述整个分区的文件系统信息,记录的信息主要有,block和inode的总数量。,未使用的block inode的大小。最近一次挂载的时间,最近一次写入数据的时间。最近一次检验磁盘的时间等其他文件系统的相关信息,super block的信息被破坏,可以说整个文件系统结构都被破坏了
GDT 块组描述表。描述块属性信息。整个分区分成多个快组就对应有多少个块组描述符,每个快组描述符存储一个块组的描述信息。如在这个块组中从哪里开始是inode table。从哪里开始是data blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有⼀份拷⻉。
块位图
block bitmap中俱卢哲data block中哪个数据块已经被占用,哪个数据块中没有被占用
3-3-4inode位图(InodeBitmap)
• 每个bit表⽰⼀个inode是否空闲可⽤。
3-3-5i节点表(InodeTable)
• 存放⽂件属性如⽂件⼤⼩,所有者,最近修改时间等
• 当前分组所有Inode属性的集合
• inode编号以分区为单位,整体划分,不可跨分区
data block
数据区:存放文件内容。也就是一个个的block,根据不同的文件类型有以下情况
对于普通文件,文件数据存储在数据块中
block号按照分区进行,不能跨分区
inode和datablock映射
存储属性:内阁先找到一个空闲的节点。内核把文件记录在此
存储数据:该文件需要存储在三个磁盘块。内核找到了三个空闲块。将内核缓冲区的第一块数据复制到300,下一块复制到500.以此类推。
记录分配情况:文件内容按照顺序存放。内核在Inode的磁盘分布区记录了上述快列表
添加文件名到目录:新的文件名abc。linux如何在当前目录中即在此文件,内核将入口添加到目录文件。文件名和indoe之间的对应关系将文件名和文件内容及其属性连接起来
目录和文件名

访问目录,都是用的文件名,inode呢?
目录也是文件,磁盘没有目录的概念,只有文件属性+文件内容的概念
目录的属性不用多说,内容保存的是文件名和inode的映射关系
访问文件必须打开当前目录,根据文件名,获得对应的inode号。然后进行文件访问。
访问文件必须知道当前工作目录。本质是不许能打开当前工作目录。查看目录文件内容

路径解析
打开当前目录文件,查看当前工作目录文件的内容,当前工作目录不也是文件吗,我们访问当前工作目录也是只知道当前工作目录的文件名。,要访问他,不也得知道当前工作目录的inode吗
所以要打开当前工作目录的上级目录。类似递归。需要把路径中所有的目录全部解析

路径缓存:
linux磁盘中存在目录吗:不,目录的本质也是文件,只保存文件属性+文件内容
访问热河文件都要从目录开始路径解析吗:原则上是,但是很慢,linux会缓存历史路径结构
linux目录的概念是怎么产生的
打开的文件是目录的话,OS自己在内存中进行路径维护
每个文件其实都要有自己的dentry结构,包括普通文件,这种所有被打开的文件就可以在内存中形成树形结构
整个树形节点也会同时隶属于Hash,方便快速查找
更重要的是,这个树形结构整体构成了linux的路径缓存结构,打开访问任何文件,都会在这棵树下根据路径进行查找。找到就返回属性inode和内容。没找到就从磁盘加载路径,添加dentry结构,缓存新路径

挂在分区
inode不能跨分区,linux的分区很多啊?如何看到自己所在分区
分区写入文件系统,无法直接使用,需要和指定目录关联,进行挂载才能用

软硬连接

硬连接中 我们看到,真正找到磁盘上文件的并不是文件名,而是inode其实在linux中可以让多个文件名对应同一个Inode
软连接:硬链接是inode引用另一个文件,软连接而是通过名字进行引用另一个文件。但是。新的文件和被引用的文件inode不认同,常见上可以看成一个快捷方式
软硬连接对比:软连接是独立文件,硬连接是只是文件名和目标文件Inode的映射关系
./…是硬连接 文件备份时硬连接
类快捷方式则是软连接

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:29:02

实力登榜!瞬维智能入选2026浙商AI智能体TOP40

近日,2026第23届浙商(投融资)合作周在杭州隆重举办,杭州瞬维智能科技有限公司(以下简称瞬维智能)凭借突出的技术创新能力与产业落地成果,成功入选2026浙商AI智能体TOP40榜单,与阿里巴巴、钉钉、宇树科技等省…

作者头像 李华
网站建设 2026/6/10 1:27:13

CAS和Java原子操作类

一、CAS:无锁同步的"原子操作"1. 什么是CAS?本质:CPU硬件层面的原子指令,能保证"比较交换"两步操作不可分割(不会被其他线程打断)。核心逻辑:有三个参数——内存中的当前值…

作者头像 李华
网站建设 2026/6/10 1:20:25

Python习题集:程序29

程序29题目:给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。代码 :def digit(number):"""得到正整数位数"""return len(str(number))def print_digit(numbe…

作者头像 李华
网站建设 2026/6/10 1:18:59

LLM智能体自进化技术:EvoSC框架解析与实践

1. 自进化LLM智能体的技术挑战与EvoSC框架概述大型语言模型(LLM)智能体在复杂任务处理中展现出惊人潜力,但其静态特性成为制约发展的关键瓶颈。传统智能体系统在任务完成后即"清零记忆",如同每次考试都从零开始复习的学…

作者头像 李华
网站建设 2026/6/10 1:15:37

bpy 缩放模型

缩小1000倍,单位从m,换成mmimport bpy import os import glob from mathutils import Vectordef clear_scene():"""清空当前场景的所有物体"""# 选择所有物体bpy.ops.object.select_all(actionSELECT)# 删除所有选中的物体…

作者头像 李华
网站建设 2026/6/10 1:14:37

机器学习之聚类算法-KMeans

聚类算法,根据样本之间的相似性,将样本划分到不同的类别中。聚类算法有: K-means聚类、层次聚类、 DBSCAN聚类、谱聚类等,其中,主要以K均值K-Means算法最为常用,k-Means是一种无监督学习的聚类算法&#xf…

作者头像 李华