磁盘与文件系统管理 2022.6.2

磁盘与文件系统管理

一、磁盘结构及分区表示

1、磁盘基础

硬盘(Hard Disk Drive,简称HDD)是计算机常用的存储设备之一。

1)硬盘的结构
①数据结构
  • 扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一扇区,叫做引导扇区。

  • 磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。

  • 柱面:在有多个盘片构成的盘组中,由不同盘片的面,但处在同一半径圆的多个磁道组成一个圆柱面(Cylinder)。

②物理结构
  • 盘片:硬盘有多个盘片,每盘片2面。

  • 磁头:每面一个磁头。

③存储容量

硬盘存储容量=磁头数磁道(柱面)数每道扇区数*每扇区字节数。

可以用柱面/磁头/扇区来唯一确定磁盘上每一个区域,“fdisk -l”命令可以查看分区信息。

2)硬盘的接口

硬盘按照数据接口不同,大致分为ATA(IDE)和SATA以及SCSI和SAS,接口速度并不是磁盘的实际传输速度。

ATA(Advanced Technology Attchment),并口数据线连接主板与硬盘,抗干扰能力差,且排线占用空间较大,不利于电脑内部散热,已逐渐被SATA替代。

SATA(Serial ATA),抗干扰性强,支持热插拔等功能,速度快,纠错能力强。

SCSI(Small Computer System Interface),小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率低,转速快,支持热拔插等。

SAS(Serial Attached SCSI)是新一代的SASI技术,和SATA硬盘相同,都是采用序列式技术以获得更高的传输速度(可达到6G/s)。

2、磁盘分区表示

1)MBR

MBR是主引导记录(Master Boot Record),位于硬盘的第一个物理分区处,MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区,每个分区记录区占16个字节。

2)磁盘分区的表示

常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而扩展分区可以看作是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区,主分区一般用来安装操作系统,扩展分区则多用来存储文件数据。

Linux内核读取光驱、硬盘等资源均通过“设备文件”的形式进行,因此在Linux系统中,将硬盘和分区分别表示为不同的文件。具体表述形式为:

  • 硬盘:对于IDE接口的硬盘设备,表示为“hdX”形式的文件名;而对于SCSI接口的硬盘设备,则表示为“sdX"形式的文件名。其中”X“可以为a、b、c、d等字母序号。例如,将系统中第一个IDE设备(硬盘)表示为“hda”,将第二个SCSI设备表示为”sdb“

  • 分区:表示分区时,以硬盘设备的文件名作为基础,在后面添加该分区(组分区、扩展分区、逻辑分区)对应的数字序号即可。例如,第1个IDE硬盘中的第1个分区表示为”hda1“,第2个分区表示为”hda2“,第2个SCSI硬盘中的第3个分区表示为"sdb3",第5个分区表示为”sdb5“。

    PS:由于硬盘中主分区的数目只有4个,因此主分区和扩展分区的序号也就限制在1~4而逻辑分区的需要将始终从5开始。例如,即便第一个IDE硬盘中只划分了一个主分区、一个扩展分区,则新建的第一个逻辑分区序号任然是从5开始,表示为”hda5“,第2个逻辑分区表示分”hda6“。

3)Linux中使用的文件系统类型

文件系统类型(File system)类型决定了向分区中存放、读取文件数据的方式和效率,在对分区进行格式化时需要选择所使用的文件系统类型。Windows操作系统中,经常使用的文件系统类型包括FAT32、NTFS等格式;在Linux操作系统中,最常使用的文件系统主要包括以下几种格式:

  • EXT4:第4代扩展文件系统,用于存放文件和目录数据的分区,是Linux系统中默认使用的文件系统。EXT4是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。

  • SWAP:交换系统类型,用于为Linux系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。交换分区不用于直接存储用户的文件和目录等数据。

  • XFS:是一种高性能的日志文件系统,特别擅长于处理大文件,可支持上百万T字节的存储空间。由于XFS文件系统开启日志功能,所以即使发生宕机也不怕数据遭到破坏,XFS文件系统可以根据日志记录在短时间内进行数据恢复。

    Linux系统还广泛支持其他各种类型的文件系统,如JFS、FAT16、FAT32、NTFS等。其中JFS文件系统多用于商业版本的UNIX操作系统中。由于NTFS是微软公司的专有文件系统,Linux系统默认只支持从NTFS分区读取文件,如果需要向NTFS分区中写入文件数据,需要结合其他辅助软件(如NTFS-3G)。

