admin管理员组

文章数量:1564197

目录

10.1 深度探究硬盘的内部结构

机械硬盘(HDD)

固态硬盘(SSD)

10.2 Linux常见的文件系统有哪些,CentOS采用哪种文件系统?

Linux支持的常见文件系统

10.3 Linux系统是如何识别硬盘设备和硬盘分区的?

10.4 Linux查看文件系统硬盘使用情况(df命令)

10.5 Linux统计目录或文件所占磁盘空间大小(du命令)

du命令和df命令的区别

10.6 Linux挂载文件系统(mount命令)

10.7 给Linux系统挂载光盘

10.8 给Linux系统挂载U盘

10.9 Linux开机自动挂载硬件设备(配置/etc/fstab文件)

/etc/fstab文件各字段的含义

配置 /etc/fstab 文件


前面章节中已经对 Linux 的分区方法和文件系统进行了介绍。不过那种分区方法是在安装的同时使用图形界面进行分区,如果我添加了一块硬盘,那么当然要有不重新安装系统就可以分区的方法。

文件系统这个名词大家都很陌生,不过如果说成分区,大家就比较容易理解了。原先每个分区只能格式化为一个文件系统,所以我们可以认为文件系统就是指分区。不过随着技术的进步,现在一个文件系统可以由几个分区组成,或者一个分区可以格式化为几个不同的文件系统,所以我们已经不能把文件系统和分区等同对待了。

不过,为了便于理解,大家可以把文件系统想象成分区。本章我们会介绍硬盘的基本结构、Linux 中常见的文件系统、fdisk 命令分区和 swap 分区的手工分配等内容。

 

 

10.1 深度探究硬盘的内部结构

 

在 Linux 系统中,文件系统是创建在硬盘上的,因此,要想彻底搞清楚文件系统的管理机制,就要从了解硬盘开始。

硬盘是计算机的主要外部存储设备。计算机中的存储设备种类非常多,常见的主要有光盘、硬盘、U 盘等,甚至还有网络存储设备 SAN、NAS 等,不过使用最多的还是硬盘。

如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD),机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

机械硬盘(HDD)

我们先来看看最常见的机械硬盘。机械硬盘的外观大家可能都见过,那么机械硬盘拆开后是什么样子的呢?如图 1 所示。



图 1 机械硬盘结构


机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成,数据就存放在磁盘盘片中。大家见过老式的留声机吗?留声机上使用的唱片和我们的磁盘盘片非常相似,只不过留声机只有一个磁头,而硬盘是上下双磁头,盘片在两个磁头中间高速旋转,类似图 2。



图 2 磁盘盘片


也就是说,机械硬盘是上下盘面同时进数据读取的。而且机械硬盘的旋转速度要远高于唱片(目前机械硬盘的常见转速是 7200 r/min),所以机械硬盘在读取或写入数据时,非常害怕晃动和磕碰。另外,因为机械硬盘的超高转速,如果内部有灰尘,则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。

机械硬盘的逻辑结构

我们已经知道数据是写入磁盘盘片的,那么数据是按照什么结构写入的呢?机械硬盘的逻辑结构主要分为磁道、扇区和拄面。我们来看看图 3。



图 3 磁道和扇区


什么是磁道呢?每个盘片都在逻辑上有很多的同心圆,最外面的同心圆就是 0 磁道。我们将每个同心圆称作磁道(注意,磁道只是逻辑结构,在盘面上并没有真正的同心圆)。硬盘的磁道密度非常高,通常一面上就有上千个磁道。但是相邻的磁道之间并不是紧挨着的,这是因为磁化单元相隔太近会相互产生影响。

那扇区又是十么呢?扇区其实是很形象的,大家都见过折叠的纸扇吧,纸扇打开后是半圆形或扇形的,不过这个扇形是由每个扇骨组合形成的。在磁盘上每个同心圆是磁道,从圆心向外呈放射状地产生分割线(扇骨),将每个磁道等分为若干弧段,每个弧段就是一个扇区。每个扇区的大小是固定的,为 512Byte。扇区也是磁盘的最小存储单位。

柱面又是什么呢?如果硬盘是由多个盘片组成的,每个盘面都被划分为数目相等的磁道,那么所有盘片都会从外向内进行磁道编号,最外侧的就是 0 磁道。具有相同编号的磁道会形成一个圆柱,这个圆柱就被称作磁盘的柱面,如图 4 所示。



图 4 柱面


硬盘的大小是使用"磁头数 x 柱面数 x 扇区数 x 每个扇区的大小"这样的公式来计算的。其中,磁头数(Heads)表示硬盘共有几个磁头,也可以理解为硬盘有几个盘面,然后乘以 2;柱面数(Cylinders)表示硬盘每面盘片有几条磁道;扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般是 512Byte。

硬盘的接口

机械硬盘通过接口与计算机主板进行连接。硬盘的读取和写入速度与接口有很大关系。大家都见过大礼堂吧,大礼堂中可以容纳很多人,但是如果只有一扇很小的门,那么人是很难进入或出来的,这样会造成拥堵,甚至会出现事故。机械硬盘的读取和写入也是一样的,如果接口的性能很差,则同样会影响机械硬盘的性能。

