Linux---磁盘管理与文件系统(磁盘分区,创建、挂载、卸载文件系统)

一、磁盘基础

  • 硬盘(Hard Disk Drive,简称 HDD)

1.1 磁盘结构

在这里插入图片描述

1.1.1 硬盘的物理结构

  • 盘片:硬盘有多个盘片,每个盘片2面
  • 磁头:每面一个磁头

1.1.2 硬盘的数据结构

扇区:盘面被分成多个扇形区域,每个扇区存放512个字节的数据(硬盘的第一个扇区,叫做引导扇区)(固体盘扇区:4k)
磁道:同一盘片不同半径的同心圆
柱面:不同盘片相同半径构成的圆柱面

1.1.3 存储容量

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

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

1.1.4 硬盘的接口

硬盘按数据接口不同,分为 ATA(IDE)和 SATA 以及 SCSI 和 SAS,接口速度不是实际硬盘数据传输的速度。
ATA(IDE),全称 Advanced Technology Attachment,并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。

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

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

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

1.2 MBR与磁盘分区表示

  • 主引导记录(MBR:Master Boot Record)

    • MBR位于硬盘第一个物理扇区处
    • MBR中包含硬盘的主引导程序和硬盘分区表
    • 分区表有4个分区记录区、每个分区记录区占16个字节
  • Linux中将硬盘、分区等设备均表示为文件
    在这里插入图片描述

1.3 磁盘分区结构

  • 硬盘中的主分区数目只有4个
  • 主分区和扩展分区的序号限制在1~4
  • 扩展分区再分为逻辑分区
  • 逻辑分区的序号将始终从5开始
    在这里插入图片描述

1.4 文件系统类型

  • XFS
    • 开启了日志功能,即使发生宕机也不怕数据遭到破坏,可以根据日志记录在短时间内进行数据恢复。
    • 高性能的日志文件系统,特别擅长处理大文件,可支持上百万T字节的存储空间
    • CentOS 7系统默认使用XFS文件系统
  • SWAP,交换文件系统
    • 为Linux系统建立的交换分区
    • 交换分区相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题
    • 一般建议将交换分区的大小设置为物理内存的1.5-2倍。
  • EXT4,第 4 代扩展文件系统
    • 存放文件和目录数据的分区
    • 高性能的日志型文件系统
    • CentOS 6系统中默认使用的文件系统
  • Linux 系统还广泛支持其他各种类型的文件系统,如 JFS、FAT16、FAT32、NTFS 等。

二、检测并确认新硬盘

fdisk命令
fdisk -l [磁盘设备]

fdisk [磁盘设备]

  • 查看时,带有“*”标识的是引导分区
fdisk /dev/sdb  进入交互式的分区管理界面

交互模式中的常用指令
p 列出硬盘中的分区情况,信息显示的格式与执行"fdisk -l"命令相同
n 创建新分区
d 删除分区
t 变更分区类型,转换格式
w 保持配置
q 退出
l 查看分区对应的系统ID号

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a343e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   629145599   313523200   8e  Linux LVM

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
……省略部分内容

在这里插入图片描述
上述输出信息中包含了各硬盘的整体情况和分区情况,其中“/dev/sda”为原有的硬盘设备,而“/dev/sdb”为新增的硬盘,没有包含有效的分区信息。对于已有的分区,将通过 列表的方式输出以下信息。

  • Device:分区的设备文件名称。
  • Boot:是否是引导分区。若是,则有“*”标识。
  • Start:该分区在硬盘中的起始位置(柱面数)。
  • End:该分区在硬盘中的结束位置(柱面数)。
  • Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
  • Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,与之相关的知识将在后面的章节介绍。
  • System:分区类型。
    识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。

三、规划硬盘中的分区