二、管理磁盘及分区

在Linux服务器中,当现有硬盘的分区规划无法满足需求(如根分区的剩余空间过少,无法继续安装新的系统程序)时,可以使用Linux系统中自带的fdisk磁盘及分区管理工具,来对磁盘中的分区进行重新规划和调整,或者添加新的磁盘设备来扩展存储空间。

增加硬盘设备时需要在机箱内进行硬盘接口的物理连接。下面以在VMware Workstation虚拟机环境中,添加一块20G的SCSI硬盘设备(Hard Disk)为例,来介绍fdisk磁盘及分区管理系统。

1、检测并确认新硬盘

挂接好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无需额外安装驱动。执行“fdisk -l”命令可以查看、确认新增硬盘的设备名称和位置,该命令作用是列出当前系统中所有硬盘设备及分区的信息。

上述输出信息包含了各硬盘的整体情况和分区情况,其中“/dev/sda"为原有的硬盘设备,而”/dev/sdb"为新增的硬盘,新的硬盘设备还未进行初始化,没有包含有效的分区信息。对于已有的分区,将通过列表的方式输出以下信息:

  • 设备(Device):分区的设备文件名称。

  • Boot:是否是引导分区。是则会有“ * ”标识。

  • Start:该分区在硬盘中的起始位置(柱面数)。

  • End:该分区在硬盘中的结束位置(柱面数)。

  • Blocks:分区的大小,以Block(块)为单位,默认的块大小为1024字节。

  • Id:分区对应的系统ID号。83表示Linux中的EXT4分区、8e表示LVM逻辑卷。

  • System:分区类型

    识别到新的硬盘设备后,就可以开始在该硬盘中建立新的分区。

2、规划硬盘中的分区

在硬盘设备中创建、删除、更改分区等操作可以通过fdisk命令,使用硬盘的设备文件作为参数。例如对上面添加的新硬盘进行设置,先执行”fdisk /dev/sdb“命令进入交互式的分区管理界面:

image-20220601095419679

在该操作界面中的”命令(输入m获取帮助):“提示符后,输入特定的分区操作指令,可以完成各项分区管理任务。如输入”m“指令后,可以查看各种操作指令的帮助信息:

image-20220601095712682

而在分区过程中常用的一些交互操作命令有:

1)”p“指令–列出硬盘中的分区情况

使用”p“指令可以列出详细的分区情况,信息显示的格式与执行”fdisk -l“命令相同。如硬盘中尚未建立分区,则输出的列表信息为空。

image-20220601135058174

2)”n“指令–新建分区

使用"n"指令可以进行创建分区的操作,包括主分区和扩展分区。根据提示继续输入”p“选择创建主分区,输入”e“选择创建扩展分区。

①创建两个主分区

首先创建第1个主分区(/dev/sdb1),容量指定为5G。

按照类似步骤继续创建第2个主分区(/dev/sdb2)容量也指定为5G。

②创建一个扩展分区和两个逻辑分区

使用剩余的磁盘空间创建扩展分区,然后再在扩展分区中创建逻辑分区,如果主分区、逻辑分区均已创建完毕(四个主分区号已用完),则再次输入”n“指令创建分区将不再提示选择分区类型。

创建扩展分区(/dev/sdb4),使用剩下的所有空间(全部空间分配完毕后,将无法再建立新的分区)。

再在扩展分区中建立第1个逻辑分区(/dev/sdb5),容量指定为2G。

按照类似的操作步骤继续创建第2个逻辑分区(/dev/sdb6),容量按照默认使用剩余的空间。

3)”d“指令–删除分区

使用”d“指令可以删除指定的分区,根据提示符提示继续输入需要删除的分区序号即可。

ps:若扩展分区被删,则扩展分区之下的逻辑分区也将同时被删除。

4)“t”指令–变更分区的类型

若新建的分区需要用做Swap交换分区或者其他类型的文件系统时,可以对分区类型进行变更以保持一致性,从而避免在管理分区时产生混淆。

