目录
磁盘的物理存储结构
磁盘的逻辑结构
文件系统与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目录的硬链接。