文件分为:
提示:
- 内存文件:就是我们之前学习的进程与文件的关系,文件描述符,虚拟文件系统,缓冲区,重定向等知识。
- 磁盘文件:是我们接下来要学习的内容。
提示:
- 永久性存储介质还有:固态硬盘SSD(Solid State Drive),U盘,flash卡,光盘,磁带
- 磁盘是一个外设,还是计算机中唯一的一个机械设备!其读写速度相对较慢,当然OS存在一些提速方式。
物理结构:
磁盘存储数据的原理:
注意:电脑开机状态下,不要搬运,挪动,碰撞。否则可以由于震动使磁头刮伤高速旋转的磁盘,从而导致数据丢失。
在磁盘存储系统中,扇区(Sector)、磁道(Track)和柱面(Cylinder)是常用的概念。
扇区(Sector):扇区是磁盘上最小的存储单位。它是一个固定大小的数据块,通常为512字节或4KB。磁盘上的数据以扇区为单位进行读取和写入。
磁道(Track):磁道是磁盘上的一个圆形轨道,它位于磁盘的表面上。磁盘通常由多个同心圆组成,每个同心圆上都有一个磁道。磁道是磁盘上的物理结构,用于存储数据。磁道上的扇区可以被读取或写入数据。
柱面(Cylinder):柱面是由多个磁盘盘片(Platter)上的相同磁道组成的垂直堆叠。每个盘片上的相同编号磁道构成一个柱面。柱面是磁盘存储系统中的逻辑概念,用于组织和寻址数据。操作系统和磁盘控制器使用柱面号来定位和访问磁盘上的数据。
总结来说,扇区是磁盘上最小的存储单位,磁道是磁盘上的一个圆形轨道,而柱面是由多个磁盘盘片上的相同磁道组成的垂直堆叠。这些概念在磁盘存储系统中用于组织和管理数据,并提供对数据的读取和写入操作。
CHS(Cylinder-Head-Sector)寻址方式是一种早期的磁盘寻址方式,用于定位和访问磁盘上的数据。它将磁盘的物理结构抽象为柱面、磁头和扇区的组合。
CHS寻址方式使用柱面号、磁头号和扇区号的组合来定位和访问磁盘上的数据。 通过指定柱面号、磁头号和扇区号,操作系统或磁盘控制器可以精确地定位到磁盘上的特定数据位置。
然而,随着技术的发展,CHS寻址方式逐渐被LBA(Logical Block Addressing)寻址方式取代。LBA寻址方式使用逻辑块号来定位和访问磁盘上的数据,更加简单和灵活,能够支持更大容量的磁盘。
将磁带从磁带盒中抽出来,原本卷在一起的圆形结构就变成了线性结构!
类比磁带,我们也可以将磁盘盘片抽象为线性结构(类似于数组),扇区抽象为逻辑块(数组元素),每个逻辑块都有逻辑块号(数组下标):
LBA是Logical Block Addressing(逻辑块寻址)的缩写。它是一种磁盘寻址方式,用于定位和访问磁盘上的数据。
在LBA寻址方式中,磁盘被抽象为逻辑块的序列,每个逻辑块都有一个唯一的逻辑块号(LBA)。逻辑块是磁盘上的最小可寻址单位,对应磁盘上的扇区,通常为512字节或4KB。
与CHS寻址方式不同,LBA寻址方式不需要考虑磁盘的物理结构,如柱面、磁头和扇区。通过指定逻辑块号,操作系统或磁盘控制器可以直接定位到磁盘上的特定逻辑块,而无需关心磁盘的物理布局。
LBA寻址方式的优点是简单和灵活。它可以支持更大容量的磁盘,并且不受物理结构的限制。此外,LBA寻址方式还可以提供更高的数据传输速率和更好的数据可靠性。
因此,现代计算机系统通常使用LBA寻址方式来管理磁盘上的数据,而不再使用传统的CHS寻址方式。
简单来说,我们可以将逻辑块序列当成数组,逻辑块号作为数组下标。
将数据存储到磁盘 --> 将数据存储到数组
找到磁盘的特定扇区 --> 找到数组的指定下标位置
对磁盘进行管理 --> 对该数组的管理
磁盘分区和文件系统
EXT系列文件系统
EXT是Linux系统中最常用的文件系统之一,它是一种基于磁盘块的文件系统,支持文件和目录的权限控制、硬链接和软链接等功能。EXT系列的文件系统在Linux系统中广泛使用,是Linux系统的重要组成部分。
EXT系列的文件系统包括以下几种:
- EXT:最早的EXT文件系统,已经很少使用。
- EXT2:EXT2是Linux系统中最常用的文件系统之一,它是EXT文件系统的升级版,支持文件和目录的权限控制、硬链接和软链接等功能。
- EXT3:EXT3是EXT2文件系统的升级版,增加了日志功能,可以更好地保护文件系统的完整性和稳定性。
- EXT4:EXT4是EXT3文件系统的升级版,增加了一些新的特性,如更快的文件系统检查和修复、更大的文件和分区支持、更好的性能和可靠性等。
块组的结构介绍:
注意:
磁盘存储数据的基本单位是扇区(512B~4KB),而一个block是4KB(8*512B)大小。为什么不以扇区大小作为IO操作的基本单位呢?
512B太小了,可能导致多次IO,进而导致读写效率降低。
磁盘的扇区大小并不总是512B,规定一个block是4KB,就是为了使软硬件解耦合。
Linux文件系统在磁盘上存储文件的时候,将文件的内容和属性分开来保存。文件的内容保存到块组中的Data blocks,文件的属性保存到inode
什么是元数据?
- 元数据是指描述数据的数据,它提供了关于数据的属性、结构、格式、位置和其他相关信息,帮助系统理解和管理数据。
- 对于文件来说,元数据信息可能包括文件的名称、大小、创建时间、修改时间、访问权限等。
- 对于分区文件系统来说,不单单只是保存文件信息,还有一批元数据结构专门负责管理信息,如Bitmap,用于管理Data blocks和inode Table;GDT,用于描述和管理整个块组;super block,用于描述和管理整个分区文件系统;等等。正是因为这些元数据结构的存在才能够让文件的信息可追溯,可管理。
磁盘格式化通常包括以下步骤:分区,创建文件系统(包括创建元数据结构,初始化元数据结构),完成格式化。
磁盘格式化实际上就是在写入文件系统。磁盘格式化是一个重要的步骤,它确保磁盘上的文件系统结构正确创建,并为文件和数据的存储提供了必要的基础。
什么是索引节点(inode)?
一个文件可能包含多个block,如何找到属于同一个文件的block?
inode和文件名
通过对EXT文件系统的学习,解释下面操作的具体步骤:
创建文件:
删除文件:
提示:
- 删除文件时,不需要将数据清空,只需要将文件所占的空间标定无效即可。这就是为什么删除文件要比拷贝文件要快。
- 系统会记录文件的删除日志,包括删除文件的文件名及inode编号。如果对应空间没有被覆盖写入的话,是可以利用某些工具恢复已经删除的文件的(其实就是将inode/block bitmap中的对应位置1)。
- 所以如果把重要的文件误删了,最好的做法是立即停止操作,马上将电脑交给专业人员进行数据恢复。
查看文件(ls -l):
修改文件:
为什么分区/块组有剩余空间但无法创建新文件?
因为块组中的inode和data block的大小和个数是固定的,有时会出现inode有空余但data block占满,或data block有空余但inode占满的现象。给人直观的感受就是明明该分区/块组有剩余空间,但无法创建新文件(inode占满),或文件无法进行写入(data block占满)。
ln -s filepath softlink
ln filepath hardlink
软链接
硬链接
硬链接的作用:为目录文件取别名。
.
和..
其实就是目录文件的硬链接。.
表示当前目录,..
表示上级目录.
..
小技巧:不打开目录,只通过目录的硬链接数就能知道目录中有多少个子目录。用硬链接数-2即可。
unlink:用于删除普通文件的系统调用,实际是解除文件名和inode的链接关系
提示:unlink同时也是一个系统命令,可以用来删除一个普通文件。