目录
2. 硬盘的接口
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"命令可以查看当前系统中挂载的各文件系统的磁盘使用情况,具体操作如下: