05 Linux磁盘管理与文件系统

目录

5.1 磁盘结构及分区表示

        5.1.1 磁盘基础

                1. 硬盘的结构

                2. 硬盘的接口

        5.1.2 磁盘分区表示

                1. MBR

                2. 磁盘分区的表示

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

5.2 管理磁盘及分区

        5.2.1 检测并确认新硬盘

        5.2.2 规划硬盘中的分区

                1. “p”指令

                2. “n”指令

                3. “d”指令

                4. “t”指令

                5. “w”和“q”指令

5.3 管理文件系统

        5.3.1 创建文件系统

                1. mkfs命令的使用

                2. mkswap命令的使用

        5.3.2 挂载、卸载文件系统

                1. 挂载文件系统

                2. 卸载文件系统

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

                4. 查看磁盘使用情况


5.1 磁盘结构及分区表示

        5.1.1 磁盘基础

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

                1. 硬盘的结构

1. 物理结构

        盘片:硬盘有多个盘片,每盘片2面

        磁头:每面一个磁头

2. 数据结构

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

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

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

3. 存储容量

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

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

                2. 硬盘的接口

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

        ATA,全称Advanced Technology Attachment,并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所取代。

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

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

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

        5.1.2 磁盘分区表示

                1. MBR

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

                2. 磁盘分区的表示

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

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

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

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

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

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

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

        在 Linux系统中,最常使用的文件系统主要包括以下几种格式。

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