在硬盘设备中创建、删除、更改分区等操作同样通过 fdisk 命令进行,只需使用硬盘的设备文件作为参数。例如,执行“fdisk /dev/sdb”命令,即可进入交互式的分区管理界面中
在这里插入图片描述

  • 输入“m”指令后,可以查看各种操作指令的帮助信息
    在这里插入图片描述
  • “p”指令——列出硬盘中的分区情况
    在这里插入图片描述
  • “n”指令——新建分区
    使用“n”指令可以进行创建分区的操作,包括主分区和扩展分区。根据提示继续输入“p”选择创建主分区,输入“e”选择创建扩展分区。之后依次选择分区序号、起始位置、结束位置或分区大小即可完成新分区的创建。
    选择分区号时,主分区和扩展分区的序号只能为 1~4。为保证分区连续,分区起始位置一般由 fdisk 默认识别即可,结束位置或大小可以使用“+sizeM”或“+sizeG”的形式, 如“+20G”表示将该分区的容量设置为 20GB。
    1)创建两个主分区
    首先建立第一个主分区(/dev/sdb1),容量指定为 20GB,具体操作如下
命令(输入 m 获取帮助):n      //开始创建第 1 个分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p    	//选择创建的为主分区
分区号 (1-4,默认 1):1     //设置第一个主分区的编号为 1 
起始 扇区 (2048-209715199,默认为 2048):   	//直接按 Enter 键接受默认值
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB

在这里插入图片描述
按照类似的操作步骤继续创建第二个主分区(/dev/sdb2),容量也指定为 20GB,完成后可以输入“p”指令查看分区情况,具体操作如下:
在这里插入图片描述
2)创建一个扩展分区和两个逻辑分区
使用剩余的硬盘空间可以创建扩展分区,然后在扩展分区中创建逻辑分区。需要注意的是,若主分区、逻辑分区均已创建完毕(四个主分区号已用完),则再次输入“n”指令后将不再提示选择分区类别。
首先使用剩下的所有空间建立扩展分区(/dev/sdb4)(全部空间分配完毕后,将无法再建立新的主分区),具体操作如下:
在这里插入图片描述

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e   	//选择创建的为扩展分区
分区号 (3,4,默认 3):4      //选择 4 作为扩展分区的编号
起始 扇区 (83888128-209715199,默认为 83888128):
将使用默认值 83888128
Last 扇区, +扇区 or +size{K,M,G} (83888128-209715199,默认为 209715199):
将使用默认值 209715199
分区 4 已设置为 Extended 类型,大小设为 60 GiB

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

Command (m for help): n Partition type:
p	primary (2 primary, 1 extended, 1 free) l	logical (numbered from 5)
Select (default p): l   	//选择创建的为逻辑分区Adding logical partition 5
First sector (83890176-209715199, default 83890176):
Using default value 83890176
Last sector, +sectors or +size{K,M,G} (83890176-209715199,default 209715199):+2G Partition 5 of type Linux and of size 2 GiB is set

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

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9f21c99b

  设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41945087    20971520   83  Linux
/dev/sdb2        41945088    83888127    20971520   83  Linux
/dev/sdb4        83888128   209715199    62913536    5  Extended
/dev/sdb5        83890176    88084479     2097152   83  Linux
/dev/sdb6        88086528   109058047    10485760   83  Linux

  • 3.“d”指令——删除分区
    使用“d”指令可以删除指定的分区,根据提示继续输入需要删除的分区序号即可。在执行删除分区时一定要慎重,应首先使用 p 指令查看分区的序号,确认无误后再进行删除。需要注意的是,若扩展分区被删除,则扩展分区之下的逻辑分区也将同时被删除。 因此建议从最后一个分区开始删除,以免 fdisk 识别的分区序号发生紊乱。
    下面的操作过程将删除上一步建立的逻辑分区/dev/sdb6。
