在 CentOS 7 系统管理中,“挂载”是一个基础且至关重要的操作,它指的是将一个存储设备(如硬盘分区、U盘、光盘或网络共享)连接到系统目录树中的一个特定点(即“挂载点”),使得用户和应用程序可以通过该目录访问设备上的文件系统,理解并熟练掌握挂载技术,是有效管理服务器存储、扩展系统功能的前提,本文将系统性地介绍在 CentOS 7 中进行挂载操作的核心知识,从临时挂载到永久配置,再到常见问题的处理。
临时挂载:快速访问存储设备
临时挂载是最直接的挂载方式,它仅在当前系统运行期间有效,重启后挂载关系会自动消失,这种方式非常适合临时访问数据或测试新设备。
操作步骤:
识别设备
在挂载前,首先需要确定要挂载的设备名称,可以使用lsblk
或fdisk -l
命令查看系统已识别的块设备。lsblk
命令以树状结构展示,更为直观。[root@centos7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk └─sdb1 8:17 0 10G 0 part
在此示例中,我们新添加了一块磁盘
/dev/sdb
,它包含一个分区/dev/sdb1
,这就是我们准备挂载的目标。创建挂载点
挂载点是一个空目录,作为访问设备内容的入口,通常在/mnt
或/media
目录下创建,也可以根据需求在任意位置创建。[root@centos7 ~]# mkdir /data
执行挂载命令
使用mount
命令将设备挂载到指定目录,基本语法为mount [选项] <设备文件> <挂载点>
。[root@centos7 ~]# mount /dev/sdb1 /data
如果不指定文件系统类型,
mount
命令会尝试自动检测,为了确保准确性,建议使用-t
参数明确指定,mount -t ext4 /dev/sdb1 /data
。验证挂载结果
使用df -hT
命令可以查看已挂载的文件系统及其详细信息,包括设备、挂载点、总容量、已用空间、剩余空间和文件系统类型。[root@centos7 ~]# df -hT | grep sdb1 /dev/sdb1 ext4 9.8G 23M 9.2G 1% /data
至此,
/dev/sdb1
分区已成功挂载到/data
目录,所有对该目录的操作都会实际写入到/dev/sdb1
分区中。
永久挂载:通过 /etc/fstab
实现开机自动挂载
对于需要长期使用的存储设备,每次重启后手动挂载显然不切实际,CentOS 7 通过 /etc/fstab
(File System Table)文件来管理开机自动挂载的配置。
/etc/fstab
文件详解
该文件每行定义一个文件系统的挂载规则,共包含六个字段,各字段间用空格或制表符分隔。
字段顺序 | 字段含义 | 示例 | 说明 |
---|---|---|---|
1 | <设备> 或 <UUID> | UUID=xxxx-xxxx | 要挂载的设备,推荐使用 UUID(通用唯一标识符),因为它在设备重启或重插后不会改变,比 /dev/sdb1 这样的设备名更稳定,使用 blkid /dev/sdb1 可查询 UUID。 |
2 | <挂载点> | /data | 设备挂载到的目录,对于交换分区,此处为 swap 。 |
3 | <文件系统类型> | ext4 , xfs , nfs | 指定文件系统的类型,必须与设备格式化时的类型一致。 |
4 | <挂载选项> | defaults | 挂载参数,多个参数用逗号隔开。defaults 是一个常用组合,等同于 rw, suid, dev, exec, auto, nouser, async 。 |
5 | <dump备份> | 0 或 1 | 是否使用 dump 工具进行备份。1 表示备份,0 表示不备份,通常设为 0 。 |
6 | <fsck检查> | 0 , 1 , 2 | 开机时是否使用 fsck 进行磁盘检查,根分区()应为 1 ,其他需要检查的分区为 2 ,不需要检查的为 0 。 |
配置永久挂载示例:
获取设备 UUID
[root@centos7 ~]# blkid /dev/sdb1 /dev/sdb1: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4" PARTUUID="..."
使用vi
或nano
编辑器在文件末尾添加一行配置。[root@centos7 ~]# vi /etc/fstab
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /data ext4 defaults 0 2
测试配置
重要提示:在直接重启前,务必测试/etc/fstab
文件的语法是否正确,否则可能导致系统无法启动,使用mount -a
命令,它会挂载fstab
文件中所有尚未挂载的条目,如果没有任何输出,通常表示配置无误。[root@centos7 ~]# mount -a
再次使用
df -hT
确认/data
是否依然挂载,如果成功,那么下次重启时系统会自动完成挂载。
卸载文件系统
当不再需要访问某个设备时,应该将其从文件系统中卸载,使用 umount
命令。
[root@centos7 ~]# umount /data # 或者使用设备名 [root@centos7 ~]# umount /dev/sdb1
常见问题:设备正忙
如果卸载时提示 “target is busy”,表示有进程正在使用该挂载点下的文件。
- 找出占用进程
使用lsof
或fuser
命令查看是哪个进程在占用。[root@centos7 ~]# lsof /data # 或 [root@centos7 ~]# fuser -mv /data
- 处理占用进程
根据输出结果,可以结束相关进程(kill <PID>
),或等待其自然结束,然后再尝试卸载。 - 懒卸载
作为最后手段,可以使用umount -l
进行懒卸载,它会立即将挂载点从目录树中移除,但会等到设备不再被占用时才真正完成底层卸载操作,需谨慎使用。
相关问答 FAQs
问题1:我修改了 /etc/fstab
文件后重启,系统无法进入桌面或登录界面,该怎么办?
解答: 这通常是由于 /etc/fstab
文件中的配置错误(如设备名错误、UUID 不匹配、文件系统类型错误等)导致的,系统在启动时尝试挂载该条目失败,从而卡住,解决方法如下:
- 重启服务器,在启动引导菜单(GRUB)出现时,按
e
键进入编辑模式。 - 找到以
linux16
或linuxefi
开头的行,将ro
(只读)参数修改为rw
(读写),并在行末添加init=/bin/bash
。 - 按
Ctrl + X
启动,系统将进入一个只有 root 权限的紧急 shell。 - shell 中,根文件系统是可读写的,使用
vi /etc/fstab
命令编辑该文件,找到并注释掉(在行首加 )或删除错误的配置行。 - 保存并退出后,执行
reboot -f
强制重启,系统现在应该可以正常启动了,之后,在系统内仔细检查并修正/etc/fstab
的配置。
问题2:为什么我的新硬盘挂载到 /data
目录后,普通用户无法在里面创建文件或文件夹?
解答: 这是一个典型的 Linux 权限问题,当你挂载一个新文件系统时,其挂载点目录(/data
)的权限和所有者默认继承自挂载操作执行者(通常是 root 用户)。/data
目录的所有者是 root
,所属组是 root
,其他用户默认只有读取和执行权限,没有写入权限。
解决方法:
- 修改目录权限(推荐): 使用
chown
和chmod
命令更改挂载点的所有者和权限,要让user1
用户拥有完全控制权,可以执行:[root@centos7 ~]# chown user1:user1 /data [root@centos7 ~]# chmod 755 /data
如果希望某个用户组的所有用户都能写入,可以:
[root@centos7 ~]# chown root:developers /data [root@centos7 ~]# chmod 775 /data
- 使用挂载选项: 对于某些文件系统(如 ext4),可以在
/etc/fstab
的挂载选项中指定uid
和gid
,但这通常用于 FAT/NTFS 等不支持 Linux 权限模型的文件系统,对于原生 Linux 文件系统,直接修改目录权限是更标准和灵活的做法。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复