在使用“t”指令变更分区的ID号时,需要依次指定目标分区序号、新的ID号。在fdisk交互环境中,输入“l”指令可以查看不同文件系统对应的不同ID号。最常用的EXT4、Swap文件系统的ID号分别为83、82,而用于Windows中的NTFS文件系统的ID号一般为86。

将上面的逻辑分区/dev/sdb5的类型更改为Swap,可以通过下面指令操作:

5)“w”、“q”指令–退出fdisk分区工具

完成对硬盘的分区操作后,可以执行“w”或者“q”指令退出fdisk分区工具,其中“w”指令将保存分区操作并退出,而“q”指令将不保存对硬盘所做的分区操作直接退出。

变更磁盘(特别是正在使用的磁盘)的分区设置后,最好重启系统一次或者执行“partprobe”(目标磁盘作为参数)命令使操作系统重新检测新的分区情况。在某些Linux操作系统中,若不进行这些操作,可能会导致格式化分区时损坏磁盘中已有数据,甚至导致系统崩溃。

三、管理文件系统

在Linux系统中,使用fdisk工具在磁盘中建立分区后,还需要对分区进行格式化并挂载到指定目录,然后才能用于存储文件、目录等数据。

1、创建文件系统

创建文件系统的过程即格式化分区的过程。在Linux系统中使用mkfs(make filesystem,创建文件系统)命令工具可以格式化XFS、EXT4、FAT等不同类型的分区,而使用mkswap命令可以格式化swap交换分区。

1)mkfs命令的使用

mkfs命令实际是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序位于/sbin/目录中,如支持EXT4分区格式的mkfs.ext4程序等。

mkfs命令程序的基本命令格式为“mkfs -t 文件系统类型 分区设备”。

①创建EXT4文件系统(CentOS 6默认)

创建EXT4文件系统时,结合“-t ext4”选项指定类型,并指定要被格式化的分区设备即可。如下面操作将之前的分区/dev/sdb1格式化为EXT4文件系统。

②创建XFS文件系统(CentOS 7默认)

同上述创建ETX4文件系统操作类似,只是将文件系统类型更改为XFS,命令为“mkfs -t xfs /dev/sdb2"。

文件系统类型的选择需要根据是间谍生产环境和硬盘类型等条件来决定的,例如SAS/SATA硬盘文件系统选择方案可根据具体情况分为:

  • 如果时数据库业务,则选择xfs类型的文件系统。

  • 如果有大量小文件的业务,一般首选RsiserFS的文件系统。

  • 常规情况选择默认的文件系统。

2)mkswap命令的使用

在Linux系统中,Swap分区的作用类似以Windows系统中的”虚拟内存“,可在一定程度上缓解物理内存不足的情况。如当前的Linux主机运行的服务较多,需要更多的交换空间支撑的话,可以为其增加新的交换分区。

使用mkswap命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具结合t指令将ID号设为82。如执行下面操作将分区/dev/sdb5创建为交换分区。

注意:对于新增的交换分区,需要使用swapon命令进行启用(swapoff停用指定交换分区),使用分区设备名作为参数。

2、挂载、卸载文件系统

在Linux系统中,对各种存储设备中的资源访问(如读取、保存文件等)都是通过目录结构进行的,虽然系统核心能够通过”设备文件“的方式操纵各种设备,但是对于用户来说,还需要增加一个”挂载“的过程,才能像正常访问目录一样访问存储设备中的资源。

在安装Linux操作系统的过程中,自动建立或者识别的分区通常会由系统自动完成挂载,如”/“分区、”boot“分区等,然而对于后来新增加的硬盘分区、光盘等设备,有时还需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统。挂载一个分区时,必须为其指定一个目录作为挂载点(亦称挂靠点),用户通过这个目录访问设备中的文件、目录数据。

1)挂载文件系统

挂载文件系统使用mount命令,其基本格式为: mount [-t 文件系统类型] 存储设备挂载点

其中文件系统类型通常可以省略(由系统自动识别),存储设备即对应分区的设备文件名或者网络资源路径,挂载点即用户指定用于挂载的目录。例如,执行命令"mount /dev/sdb1 /data"可以将之前新增的硬盘分区/dev/sdb1挂载到/data目录。

使用不带任何参数和选项的mount命令时,将显示出当前系统中已挂载的各个分区(文件系统的相关信息),最近挂载的文件系统将显示在最后面。

