当前位置: 首页 > news >正文

Linux内核级文件系统分析——文件系统入门内核级文章!

bit::Shadow✧(≖ ◡ ≖✿目录物理机械磁盘主体部分抽象图示磁盘LBALogical Block Addressing定址法柱面CHS定址法CHS-LBA*文件Access Modify Change内核Linux文件属性内容分析属性内容☆☆☆内核中文件管理整体的分治管理链路核心关系Super BlockGDTGroup Descriptor Table块组描述符表块组内部元素*文件名在哪链接软链接悬空链接⚠️ 恢复前最重要的第一原则硬链接为什么不能对目录建立硬链接呢“ . ”的引用计数为什么是2gitee物理机械磁盘目标探寻物理磁盘内数据的组织方式。硬盘读取是如何实现的尽量高效读取主体部分抽象图示传动臂统一控制多个磁头臂磁盘磁盘上以“同心圆”的形式组织数据每个同心圆称为磁道磁道常被分作8分份每份称为一个“扇面”。在读/写磁盘数据时磁头精准定位于高速旋转的(每秒120转左右)磁盘特定磁道的特定扇面通过识别扇面上凸起的类型来读写信息。LBALogical Block Addressing定址法柱面柱面扇区组成类似于“数组”的区块结构从而据此来实现初步定址法“CHS定址法”。CHS定址法例1号柱面Cylind、2号磁头header及3号扇区Sector通过三者编号-构成“CHS定址法”。CHS-LBA原理“分治思想”将大块数据逐步划分渐渐缩小。OS操作系统访问磁盘不以扇区为单位而是以“块”为单位一般是4KB的。此“块”是独立于磁盘的扇区等的是操作系统自定义大小的规划结果。文件属性查询指令stat*文件Access Modify Changestat [文件名]Access读取文件内容less cat headModify修改文件内容cat vimChange文件属性改变chmod chown mv注意随Modify数据改变Change对应数据也通常会改变。像文件大小修改时间等元数据改变。内核Linux文件属性内容分析文件 文件内容文件属性。属性组织形式——struct inode{ // ………… }struct inode { //type //size //pri //………… int inode_number; // inode编号-文件/目录的身份证号 }inode查询方式ls -i # i 是Linux下文件/目录的inode查询选项。内容多级指针管理Data Blocks来扩展内容存储量指针类型指向内容直接指针数据块12*4KB 48KB一级指针指向存有直接指针的块256*4KB 1MB二级指针指向存在一级指针的块256*1MB 256MB三级指针指向存在二级指针的块256*256MB 64GB☆☆☆内核中文件管理整体的分治管理链路分治的目的将大块数据逐步划分为更小的内存块。Super Block就是作为“更小的内存块”存在核心关系Super Block功能作为文件系统的身份证类似于一本书的总目录/版权页记录文件系统的全局信息块大小、总块数、空闲块数、inode总数、空闲inode数、每块组包含的块数等。内核挂载文件系统时首先读取它。位于Block Group内但不一定可以存储全部的Block Group的目标特定信息只有一份。有备份GDTGroup Descriptor Table块组描述符表功能基于文件系统把磁盘分成若干块组Block Group分块信息就存储于GDT中。记录该块组中四个关键结构的起始块号inode Bitmap、Data Block Bitmap等以及数据块区域的起始位置。Super Block描述整体有多大GDT描述“每组东西的分配位置”。块组内部元素Ⅰ• inode Bitmap 一个位图每位对应一个inode槽1 已分配0 空闲。创建文件时内核扫描它找一个空位。Ⅱ• Data Block Bitmap同理每位对应一个数据块管理数据块的占用状态。Ⅲ• inode Table一张固定大小的表每行是一个inode存储文件的元数据权限、大小、时间戳、uid/gid以及若干块指针直接指针*12一/二/三级间接指针。Ⅳ• Data Blocks存放真实内容。对普通文件是字节流对目录文件是文件名-inode号的映射表对应间接指针是下一级块号的列表。☆☆☆查找一个文件的完整路径就是Super Block确认块大小--GDT找到对应块组的inode Table位置--读取inode Table位置--读取inode--顺着块指针--读取Data Blocks*文件名在哪在Linux文件系统内文件名不属于inode而是存在于“目录”这个特殊文件内。链接“链接”是针对于目录、文件单元各自的独立链接。例如通过链接可实现文件路径的快速切换不同目录下可执行文件的直接运行。链接情况查询方式 ls -i软链接链接性质建立后操作单个对象数据自动同步到另一对象。创建方式ln -s [路径/文件] [新对象]删除方式unlink [对象名]以文件链接为例软链接后链接目标加以“-”表示链接对象ln -s test.cc test由于文件无后缀所以失去属性打开文件链接后对对象操作相互同步在test文件下新增一行保存退出发现test.cc下已同步。软链接可以看作为一种“快捷方式”通过访问此快捷方式就可以对原对象操作。作为一个独立的文件依据inode不同上图中新链接文件1052423 链接对象1052424同样的对于目录操作也是如此不同目录下指定进行链接。悬空链接⚠️ 恢复前最重要的第一原则立刻停止任何写入操作包括不要创建新文件、不要下载东西、不要编辑和保存其他文件、甚至尽量避免在当前目录下执行大型命令。任何写入行为都可能把你想恢复的test.cc内容给“覆盖”掉一旦覆盖神仙也难救了。硬链接创建方式ln [文件] [目标文件] //软链接去除“-s”的结构硬链接创建的文件本质上并不是一个独立的文件而是原链接文件的拷贝对象从“二者inode一致、甚至创建时间都继承自原对象可以看出”。unlink直接对ccode.c操作发现inode没有改变这也符合预期。且“2-1”可以发现若我们再次进行创建链接1--2--3---4渐增我们有理由推断这其实就是“引用计数”的具体应用。因此由于硬链接的unlink性质我们常用硬链接作“备份文件”的作用。为什么不能对目录建立硬链接呢易形成“环装链路”当我们再执行文件时由于inode一样。就可能因为查找路径时的多叉树结构而无限循环因此不允许对目录间建立硬链接。“ . ”的引用计数为什么是2自己创建时 . 1 1 2感谢观看求关注
http://www.zskr.cn/news/1410341.html

相关文章:

  • 如何快速部署跨平台翻译工具:完整配置指南
  • 2026年 东莞扩散膜厂家推荐榜单:PET/LED/背光纸扩散膜,超薄匀光与光学性能深度解析 - 品牌企业推荐师(官方)
  • 构建智能体马具:子目录CLAUDE.md文件提升项目协作与AI协同效率
  • 使用 Taotoken 聚合平台后,我的 API 调用延迟与稳定性观测记录
  • 避坑指南:给全志V3s开发板(荔枝派/BingPi)编译U-Boot和Linux内核时,那些容易踩的‘坑’
  • react-native-google-analytics-bridge数据层事件推送:提升营销分析精准度的5个方法
  • 解密paraphrase-albert-small-v2模型架构:AlbertModel与均值池化的完美结合
  • 独立开发者如何借助Taotoken的Token Plan降低项目长期成本
  • Arduino-ESP32终极指南:如何用Arduino轻松开发ESP32物联网项目
  • 保姆级教程:在Ubuntu 18.04上用OpenCV C++搞定双目摄像头测距(附完整项目源码)
  • 前端工程师的云端进化:从浏览器到边缘计算的范式转移
  • bert-base-italian-uncased实战:10个意大利语NLP应用场景
  • 企业级龙虾 Claw 产品怎么选?团队能不能用龙虾?
  • IndoBERT Large P2 OpenMind社区贡献指南:如何参与项目开发
  • 目前好用的 AI 视频创作平台有哪些?2026 实用平台盘点
  • 从《监狱来的妈妈》事件谈电影审查的权责统一问题
  • 浏览器Cookie管理新方案:本地化导出工具Get-cookies.txt-LOCALLY深度解析
  • 在Ubuntu 18.04上搞定奥比中光Astra(乐视LeTMC-520)的ROS驱动:从编译到获取RGBD图像的全流程避坑
  • Windows防撤回神器:RevokeMsgPatcher完整使用指南
  • 如何永久保存微信聊天记录:WeChatMsg完整指南让您的数字记忆永不消失
  • 手把手教你:MATLAB硬件支持包离线安装与本地化部署全攻略
  • 3种场景下的Playnite便携版配置:跨设备游戏库管理完全指南
  • 现代计算系统性能优化:地址翻译瓶颈与Revelator技术解析
  • 2026年评价高的台州丝扣闸阀/台州磁性锁闭闸阀/内丝闸阀/黄铜闸阀稳定供货厂家推荐 - 行业平台推荐
  • Claude Skills与Commands实战解析:AI编程搭子的自动化利器
  • Vue3项目实战:给vis-timeline时间轴加上中文提示和智能冲突检测
  • 如何15分钟完成OpenCore EFI配置:终极黑苹果自动化工具指南
  • 5分钟从零到一:Deep-Live-Cam实时AI换脸系统的终极实践指南
  • GD32F103 ADC实战:用PS2摇杆做个遥控器,同步模式+DMA+定时器触发全流程解析
  • i.MX6ULL SDK 2.2工程结构深度解析:从boards到middleware,新手如何快速找到需要的代码?