Linux磁盘管理与文件系统——理论与实操

前言

  • 磁盘(disk)是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(soft disk,简称软盘),如今常用的磁盘是硬磁盘(hard disk,简称硬盘)
  • 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法

一、磁盘基础

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

1.1 硬盘的结构

1.1.1 物理结构

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

1.1.2 数据结构

  • 扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区
  • 磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)
  • 柱面:在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)

1.1.3 存储容量

  • 硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
  • 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域,用 fdisk -l 查看分区信息
[root@localhost ~]# fdisk -l
    下面是详细信息
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 512 字节
I/O 大小(最小/最佳)512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a58c6

   设备 Boot      Start         End      Blocks   Id  System            
/dev/sda1   *        2048    12584959     6291456   83  Linux         ' //这是引导分区'
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux

磁盘结构

1.1.4 硬盘的接口

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

  • ATA,全称 Advanced Technology Attachment,并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代
  • SATA,全称 Serial ATA,抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
  • SCSI,全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站级个人电脑以及服务器所使用,资料传输时 CPU 占用率较低,转速快,支持热插拔等
  • SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s

1.2 磁盘分区表示

1.2.1 MBR

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

1.2.2 磁盘分区的表示

  • 主引导记录(MBR: Master Boot Record)
    • MBR位于硬盘第一个物理扇区处
    • MBR中包含硬盘的主引导程序和硬盘分区表
    • 分区表有4个分区记录区,每个分区记录区占16个字节
  • 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.2.3 Linux 中使用的文件系统类型

  • 文件系统(File System)类型决定了向分区中存放,读取文件数据的方式和效率,在对分区进行格式化的时候需要选择所用的文件系统类型
  • 在Windows操作系统中,经常使用的文件系统类型包括FAT32 , NTFS等格式
  • 在 Linux 系统中,最常使用的文件系统主要包括以下几种格式
    • XFS
      • 开启了日志功能,即使发生宕机也不怕数据遭到破坏,可以根据日志记录在短时间内进行数据恢复。
      • 高性能的日志文件系统,特别擅长处理大文件,可支持上百万T字节的存储空间
      • CentOS 7系统默认使用XFS文件系统
    • EXT4文件系统:
      • 存放文件和目录数据的分区
      • 高性能的日志型文件系统
      • CentOS 6系统中默认使用的文件系统
    • SWAP,交换文件系统
      • 为Linux系统建立的交换分区
      • 交换分区相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题
      • 一般建议将交换分区的大小设置为物理内存的1.5-2倍
    • Linux支持的其它文件系统类型
      • FAT16 , FAT32 , NTFS
      • EXT4,JFS …
  • 注意
    • JFS 文件系统多用于商业版本的 UNIX 操作系统中,具有出色的性能表现
    • NTFS 是微软公司的专有文件系统,Linux 系统默认只支持从 NTFS 分区读取文件,如果需要向 NTFS 分区中写入文件数据,需要结合其他辅助软件(如 NTFS-3G)

二、管理磁盘及分区

  • 在 Linux 服务器中,当现有硬盘的分区规划不能满足要求(例如,根分区的剩余空间过少,无法继续安装新的系统程序)时,就需要对硬盘中的分区进行重新规划和调整,有时候 还需要添加新的硬盘设备来扩展存储空间
  • 实现上述操作需要用到 fdisk 磁盘及分区管理工具,fdisk 是大多数 Linux 操作系统中自带的基本工具之一
  • 增加硬盘设备时首先需要在机箱内进行硬盘接口的物理连接。若是在 VMware 虚拟机环境中,可以修改虚拟主机的设置,添加一块“Hard Disk”硬盘设备(如添加一块 100GB 的SCSI 硬盘)

2.1检测并确认新硬盘

  • 挂接好新的硬盘设备并启动主机后,Linux 操作系统会自动检测并加载该硬盘,无须额外安装驱动
  • fdisk 命令格式
fdisk -l [磁盘设备]