目前,常见的机械硬盘接口有以下几种:

  • IDE 硬盘接口(Integrated Drive Eectronics,并口,即电子集成驱动器)也称作 "ATA硬盘" 或 "PATA硬盘",是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值),IDE 硬盘接口如图 5 所示。



    图 5 IDE硬盘接口

  • SATA 接口(Serial ATA,串口),是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值),如图 6 所示。



    图 6 SATA硬盘接口

  • SCSI 接口(Small Computer System Interface,小型计算机系统接口),广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点,理论传输速度达到 320MB/s,如图 7 所示。



    图 7 SCSI硬盘接口

固态硬盘(SSD)

固态硬盘和传统的机械硬盘最大的区别就是不再采用盘片进行数据存储,而采用存储芯片进行数据存储。固态硬盘的存储芯片主要分为两种:一种是采用闪存作为存储介质的;另一种是采用DRAM作为存储介质的。目前使用较多的主要是采用闪存作为存储介质的固态硬盘,如图 8 所示。



图 8 固态硬盘


固态硬盘和机械硬盘对比主要有以下一些特点,如表 1 所示。
 

表 1 固态硬盘和机械硬盘对比
对比项目 固态硬盘 机械硬盘
容量 较小
读/写速度 极快 —般
写入次数 5000〜100000 次 没有限制
工作噪声 极低
工作温度 极低 较高
防震 很好 怕震动
重量
价格


大家可以发现,固态硬盘因为丟弃了机械硬盘的物理结构,所以相比机械硬盘具有了低能耗、无噪声、抗震动、低散热、体积小和速度快的优势;不过价格相比机械硬盘更高,而且使用寿命有限。

 

 

10.2 Linux常见的文件系统有哪些,CentOS采用哪种文件系统?

 

硬盘是用来存储数据的,可以将其想象成柜子,只不过柜子是用来存储衣物的。新买来的硬盘,通常要对其进行分区并格式化,分区就如同把一个大柜按照要求分割成几个小柜子(组合衣柜);格式化就好比在每个小柜子中打入隔断,决定每个隔断的大小和位置,然后在柜门上贴上标签,标签中写清楚每件衣服保存的隔断的位置和这件衣服的一些特性(比如衣服是谁的,衣服的颜色、大小等)。

很多初学者认为,对硬盘进行格式化,只是清除了硬盘中的数据,其实不然,格式化过程中还向硬盘中写入了文件系统。因为不同的操作系统,管理系统中文件的方式也不尽相同(给文件设定的属性和权限也不完全一样),因此,为了使硬盘有效存放当前系统中的文件数据,就需要将硬盘进行格式化,令其使用和操作系统一样(或接近)的文件系统格式。

各操作系统使用的文件系统并不相同,例如,Windows 98 以前的微软操作系统使用 FAT(FAT16)文件系统,Windows 2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统是 Ext2。 

既然格式化的真实目的是为了写入文件系统,那么,Linux 中的文件系统到底是什么,又是如何运作的呢?

早期的 Linux 使用 Ext2 文件系统格式,CentOS 5.x 默认使用 Ext3,本教程中所用的 CentOS 6.x 默认使用 Ext4,而目前最新的 CentOS 7.x 默认使用 xfs 格式。

由于 xfs 文件系统不是这里的重点,因为有关 xfs 文件系统,这里不做深入介绍,感兴趣的读者可自行搜索相关资料。

Ext4 是 Ext3(Ext2) 文件系统的升级版,在性能、伸缩性和可靠性方面进行了大量改进,变化可以说是翻天覆地的,比如:

  • 向下兼容 Ext3;
  • 最大 1EB 文件系统和 16TB 文件;
  • 无限数量子目录;
  • Extents 连续数据块概念;
  • 多块分配、延迟分配、持久预分配;
  • 快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等;


不同的文件系统,其运作模式和操作系统的文件数据有关。拿 Linux 操作系统中的文件为例,文件数据不仅包括文件中的内容,还包含非常多的文件属性,例如文件的 rwx 权限以及文件所有者、所属组、创建时间等。

通常情况下,文件系统会将文件的实际内容和属性分开存放:

  • 文件的属性保存在 inode 中(i 节点)中,每个 inode 都有自己的编号。每个文件各占用一个 inode。不仅如此,inode 中还记录着文件数据所在 block 块的编号;
  • 文件的实际内容保存在 block 中(数据块),类似衣柜的隔断,用来真正保存衣物。每个 block 都有属于自己的编号。当文件太大时,可能会占用多个 block 块。
  • 另外,还有一个 super block(超级块)用于记录整个文件系统的整体信息,包括 inode 和 block 的总量、已经使用量和剩余量,以及文件系统的格式和相关信息等。


由此我们可以推断出,只要能找到文件 inode 所在的位置,自然就能知道这个文件存放数据的 block 号,从而找到文件的实际数据。整个过程如图 1 所示。


本文标签: 文件系统Linux