SWAP:交换文件系统,用于为Linux系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。一般建议将交换分区的大小设置为物理内存的1.5~2倍。例如,对于拥有512MB物理内存的主机,其交换分区的大小建议设置为1024MB。如果服务器的物理内存足够大(如8GB 以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。

EXT4:第4代扩展文件系统,用于存放文件和目录数据的分区,是Linux系统中默认使用的文件系统(CentOS 7默认使用XFS)。EXT4是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。Linux系统还广泛支持其他各种类型的文件系统,如JFS、FAT16、FAT32、NTFS等。

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

5.2 管理磁盘及分区

        在Linux服务器中,当现有硬盘的分区规划不能满足要求(例如,根分区的剩余空间过少,无法继续安装新的系统程序)时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。

        实现上述操作需要用到 fdisk磁盘及分区管理工具,fdisk是大多数Linux操作系统中自带的基本工具之一。增加硬盘设备时首先需要在机箱内进行硬盘接口的物理连接。若是在VMware虚拟机环境中,可以修改虚拟主机的设置,添加一块"Hard Disk"硬盘设备(如添加一块100GB的sCSI硬盘)。

        5.2.1 检测并确认新硬盘

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

        上述输出信息中包含了各硬盘的整体情况和分区情况,其中"Idev/sda"为原有的硬盘设备,而"/devlsdb"为新增的硬盘,没有包含有效的分区信息。对于已有的分区,将通过列表的方式输出以下信息。

Device:分区的设备文件名称

Boot:是否是引导分区。若是,则有“*"标识。

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

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

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

ld:分区对应的系统ID号。83表示Linux中的XFS分区或EXT4分区、8e表示LVM逻辑卷。LVM是Linux操作系统中对磁盘分区进行管理的一种逻辑机制

System:分区类型。

        5.2.2 规划硬盘中的分区

        在硬盘设备中创建、删除、更改分区等操作同样通过 fdisk命令进行,只需使用硬盘的设备文件作为参数。例如,执行"fdisk ldevlsdb"命令,即可进入交互式的分区管理界面中        

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

                1. “p”指令

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

                2. “n”指令

        使用“n"指令可以进行创建分区的操作,包括主分区和扩展分区。根据提示继续输入"“p"选择创建主分区,输入“e"选择创建扩展分区。之后依次选择分区序号、起始位置、结束位置或分区大小即可完成新分区的创建。

        选择分区号时,主分区和扩展分区的序号只能为1~4。为保证分区连续,分区起始位置一般由 fdisk 默认识别即可,结束位置或大小可以使用“+sizeM"或"“+sizeG"的形式,如“+20G"表示将该分区的容量设置为20GB。

        1. 创建两个主分区

        首先建立第一个主分区(/dev/sdb1),容量指定为20GB,具体操作如下:

        按照类似的操作步骤继续创建第二个主分区(ldevlsdb2),容量也指定为20GB,完成后可以输入“p"指令查看分区情况,具体操作如下: 

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

        使用剩余的硬盘空间可以创建扩展分区,然后在扩展分区中创建逻辑分区。需要注意的是,若主分区、逻辑分区均已创建完毕(四个主分区号已用完),则再次输入“n"指令后将不再提示选择分区类别。

        首先使用剩下的所有空间建立扩展分区(ldevlsdb4)(全部空间分配完毕后,将无法再建立新的主分区),具体操作如下:

        接下来在扩展分区中建立第一个逻辑分区(ldevlsdb5),容量指定为2GB,具体操作如下:

        然后按照类似的操作步骤继续创建第二个逻辑分区(ldevlsdb6),容量指定为10GB,完成后可以再次输入“"p"指令查看分区情况,具体操作如下: 

                3. “d”指令

        使用“d"指令可以删除指定的分区,根据提示继续输入需要删除的分区序号即可。在执行删除分区时一定要慎重,应首先使用p指令查看分区的序号,确认无误后再进行删除。需要注意的是,若扩展分区被删除,则扩展分区之下的逻辑分区也将同时被删除。因此建议从最后一个分区开始删除,以免fdisk 识别的分区序号发生紊乱。

        下面的操作过程将删除上一步建立的逻辑分区/devlsdb6。

                4. “t”指令

        在fdisk分区工具中,新建的分区默认使用的分区类型为Linux,一般不需要更改。但是若新建的分区需要用作 Swap交换分区或其他类型的分区﹐则需要对分区类型进行变更以保持一致性,以避免在管理分区时产生混淆。

        使用t"指令可以变更分区的ID号。操作时需要依次指定目标分区序号、新的ID号。不同类型的ID号对应不同的分区类型,不同的分区类型支持不同类型的文件系统,以十六进制数表示,在 fdisk交互环境中可以输入"T指令进行列表查看。最常用的XFS、Swap文件系统对应的ID号分别为83、82,而用于 Windows 中的NTFS文件系统对应的ID号一般为86。

        执行下面的操作可以将逻辑分区"dev/sdb5"的类型更改为Swap,通过"p"指令可以确认分区ldevlsdb5的分区ID已由默认的83变为82。

                5. “w”和“q”指令

        完成对硬盘的分区操作以后,可以执行"w"或“q"指令退出 fdisk分区工具。其中“"w"指令将保存分区操作,而“q"指令不会保存对硬盘所做的分区操作。对已包含数据的硬盘进行分区时,一定要做好数据备份,保存之前要确保操作无误,以免损坏数据。若无法确定本次分区操作是否正确,建议使用“q"指令不保存退出。“w"指令的具体操作如下:

        变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行“partprobe"命令使操作系统检测新的分区表情况。在某些Linux操作系统中,若不进行这些操作,可能会导致格式化分区时损坏硬盘中已有的数据,严重者甚至引起系统崩溃。例如,执行“partprobe"命令将重新探测""ldev/sdb"磁盘中的分区变化,具体操作如下:

5.3 管理文件系统

        在Linux操作系统中,使用fdisk工具在硬盘中建立分区以后,还需要对分区进行格式化并挂载到系统中的指定目录,然后才能用于存储文件、目录等数据。本节将学习如何格式化并挂载分区。

        5.3.1 创建文件系统

        创建文件系统的过程即格式化分区的过程,在 Linux操作系统中使用mkfs ( MakeFilesystem,创建文件系统)命令工具可以将分区格式化成XFS、EXT4、FAT等不同类型的文件系统,而 Swap交换分区是使用mkswap命令来进行格式化的。

                1. mkfs命令的使用

        实际上mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的文件系统,而后端包括多个与mkfs命令相关的工具程序,这些程序位于/sbin/目录中,如支持EXT4文件系统的 mkfs.ext4程序等。执行如下"Is lsbin/mkfs*"命令,可以查看当前操作系统内与mkfs命令相关的工具程序。

        使用mkfs命令时,基本的命令格式如下:

mkfs   -t   文件系统类型   分区设备

1. 创建XFS文件系统

        当需要创建XFS文件系统时,只需结合"-t xfs"选项指定类型,并指定要被格式化的分区设备即可。例如,执行以下操作将把分区/dev/sdb1格式化为XFS文件系统。

2. 创建FAT32文件系统

        一般来说,不建议在Linux操作系统中创建或使用Windows操作系统中的文件系统类型,包括FAT16、FAT32等,但一些特殊情况,如 Windows 操作系统不可用、U盘系统被病毒破坏等情况除外。

        若要在 Linux操作系统中创建FAT32文件系统,可结合"-t vfat"选项指定类型,并添加“-F32"”选项指定FAT的版本。例如,执行以下操作将把分区ldevlsdb6格式化为FAT32文件系统(先通过fdisk工具添加/devlsdb6 分区,并将ID号设为b)。

[root@localhost ~]# mkfs -t vfat -F 32 /dev/sdb6
mkfs.fat 9.0.20(12 Jun 2013)
或者
[root@localhost ~]# mkfs.vfat -F 32 /dev/sdb6
mkfs.fat 9.0.20(12 Jun 2013)

                2. mkswap命令的使用

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

        使用mkswap命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具将ID号设为82。

        例如,执行以下操作可以将分区ldevlsdb5创建为交换分区。

        对于新增加的交换分区,需要使用swapon命令进行启用,反之使用swapoff 命令停用指定的交换分区。例如,以下操作分别展示了启用、停用交换分区ldevlsdb5的过程,以及总交换空间的变化情况。

        5.3.2 挂载、卸载文件系统

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

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

                1. 挂载文件系统

        mount命令的基本使用格式如下:

mount   [-t  文件系统类型]   存储设备    挂载点

        其中,文件系统类型通常可以省略(由系统自动识别),存储设备即对应分区的设备文件名(如/dev/sdb1、ldev/cdrom)或网络资源路径,挂载点即用户指定用于挂载的目录。例如,以下操作用于将光盘设备挂载到/medialcdrom目录。

        光盘对应的设备文件通常使用ldevlcdrom",其实这是一个链接文件,链接到实际的光盘设备"ldevlsr0"。使用这两个名称都可以表示光盘设备。由于光盘是只读的存储介质,因此在挂载时系统会出现"mounting read-only"的提示信息。

        挂载Linux分区或U盘设备时的用法也一样,只需要指定正确的设备位置和挂载目录即可。

        例如,以下操作用于将5.1.2节建立的/devsdb1分区挂载到新建的/mailbox目录下。

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

        上例中,proc、sysfs、tmpfs 等文件系统是Linux运行所需要的临时文件系统,并没有实际的硬盘分区与其相对应,因此也称为“伪文件系统"。例如,proc文件系统实际上映射了内存及CPU寄存器中的部分数据。

        mount命令的"-t"选项用于指定文件系统类型,而"-o"选项则用来描述设备或文件系统的挂载方式,基本使用格式如下:

mount   [-o  挂载参数]   存储设备   挂载点 

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

                2. 卸载文件系统

        需要卸载文件系统时使用的命令为umount,使用挂载点目录或对应设备的文件名作为卸载参数。Linux操作系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载。例如,执行以下操作将分别卸载前面挂载的Linux分区、光盘设备。

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

        系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据。Linux操作系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。默认的fstab文件中包括了根分区、boot分区、交换分区挂载配置。执行如下命令可以查看当前系统内自动挂载的设备或分区。

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

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

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

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

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

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

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

        通过在letc/fstab文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。

        例如,执行以下操作将添加自动挂载分区ldevlsdb1的配置记录。 

[root@localhost ~]# vi /etc/fstab
......//省略部分内容
/dev/sdb1        /mailbox      xfs      defaults    0 0

        使用mount、umount进行挂载、卸载操作时,若在letc/fstab文件中已设置有对应的挂载记录,则只需指定挂载点目录或设备文件名中的一个作为参数。例如,直接执行“mountldevlsdb1"或"mount /mailbox"命令,都可以将分区ldevlsdb1挂载到/mailbox目录下。 

                4. 查看磁盘使用情况

        不带选项及参数的mount命令可以显示分区的挂载情况,若要了解系统中已挂载各文件系统的磁盘使用情况(如剩余磁盘空间比例等),可以使用df命令。

        df命令使用文件或者设备作为命令参数,较常用的选项为"-h"和“-T”。其中,“-h"选项可以显示更易读的容量单位,而“-T"选项用于显示对应文件系统的类型。

        例如,执行"df -hT"命令可以查看当前系统中挂载的各文件系统的磁盘使用情况,具体操作如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值