【Linux基础IO】磁盘的结构、文件系统与inode、软硬链接

目录

磁盘的物理存储结构

磁盘的逻辑结构

文件系统与inode

硬链接

软链接

关于目录文件


磁盘的物理存储结构

磁盘是计算机中唯一的机械硬件设备,由磁头,盘面,磁道,扇区这四部分对磁盘上的数据进行增删查改操作。盘面上存储的是二进制数据,盘面是双面的且盘面在工作是高速转动,磁头会左右摆动但不接触盘面,防止磁头刮花盘面破坏数据。

磁盘被访问的基本单元是扇区512byte,我们可以把磁盘看作由无数个扇区构成的存储介质。要把数据存到磁盘,就必先定位一个扇区:哪一个盘面(定位用哪个磁头);盘面上的哪个磁道;磁道上的哪个扇区。

CPU有寄存器,其他外设也有,磁盘里也有寄存器:

磁盘的逻辑结构

我们可以把磁盘的逻辑结构是线性的,相当于一个连续的数组,要想访问那个扇区直接根据位图的计算方法获取相应的数组索引,通过索引就可以访问要访问的扇区。

 假设每个盘面有20000个扇区,每个盘面有50个磁道,每个磁道有400个扇区。

现在扇区的编号是28888,我们就可以确定28888/20000=1,则该扇区在第二个盘面上,28888%20000=8888,8888/400=22,8888%400=88,因此该扇区是第二个盘面上的第23个磁道上的第88个扇区。

文件系统与inode

假如一个磁盘有800G的内存,应该对磁盘内存进行分区再分组管理其内存。

按照这样现分区再分组,管理好这分组后的10G内存就可以将200G内存管理好进而管理好整个磁盘的内存。

文件系统结构如下图所示:

理解文件系统中的各区域:

Super Block:储存整个分区的内存使用情况和文件系统的基本信息。如:一共有多少个分组、每个分组的内存大小、每个组的inode数量、每个组的block数量、还剩余多少内存块、每个组的起始inode、文件系统的类型与名称等。一般Super Block会少数且分散的存在于磁盘内存中,防止单个Super Block数据被破坏导致整个分区文件系统异常。

Group Descriptor Table:存储描述块组的属性信息。如该块组还剩下多少未使用的内存。

Block Bitmap:该区域中存储的是多个比特位,用来记录Data block中块的使用情况,比特位的位置和Data block中的块号映射,如果相应的比特位是1则该块没被使用,为0则已被使用。

inode Bitmap:记录inode结构体的使用情况,和Block Bitmap规则一致。

根据文件系统结构,操作系统怎么从磁盘上把文件删除呢?

首先操作系统根据文件名,找到该文件的inode编号进而找到存储该文件全部属性的inode结构体,将自己占用的Data block里的块通过映射将Block Bitmap中的比特位置为0,再将inode Bitmap中的该文件inode结构体对应的比特位置为0。并不是直接删除Data block中文件对应的块数据和inode Table中文件对用的结构体数据。

inode Table:存储文件的所有属性,由多个inode结构体组成。每一个文件都有自己的inode结构体对象如下:

每一个文件都有自己的inode编号,在Linux中文件的属性不包括文件名,Linux系统中本质是用inode编号辨别文件的。

Data blocks:存储文件内容的区域,以块的形式存在每个小块的存储容量是4KB。一个文件可以有多个Data blocks中的小块。

硬链接

建立硬链接指令:ln 文件名 硬链接名

真正找到磁盘上文件的并不是文件名,而是inode编号。 其实在linux中可以让多个文件名对应于同一个inode编号,硬链接不是一个独立的文件因为它没有自己独立的inode。

删除原文件test.txt不会影响硬链接。

每一个inode中都有一个count计数变量,当count减到0时操作系统将该文件释放掉。

软链接

建立软链接指令:ln -s 文件名 软连接名

软链接是一个独立的文件,有自己独立的inode,也有独立的Data block中的内存块,软链接内存块里存储的是指向文件所在的路径。软链接相当于Windows中打开程序的快捷方式。

 rm -f ./test/mytest/test.exe会造成对应的软链接soft-link失效。

关于目录文件

目录文件也有自己的inode,属于目录文件的Date Block中的内存块储存的是该目录下的文件名与inode编号的映射关系。创建硬链接的本质其实是:在特定内存块中新增文件名和指向文件的inode编号之间的映射关系。

操作系统会默认在每个目录创建该目录自己的隐藏硬链接 ,以及上一级目录的隐藏硬链接。

.就是mulu目录的硬链接     ..就是diretory目录的硬链接。

  • 25
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值