带着需求去学习Centos:三、硬盘与文件系统的关系

128 阅读6分钟

了解Linux的文件系统时先了解硬盘的工作原理

目前的存储设备分为机械硬盘、SSD、闪存,其中SSD和闪存的很多概念继承于机械硬盘。

机械硬盘能实现信息存储的功能基于:磁性存储介质能够被磁化,且磁化后会长久保留被磁化的状态,这种被磁化状态能够被读取出来,同时这种磁化状态还能够不断被修改,磁化正好有两个方向,所以可以表示0和1。 于是硬盘就是把这种磁性存储介质做成一个个盘片,每一个盘片上都分布着数量巨大的磁性存储单位,使用磁性读写头对盘片进行写入和读取(从原理上类似黑胶唱片的播放)。

一个硬盘中的磁性存储单位数以亿计(1T硬盘就有约80亿个),所以需要一套规则来规划信息如何存取(比如一本存储信息的书我们还会分为页,每一页从上到下从左到右读取,同时还有章节目录)于是就有了这些物理、逻辑概念。

机械硬盘工作原理

image.png

image.png

  • 磁盘读写的最小单位是扇区,扇区的大小只有512B的大小,文件系统就把多个扇区组成了一个逻辑块,每次读写的最小单位就是逻辑块(数据块),Linux中的逻辑块的每个块的大小为4KB,也就是一次性可以读取8个扇区,这将会大大提高了磁盘的读写效率。
  • 一个硬盘有多张盘片叠成,不同盘片有编号
  • 每张盘片上的存储颗粒成环形一圈圈地排布,每一圈称为磁道,有编号
  • 每条磁道上都有一圈存储颗粒,每512*8(512字节,0.5KB)个存储颗粒作为一个扇区,扇区是硬盘上存储的最小物理单位
  • N个扇区可以组成簇,N取决于不同的文件系统或是文件系统的配置,簇是此文件系统中的最小存储单位
  • 所有盘面上的同一磁道构成一个圆柱,称为柱面,柱面是系统分区的最小单位

工作原理: 磁头读写文件的时候,首先是分区读写的,由inode编号(区内唯一的编号后面介绍)找到对应的磁道和扇区,然后一个柱面一个柱面地进行读写。机械硬盘的读写控制系统是一个令人叹为观止的精密工程(一个盘面上有几亿个存储单位,每个磁道宽度不到几十纳米,磁盘每分钟上万转),同时关于读写的逻辑也是有诸多细节(比如扇区的编号并不是连续的),非常有意思,可以自行搜索文章拓展阅读。

有了硬盘并不意味着LInux可以立刻把它用来存储,还需要组合进Linux的文件体系才能被Linux使用。

文件系统

Linux的文件管理系统和传统的文件管理系统不一样,它利用块设备来存储和管理文件。Linux的文件管理系统包括以下部分:

  1. Superblock(超级块)

超级块是文件系统的元数据,记录着文件系统的基本信息。包括文件系统的类型、容量、块大小、inode数量、挂载时间以及访问权限等。超级块的位置固定在文件系统的之一个块上,因此是文件系统查询的入口。

  1. Inode(索引节点)

Inode存储文件和目录的元数据信息,例如文件的大小、所有者、创建时间、修改时间、访问权限等信息。Inode本身没有存储文件的数据,而是记录文件所在的位置,即数据块的地址。每一个文件和目录都有一个唯一的inode号,通过该号码可以找到所对应的元数据。

  1. 数据块

数据块是存储实际文件数据的区域。数据块的大小是可配置的,通常为4KB或8KB,并根据文件大小动态扩展。文件数据不一定存储在连续的数据块中,当文件大小超过一个块时,其数据将被分散存储到多个不同的数据块中。

  1. 目录

目录是一种特殊的文件,用于存储文件名和对应inode号的映射关系。每个目录都有一个inode号,记录着该目录中所包含的所有文件和子目录的信息。

  1. 文件

文件是指存储在文件系统中的应用程序或用户数据。文件的数据存储在一个或多个数据块中,其元数据信息存储在所对应的inode中。

块设备工作原理

块设备原理

块设备是一种大容量存储设备,如硬盘、U盘、光盘等。块设备按照块大小划分成多个逻辑块,每个逻辑块包含一定数量的数据和元数据信息。在Linux中,块设备由驱动程序和文件系统来管理,文件系统利用驱动程序提供的接口与块设备交互。

块设备的读写操作是按照块的大小进行的。当应用程序需要访问块设备时,首先将指令传递给文件系统,文件系统再将指令传递给设备驱动程序。驱动程序通过硬件控制器从物理设备中读取或写入数据,然后将处理好的数据返回给文件系统,文件系统再将数据返回给应用程序。

块设备通常包含多个分区,每个分区都是一个独立的逻辑卷。每个分区有一个超级块,记录着该分区的基本信息。文件系统以分区为单位进行管理,每个分区都有一个自己独立的inode表,用于记录分区内文件和目录的信息。

块设备容量的大小取决于其硬件规格和文件系统的类型和配置。在Linux中,常用的文件系统类型包括ext4、xfs、btrfs等。不同的文件系统类型支持不同的特性和性能,选择适合自己需求的文件系统非常重要。