命令(输入 m 获取帮助):d
分区号 (1,2,4-6,默认 6):6
分区 6 已删除

  • “t”指令——变更分区的类型
    在 fdisk 分区工具中,新建的分区默认使用的分区类型为 Linux,一般不需要更改。但是若新建的分区需要用作 Swap 交换分区或其他类型的分区,则需要对分区类型进行变更以保持一致性,以避免在管理分区时产生混淆。
    使用“t”指令可以变更分区的 ID 号。操作时需要依次指定目标分区序号、新的 ID 号。不同类型的 ID 号对应不同的分区类型,不同的分区类型支持不同类型的文件系统,以十六进制数表示,在 fdisk 交互环境中可以输入“l”指令进行列表查看。最常用的 XFS、Swap 文件系统对应的 ID 号分别为 83、82,而用于 Windows 中的 NTFS 文件系统对应的 ID 号一般为 86。
    执行下面的操作可以将逻辑分区“dev/sdb5”的类型更改为 Swap,通过“p”指令可以确认分区/dev/sdb5 的分区 ID 已由默认的 83 变为 82。
    在这里插入图片描述
  • “w”和“q”指令——退出 fdisk 分区工具
Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.

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

[root@localhost ~]# partprobe /dev/sdb

四、创建文件系统

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

3.1 mkfs命令

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

[root@localhost ~]# ls /sbin/mkfs*      //查看当前操作系统内与 mkfs 命令相关的工具程序
/sbin/mkfs	/sbin/mkfs.ext2 /sbin/mkfs.ext4	/sbin/mkfs.msdos
/sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.ext4dev /sbin/mkfs.vfat

使用 mkfs 命令时,基本的命令格式如下:
mkfs -t 文件系统类型 分区设备

创建 XFS 文件系统
当需要创建 XFS 文件系统时,只需结合“-t xfs”选项指定类型,并指定要被格式化的分区设备即可。
例如

  • 执行以下操作将把分区/dev/sdb1 格式化为 XFS 文件系统。
[root@localhost ~]# mkfs -t xfs /dev/sdb1	//或执行 mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1	isize=512	agcount=4, agsize=1310720 blks
=	sectsz=512	attr=2, projid32bit=1
=	crc=1	finobt=0, sparse=0
data	=	bsize=4096	blocks=5242880, imaxpct=25
=	sunit=0		swidth=0 blks 
naming	=version 2	bsize=4096	ascii-ci=0 ftype=1 
log	=internal log bsize=4096	blocks=2560, version=2
=	sectsz=512	sunit=0 blks, lazy-count=1 
realtime	=none	extsz=4096	blocks=0, rtextents=0
[root@hostname ~]# mkfs -t ext4 /dev/sda2    //将分区 /dev/sdb2 格式化为EXT4文件系统

将分区 /dev/sdb6 格式化为FAT32文件系统(先通过fdisk工具添加/dev/sdb6分区,并且将ID号设为6)
[root@hostname ~]# mkfs -t vfat -F 32 /dev/sdb6
或者
[root@hostname ~]# mkfs.vfat -F 32 /dev/sdb6

3.2 mkswap 命令

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

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

例如
执行以下操作可以将分区/dev/sdb5 创建为交换分区。