fdisk [磁盘设备]
  • 查看时,带有“*”标识的是引导分区
  • fdisk /dev/sdb 进入交互式的分区管理界面
  • 常用指令
常用指令解释说明
p列出硬盘中的分区情况,信息显示的格式与执行"fdisk -l"命令相同
n创建新分区
d删除分区
t变更分区类型,转换格式
w保持配置
q退出
l查看分区对应的系统ID号
  • 在硬盘设备中创建、删除、更改分区等操作同样通过 fdisk 命令进行,只需使用硬盘的设备文件作为参数
  • 命令示例:
    • 执行“fdisk /dev/sdb”命令,即可进入交互式的分区管理界面中
[root@localhost ~]# fdisk /dev/sda1
欢迎使用 fdisk (util-linux 2.23.2)
  • 在该操作界面中的“Command (m for help):”提示符后,输入特定的分区操作指令, 可以完成各项分区管理任务
    输入“m”指令后,可以查看各种操作指令的帮助信息
Command (m for help)
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
  • 执行“fdisk -l”命令可以查看、确认新增硬盘的设备名称和位置
  • “fdisk -l”命令的作用是列出当前系统中所有硬盘设备及其分区的信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos
Disk identifier: 0x000aa89a

Device	Boot	Start	End	Blocks	Id System
/dev/sda1	*	2048	2099199	1048576	83 Linux
/dev/sda2		2099200	209715199	103808000	8e Linux LVM

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
……省略部分内容
  • “/dev/sda”为原有的硬盘设备,而“/dev/sdb”为新增的硬盘,没有包含有效的分区信息
  • 已有的分区,将通过列表的方式输出以下信息
    • Device:分区的设备文件名称
    • Boot:是否是引导分区。若是,则有“*”标识
    • Start:该分区在硬盘中的起始位置(柱面数)
    • End:该分区在硬盘中的结束位置(柱面数)
    • Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节
    • Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制
    • System:分区类型

2.2 “p”指令——列出硬盘中的分区情况

  • 使用“p”指令可以列出详细的分区情况,信息显示的格式与执行“fdisk -l”命令相同。硬盘中尚未建立分区时,输出的列表信息为空
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos
Disk identifier: 0xf59e5bfe

Device Boot	Start	End	Blocks	Id System

2.3 “n”指令——新建分区

  • 使用“n”指令可以进行创建分区的操作,包括主分区和扩展分区
  • 根据提示继续输入“p” 选择创建主分区,输入“e”选择创建扩展分区
  • 之后依次选择分区序号、起始位置、结束位置或分区大小即可完成新分区的创建
  • 选择分区号时,主分区和扩展分区的序号只能为 1~4
  • 为保证分区连续,分区起始位置一般由 fdisk 默认识别即可,结束位置或大小可以使用“+sizeM”或“+sizeG”的形式,如“+20G”表示将该分区的容量设置为 20GB

2.3.1 创建两个主分区

  • 首先建立第一个主分区(/dev/sdb1),容量指定为 20GB
Command (m for help): n	//开始创建第 1 个分区
Partition type:
p	primary (0 primary, 0 extended, 4 free) 
e	extended
Select (default p): p		//选择创建的为主分
Partition number (1-4, default 1): 1	//设置第一个主分区的编号为 1
First sector (2048-209715199, default 2048):	//直接按Enter 键接受默认值
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +20G
Partition 1 of type Linux and of size 20 GiB is set
  • 按照类似的操作步骤继续创建第二个主分区(/dev/sdb2),容量也指定为 20GB,完成后可以输入“p”指令查看分区情况
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk label type: dos
Disk identifier: 0xa0ac809e

Device Boot	Start	End	Blocks	Id	System
/dev/sdb1	2048	41945087	20971520	83 Linux
/dev/sdb2	41945088	83888127	20971520	83 Linux

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

  • 使用剩余的硬盘空间可以创建扩展分区,然后在扩展分区中创建逻辑分区。需要注意的是,若主分区、逻辑分区均已创建完毕(四个主分区号已用完),则再次输入“n”指令后将不再提示选择分区类别
  • 首先使用剩下的所有空间建立扩展分区(/dev/sdb4)(全部空间分配完毕后,将无法再建立新的主分区)