在实际工作中,会从互联网中下载一些软件或应用系统的ISO镜像文件,在无法刻录光盘的情况下,需要将其降压后才能浏览、使用其中的文件数据。若使用mount挂载命令,则无需解开文件包即可浏览、使用ISO镜像文件中的数据。“.iso“镜像文件通常被视为一种特殊的”回环“文件系统,因此在挂载时需要添加”-o loop“选项,例如将下载的CentOS系统的DVD光盘镜像文件”CentOS-7-x84_64-DVD-1611.iso“挂载到“/media/mnt”目录,可以执行命令”mount -o loop CentOS-7-x84_64-DVD-1611.iso /media/mnt“。

2)卸载文件系统

需要卸载文件系统时,使用的命令未umount,使用挂载点目录或对应设备的文件名作为卸载参数。由于在Linux系统中,同一个设备可以被挂载到多个目录下,所以一般通过挂载点的目录作为参数进行卸载。例如卸载前面挂载到/data的/dev/sdb1分区

3)设置文件系统的自动挂载

系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据。Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。默认的fstab文件中包括了根分区、/boot分区、交换分区及proc、tmpfs等伪文件系统的挂载配置。

ps:pros、sysfs、tmpfs等文件系统是Linux运行所需要的临时文件系统,没有实际的硬盘分区与之对应,因此称为“伪文件系统”。

在”etc/fstab"文件中,每一行记录对应一个分区或者设备的挂载配置信息,从左到右包括六个字段(使用空格或者制表符分隔),各部分的含义如下:

  • 第1字段:设备名或设备卷标名。

  • 第2字段:文件系统的挂载点目录的位置。

  • 第3字段:文件系统类型,如EXT4、XFS、Swap等。

  • 第4 字段:挂载参数,即mount命令”-o“选项后可使用的参数。例如defaults、rw、ro、noexec分别表示默认参数、可写、只读、禁用执行程序。

  • 第5字段:表示文件系统是否需要dump备份(dump是一个备份工具)。一般设为1表示需要,设为0则将被dump所忽略。

  • 第6字段:该数字用于决定在系统程序启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。对于根分区设为1,其他分区设为2。

    通过在/etc/fstab文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区,例如,执行以下操作将添加自动挂载分区/dev/sdb1的配置记录。

使用mount、umount进行挂载、解挂载操作时,若在/etc/fstab文件中已设置有对应的挂载记录,则只需要指定挂载点目录或设备文件名中的一个作为参数。例如,直接执行”mount /dev/sdb1“或”mount /data“,都可以将分区”/dev/sdb1“挂载到”/data“目录下。

4)查看磁盘使用情况

不带选项的mount命令可以显示分区的挂载情况,若要了解系统中已挂载的文件系统的磁盘使用情况,可以使用前面几条用到的”df“命令,df命令使用文件或者设备作为命令参数,较常用的选项有”-h“、”-T"。其中“-h”选项可以显示更易读的容量单位,而“-T"选项则用于显示对应文件系统的类型。

四、小结

  • 硬盘的结构分为物理结构和数据结构,物理结构由盘片和磁头组成;数据结构由扇区、磁道、柱面组成。硬盘常见的接口类型由IDE、SATA、SCSI等。
  • fdisk命令可以对磁盘设备进行分区操作。
  • mkfs命令可以创建EXT4、XFS等类型的文件系统,mkswap命令可以创建Swap类型的交换文件系统。
  • mount命令用于挂载磁盘、光盘等设备文件,umount命令可以根据设备文件或挂载点卸载指定的设备。

数,较常用的选项有”-h“、”-T"。其中“-h”选项可以显示更易读的容量单位,而“-T"选项则用于显示对应文件系统的类型。

四、小结

  • 硬盘的结构分为物理结构和数据结构,物理结构由盘片和磁头组成;数据结构由扇区、磁道、柱面组成。硬盘常见的接口类型由IDE、SATA、SCSI等。
  • fdisk命令可以对磁盘设备进行分区操作。
  • mkfs命令可以创建EXT4、XFS等类型的文件系统,mkswap命令可以创建Swap类型的交换文件系统。
  • mount命令用于挂载磁盘、光盘等设备文件,umount命令可以根据设备文件或挂载点卸载指定的设备。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值