[root@localhost ~]# fdisk -l /dev/sdb
…… //省略部分信息
/dev/sdb5	83890176	88084479	2097152	82 Linux swap / Solaris
…… //省略部分信息
[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 2097148 KiB 
no label, UUID=9673550e-9dfd-4fa8-8683-255680230f10
  • 对于新增加的交换分区,需要使用 swapon 命令进行启用,反之使用 swapoff 命令停用指定的交换分区。

例如
以下操作分别展示了启用、停用交换分区/dev/sdb5 的过程,以及总交换空间的变化情况。

[root@localhost ~]# cat /proc/meminfo | grep "SwapTotal:"
//查看总交换空间的大小
SwapTotal:	8257532 kB
[root@localhost ~]# swapon /dev/sdb5	//启用交换分区/dev/sdb5 
[root@localhost ~]# cat /proc/meminfo | grep "SwapTotal"
//确认交换空间大小已增加
SwapTotal:	10354680 kB
[root@localhost ~]# swapoff /dev/sdb5	//停用交换分区/dev/sdb5

五、挂载、卸载文件系统

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

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

5.1 挂载文件系统mount 命令

  • 挂载文件系统、ISO镜像到指定文件夹
    mount [ -t 文件系统类型 ] 存储设备 挂载点
    mount -o loop ISO镜像文件 挂载点目录

例如
以下操作用于将光盘设备挂载到/media/cdrom 目录。

[root@localhost ~]# mount /dev/cdrom /media/cdrom 
mount: /dev/sr0 is write-protected, mounting read-only
  • 使用不带任何参数或选项的 mount 命令时,将显示当前系统中已挂载的各个分区(文件系统)的相关信息,最近挂载的文件系统将显示在最后边。
[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) 
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
…… //省略部分信息
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
…… //省略部分信息
/dev/sr0 on /media/cdrom type iso9660 (ro,relatime,uid=0,gid=0,iocharset=utf8, mode=0400,dmode=0500)
/dev/sdb1 on /mailbox type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdc1 on /media/usbdisk type vfat (rw,relatime,fmask=0022,dmask=0077,codep age=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro)

例如
执行以 下 操 作 可 以 将 下 载 的 CentoOS 7 系 统 的 DVD 光 盘 镜 像 文 件“CentOS-7-x86_64-DVD-1611.iso”挂载到/media/mnt 目录下。

[root@localhost ~]# mkdir /media/mnt
[root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-1611.iso /media/mnt

5.2 卸载文件系统umount命令

  • 卸载已挂载的文件系统
    umount 存储设备位置
    umount 挂载点目录

5.3 设置文件系统的自动挂载

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

[root@localhost ~]# cat /etc/fstab
……//省略部分信息


/dev/mapper/cl-root	/	xfs	defaults	0 0
UUID=a36c9228-cded-4f3a-96b5-0c03ce2feb61 /boot xfs	defaults	0 0
/dev/mapper/cl-home	/home	xfs	defaults	0 0
/dev/mapper/cl-swap	swap	swap	defaults 0 0

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

  • 第 1 字段:设备名或设备卷标名。
  • 第 2 字段:文件系统的挂载点目录的位置。
  • 第 3 字段:文件系统类型,如 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 的配置记录。

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

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

5.4 查看磁盘使用情况

df 命令使用文件或者设备作为命令参数,较常用的选项为“-h”和“-T”。其中,“-h”选项可以显示更易读的容量单位,而“-T”选项用于显示对应文件系统的类型。
例如
执行“df -hT”命令可以查看当前系统中挂载的各文件系统的磁盘使用情况

[root@localhost ~]# df -hT
文件系统	类型	容量	已用	可用  已用%	挂载点
/dev/mapper/VolGroup-Lv_root  ext4	6.7G 4.1G 2.3G	65%	/
/dev/sda1	ext4	99M	11M	83M	12%	/boot
tmpfs	tmpfs 252M	0  252M	0%	/dev/shm
/dev/sdb1	ext4	19G	173M	18G	1%	/mailbox
Filesystem	Type	Size Used	Avail Use%	Mounted on
/dev/mapper/cl-root	xfs	50G  8.2G		42G	17% / devtmpfs	devtmpfs 3.8G	0	3.8G	0%	/dev
tmpfs	tmpfs	3.9G 144K	3.9G	1%	/dev/shm
tmpfs	tmpfs	3.9G 9.0M	3.9G	1%	/run
tmpfs	tmpfs	3.9G	0	3.9G	0%	/sys/fs/cgroup
/dev/sda1	xfs	1014M 173M	842M	18%	/boot
/dev/mapper/cl-home	xfs	42G	33M	42G	1%	/home
tmpfs	tmpfs	781M	16K	781M	1%	/run/user/0
/dev/sr0	iso9660	4.1G 4.1G	0 100%	/run/media/root/ CentOS 7 x86_64
/dev/loop0	iso9660	4.1G 4.1G	0 100%	/media/mnt
/dev/sdb1	xfs	20G	33M	20G	1%	/mailbox

猜你喜欢

转载自blog.csdn.net/ycycyyc_/article/details/107045614