Command (m for help): n
Partition type:
p	primary (2 primary, 0 extended, 2 free) 
e	extended
Select (default p): e		//选择创建的为扩展分区
Partition number (3,4, default 3): 4	//选择 4 作为扩展分区的编号
First sector (83888128-209715199, default 83888128):
Using default value 83888128
Last sector, +sectors or +size{K,M,G} (83888128-209715199, default 209715199): 
Using default value 209715199
Partition 4 of type Extended and of size 60 GiB is set
  • 接下来在扩展分区中建立第一个逻辑分区(/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”指令查看分区情况
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk label type: dos
Disk identifier: 0x39525125
Device 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

2.3.3 “d”指令——删除分区

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

2.3.4 “t”指令——变更分区的类型

  • 使用“t”指令可以变更分区的 ID 号
  • 操作时需要依次指定目标分区序号、新的 ID 号
  • 不同类型的 ID 号对应不同的分区类型
  • 不同的分区类型支持不同类型的文件系统
  • 以十六进制数表示
  • 在fdisk 交互环境中可以输入“l”指令进行列表查看
  • XFS、Swap 文件系统对应的 ID 号分别为 83、82
  • Windows 中的 NTFS 文件系统对应的 ID 号一般为 86
  • 例如:
    • 将逻辑分区“dev/sdb5”的类型更改为 Swap,通过“p”指令可以确认分区/dev/sdb5 的分区 ID 已由默认的 83 变为 82
Command (m for help): t
Partition number (1,2,4,5, default 5): 5 
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris' Command (m for help): p
…… //省略部分信息
/dev/sdb5	83890176	88084479	2097152	82 Linux swap / Solaris

2.3.5 “w”和“q”指令——退出 fdisk 分区工具

  • 完成对硬盘的分区操作以后,可以执行“w”或“q”指令退出 fdisk 分区工具
    • “w”指令将保存分区操作
    • “q”指令不会保存对硬盘所做的分区操作
  • 对已包含数据的硬盘进行分区时,一定要做好数据备份,保存之前要确保操作无误,以免损坏数据。若无法确定本次分区操作是否正确,建议使用“q”指令不保存退出
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 操作系统中,使用 fdisk 工具在硬盘中建立分区以后,还需要对分区进行格式化并挂载到系统中的指定目录,然后才能用于存储文件、目录等数据

3.1 创建文件系统

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

3.1.1 mkfs 命令的使用

  • 实际上 mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,这些程序位于/sbin/目录中,例如:支持XFS分区格式的mkfs.xfs程序等
  • 执行“ls /sbin/mkfs*”命令,可以查看当前操作系统内与mkfs 命令相关的工具程序
[root@localhost ~]# ls /sbin/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 文件系统类型	分区设备

(1)创建 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

(2)创建 FAT32 文件系统

  • 一般来说,不建议在 Linux 操作系统中创建或使用 Windows 操作系统中的文件系统类型,包括 FAT16、FAT32 等,但一些特殊情况,如 Windows 操作系统不可用、U 盘系统被病毒破坏等情况除外
  • 若要在Linux 操作系统中创建FAT32 文件系统,可结合“-t vfat”选项指定类型,并添加“-F 32”选项指定 FAT 的版本
  • 例如:
    • 将分区/dev/sdb6 格式化为 FAT32 文件系统(先通过 fdisk 工具添加/dev/sdb6 分区,并将 ID 号设为 b)
[root@localhost ~]# mkfs -t vfat -F 32 /dev/sdb6
mkfs.fat 3.0.20 (12 Jun 2013)

或者

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

3.1.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

3.2 挂载、卸载文件系统

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

3.2.1 挂载文件系统

命令格式

mount   [ -t 文件系统类型 ]	存储设备 挂载点
mount -o loop ISO镜像文件 挂载点目录
mount -a  将现在所有能挂载的都挂载
  • 其中,文件系统类型通常可以省略(由系统自动识别)
  • 存储设备即对应分区的设备文件名(如/dev/sdb1、/dev/cdrom)或网络资源路径挂载点
  • 即用户指定用于挂载的目录
  • 光盘对应的设备文件通常使用’/dev/cdrom’,其实这是一个连接文件,连接到实际的光盘设备’/dev/sr0’。这两个名称都表示光盘设备。由于光盘是只读的存储介质,因此在挂载时系统会出现’mounting read-only’的提示信息
  • 示例:
    • 你将光盘设备挂载到/media/cdrom 目录
[root@localhost ~]# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
  • 挂载Linux分区或U盘设备时的用法也一样,只需要指定正确的设备位置和挂载目录即可
  • 示例:
    • 将 5.1.2 节建立的/dev/sdb1 分区挂载到新建的/mailbox 目录下
[root@localhost ~]# mkdir /mailbox
[root@localhost ~]# mount /dev/sdb1 /mailbox
  • 在Linux系统中,U盘设备被模拟成SCSI设备,因此与挂载普通的SCSI硬盘中的分区并没有明显的区别。U盘一般使用FAT16或FAT32的文件系统,若不确定U盘设备文件的位置,可以先执行‘fdisk -l’命令进行查看,确认
  • 示例:
    • 将位于/dev/sdc1 的 U 盘设备挂载到新建的/media/usbdisk 目录下
[root@localhost ~]# mkdir /media/usbdisk
[root@localhost ~]# mount /dev/sdc1 /media/usbdisk
  • 使用不带任何参数或选项的 mount 命令时,将显示当前系统中已挂载的各个分区(文件系统)的相关信息,最近挂载的文件系统将显示在最后边
  • proc、sysfs、tmpfs 等文件系统是 Linux 运行所需要的临时文件系统,并没有实际的硬盘分区与其相对应,因此也称为“伪文件系统”,例如,proc 文件系统实际上映射了内存及 CPU 寄存器中的部分数据
[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)
  • mount 命令的“-t”选项用于指定文件系统类型,而“-o”选项则用来描述设备或文件系统的挂载方式
  • 命令格式
mount   [ -o 挂载参数 ]	存储设备 挂载点
  • 在实际工作中,可能会经常从互联网中下载一些软件或应用系统的 ISO 镜像文件,在无法刻录光盘的情况下,需要将其解压后才能浏览、使用其中的文件数据
  • 若使用 mount 挂载命令,则无须解开文件包即可浏览、使用 ISO 镜像文件中的数据
  • “.iso”镜像文件通常被视为一种特殊的“回环”文件系统,因此在挂载时需要添加“-o loop”选项
  • 示例:
    • 将下载的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

3.2.2 卸载文件系统

  • 需要卸载文件系统时使用的命令为 umount,使用挂载点目录或对应设备的文件名作为卸载参数
  • Linux 操作系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载
  • 示例:
    • 将分别卸载前面挂载的 Linux 分区、光盘设备
[root@localhost ~]# umount /mailbox	//通过挂载点目录卸载对应的分区
[root@localhost ~]# umount /dev/cdrom //通过设备文件卸载光盘

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

  • 系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据,Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统
  • 默认的fstab文件中包括了根分区,/boot分区,交换分区及proc,tmpfs等伪文件系统的挂载配置
  • 示例:
    • 查看当前系统内自动挂载的设备或分区
[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/ssdb1  /mailbox   xfs  defaults 0 0
  • 使用 mount、umount 进行挂载、卸载操作时,若在/etc/fstab 文件中已设置有对应的挂载记录,则只需指定挂载点目录或设备文件名中的一个作为参数

3.2.4 查看磁盘使用情况

  • 不带选项及参数的 mount 命令可以显示分区的挂载情况,若要了解系统中已挂载各文件系统的磁盘使用情况(如剩余磁盘空间比例等),可以使用 df 命令
  • 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值