主题
挂载与自动挂载
在 Rocky Linux 系统中,挂载(mounting)是将存储设备或分区附加到文件系统树的过程,使其内容可以访问。自动挂载则是通过配置让系统在启动时自动挂载特定的设备。本教程将详细介绍文件系统的挂载方法、/etc/fstab 配置文件的使用以及各种高级挂载选项。
挂载基础
挂载概念
在 Linux 系统中,所有存储设备都必须挂载到文件系统树中的某个目录(称为挂载点)才能被访问。挂载过程将设备的文件系统与系统的目录树连接起来,使得用户可以像访问普通文件和目录一样访问设备上的数据。
主要概念:
- 挂载点:文件系统树中的目录,存储设备将挂载到这里
- 设备标识符:用于标识要挂载的存储设备
- 文件系统类型:指定设备上使用的文件系统格式
- 挂载选项:控制设备如何挂载和访问的参数
设备标识符
在 Rocky Linux 中,设备可以通过多种方式标识:
- 设备名称:如
/dev/sda1、/dev/nvme0n1p1 - UUID:通用唯一标识符,如
5f96e737-f0f4-4a81-98b8-bfc24057f7bd - 标签:文件系统标签,如
DATA或BACKUP - PARTUUID:分区 UUID(GPT 分区表)
使用 UUID 或标签而不是设备名称可以提高系统的稳定性,因为设备名称可能会在系统重启或硬件更改后发生变化。
常用挂载命令
查看当前挂载的文件系统
bash
# 显示所有已挂载的文件系统
mount
# 以人类可读的格式显示
mount -h
# 显示特定文件系统类型的挂载
mount -t ext4
# 使用 df 命令查看
df -h挂载存储设备
基本语法:
bash
mount [选项] 设备 挂载点常用选项:
-t 类型:指定文件系统类型-o 选项:指定挂载选项-r:以只读方式挂载-w:以可写方式挂载(默认)-a:挂载 /etc/fstab 中所有未挂载的文件系统
手动挂载设备
创建挂载点
在挂载设备之前,需要创建一个目录作为挂载点:
bash
# 创建挂载点目录
sudo mkdir -p /mnt/data挂载分区
bash
# 挂载 /dev/sdb1 到 /mnt/data
sudo mount /dev/sdb1 /mnt/data
# 指定文件系统类型挂载
sudo mount -t ext4 /dev/sdb1 /mnt/data
# 以只读方式挂载
sudo mount -r /dev/sdb1 /mnt/data
# 使用 UUID 挂载
sudo mount UUID="5f96e737-f0f4-4a81-98b8-bfc24057f7bd" /mnt/data
# 使用标签挂载
sudo mount LABEL="DATA" /mnt/data挂载 ISO 文件
bash
# 挂载 ISO 文件
sudo mount -o loop /path/to/file.iso /mnt/iso挂载 NFS 共享
bash
# 挂载 NFS 共享
sudo mount -t nfs server:/share /mnt/nfs挂载 Windows 共享(CIFS)
bash
# 安装 cifs-utils
sudo dnf install cifs-utils -y
# 挂载 Windows 共享
sudo mount -t cifs //server/share /mnt/win -o username=user,password=pass
# 更安全的方式(从文件读取凭据)
echo "username=user" > ~/.smbcredentials
echo "password=pass" >> ~/.smbcredentials
chmod 600 ~/.smbcredentials
sudo mount -t cifs //server/share /mnt/win -o credentials=~/.smbcredentials卸载设备
bash
# 卸载指定挂载点
sudo umount /mnt/data
# 卸载指定设备
sudo umount /dev/sdb1
# 强制卸载(谨慎使用)
sudo umount -f /mnt/data
# 懒惰卸载(等待设备不忙时卸载)
sudo umount -l /mnt/data/etc/fstab 配置文件
/etc/fstab(文件系统表)是一个配置文件,用于定义系统启动时自动挂载的文件系统。
fstab 文件结构
# 设备 挂载点 文件系统类型 挂载选项 转储 检查顺序
UUID=xxx / ext4 defaults 1 1
/dev/sda2 swap swap defaults 0 0
/dev/sdb1 /mnt/data ext4 defaults 0 2各字段说明:
- 设备:要挂载的设备,可以是设备名称、UUID、LABEL 等
- 挂载点:文件系统挂载的目录
- 文件系统类型:如 ext4、xfs、vfat、swap 等
- 挂载选项:控制文件系统如何挂载的选项
- 转储:是否使用 dump 工具备份(0=不备份,1=备份)
- 检查顺序:fsck 检查顺序(0=不检查,1=首先检查,2=其次检查)
查找设备 UUID
bash
# 使用 blkid 命令查找 UUID
sudo blkid
# 查找特定设备的 UUID
sudo blkid /dev/sdb1
# 查看所有分区的 UUID
ls -la /dev/disk/by-uuid/编辑 fstab 文件
bash
sudo vim /etc/fstab添加新的挂载项
示例:
# 使用 UUID 挂载 ext4 分区
UUID=5f96e737-f0f4-4a81-98b8-bfc24057f7bd /mnt/data ext4 defaults 0 2
# 使用 LABEL 挂载 NTFS 分区
LABEL=Windows /mnt/windows ntfs-3g defaults,umask=0002 0 0
# 挂载 NFS 共享
server:/share /mnt/nfs nfs defaults 0 0
# 挂载 CIFS 共享
//server/share /mnt/win cifs credentials=/home/user/.smbcredentials,defaults 0 0
# 挂载 tmpfs
none /tmp tmpfs defaults,noatime,mode=1777 0 0测试 fstab 配置
在修改 fstab 文件后,应该测试配置是否正确,以避免系统无法启动:
bash
# 重新挂载所有在 fstab 中定义的文件系统
sudo mount -a
# 检查是否有错误
dmesg | grep mount如果执行 sudo mount -a 没有错误输出,则配置正确。
常用挂载选项
基础挂载选项
| 选项 | 说明 |
|---|---|
defaults | 使用默认选项(rw, suid, dev, exec, auto, nouser, async) |
noauto | 不自动挂载 |
user | 允许普通用户挂载 |
nouser | 仅允许 root 用户挂载 |
ro | 只读挂载 |
rw | 读写挂载 |
remount | 重新挂载已挂载的文件系统 |
性能相关选项
| 选项 | 说明 |
|---|---|
async | 异步 I/O(默认) |
sync | 同步 I/O(更安全但速度较慢) |
noatime | 不更新文件访问时间(提高性能) |
nodiratime | 不更新目录访问时间 |
relatime | 仅在修改时间后更新访问时间 |
barrier=0 | 禁用写屏障(提高性能但降低安全性) |
data=writeback | 数据写入策略(ext4) |
安全相关选项
| 选项 | 说明 |
|---|---|
nosuid | 禁用 setuid 位 |
nodev | 禁用设备文件 |
noexec | 禁用可执行文件 |
bind | 绑定挂载(将一个目录挂载到另一个目录) |
private | 挂载命名空间隔离 |
shared | 共享挂载命名空间 |
文件系统特定选项
ext4 选项
defaults,noatime,nodiratime,errors=remount-ro,barrier=1,data=orderedXFS 选项
defaults,noatime,nodiratime,attr2,inode64,noquotaNTFS 选项
defaults,umask=0002,uid=1000,gid=1000FAT/VFAT 选项
defaults,umask=0002,uid=1000,gid=1000,utf8,shortname=mixed特殊挂载类型
临时文件系统(tmpfs)
tmpfs 是一种基于内存的临时文件系统,速度非常快,但在系统重启后数据会丢失。
bash
# 手动挂载 tmpfs
sudo mount -t tmpfs -o size=1G tmpfs /mnt/tmp
# 在 fstab 中配置
none /mnt/tmp tmpfs defaults,size=1G,noatime,mode=1777 0 0绑定挂载
绑定挂载允许将一个目录或文件挂载到另一个目录。
bash
# 手动绑定挂载
sudo mount --bind /home/user/data /var/www/html/data
# 在 fstab 中配置
/home/user/data /var/www/html/data none bind 0 0
# 递归绑定挂载
sudo mount --rbind /home/user/data /var/www/html/data自动挂载(autofs)
autofs 提供了按需挂载文件系统的功能,当访问挂载点时才自动挂载设备,适用于不经常使用的设备。
安装 autofs
bash
sudo dnf install autofs -y配置 autofs
- 编辑主配置文件:
bash
sudo vim /etc/auto.master添加以下行:
/misc /etc/auto.misc
/net -hosts
/- /etc/auto.direct- 创建直接映射文件:
bash
sudo vim /etc/auto.direct添加要自动挂载的设备:
/mnt/data -fstype=ext4 :/dev/sdb1
/mnt/iso -fstype=iso9660,ro,loop :/path/to/file.iso
/mnt/nfs -fstype=nfs :server:/share- 启动 autofs 服务:
bash
sudo systemctl start autofs
sudo systemctl enable autofs网络文件系统挂载
NFS 挂载选项
bash
# 基本 NFS 挂载选项
sudo mount -t nfs -o rw,hard,intr,rsize=8192,wsize=8192 server:/share /mnt/nfs
# 在 fstab 中配置
server:/share /mnt/nfs nfs defaults,hard,intr,rsize=8192,wsize=8192 0 0CIFS 挂载选项
bash
# 基本 CIFS 挂载选项
sudo mount -t cifs -o username=user,password=pass,uid=1000,gid=1000 //server/share /mnt/win
# 在 fstab 中配置
//server/share /mnt/win cifs credentials=/home/user/.smbcredentials,uid=1000,gid=1000 0 0挂载问题排查
设备忙错误
如果尝试卸载设备时遇到 "device is busy" 错误:
bash
# 查找使用该设备的进程
sudo fuser -m /mnt/data
# 或者
sudo lsof /mnt/data
# 终止使用该设备的进程
sudo fuser -k -m /mnt/data
# 或者使用懒惰卸载
sudo umount -l /mnt/datafstab 配置错误导致系统无法启动
如果因 fstab 配置错误导致系统无法正常启动,可以:
- 在引导时进入单用户模式
- 编辑 fstab 文件修复错误
- 或者暂时注释掉有问题的行
进入单用户模式的方法:
- 在 GRUB 引导菜单中选择编辑选项
- 在 Linux 内核行末尾添加
single或1 - 按 Ctrl+X 启动
文件系统检查失败
如果挂载时出现文件系统错误:
bash
# 卸载设备(如果已挂载)
sudo umount /dev/sdb1
# 检查并修复文件系统
sudo fsck.ext4 /dev/sdb1
# 或对于 XFS
sudo xfs_repair /dev/sdb1最佳实践
使用 UUID 或 LABEL 挂载:避免因设备名称变化导致的挂载问题
设置适当的挂载选项:根据文件系统类型和用途选择合适的挂载选项
分离关键目录:将 /home、/var、/tmp 等目录挂载在单独的分区
备份 fstab 文件:在修改前备份 /etc/fstab
测试挂载配置:修改 fstab 后使用
mount -a测试配置使用自动挂载:对于不经常使用的设备,考虑使用 autofs
设置正确的权限:为挂载点设置适当的所有者和权限
监控挂载状态:定期检查文件系统挂载状态和磁盘空间
总结
文件系统挂载和自动挂载配置是 Rocky Linux 系统管理中的重要技能。本教程详细介绍了手动挂载设备、配置 /etc/fstab 实现自动挂载、各种特殊挂载类型以及常见问题的排查方法。
通过正确配置和管理文件系统挂载,您可以确保系统存储资源的合理利用,提高数据访问效率和安全性。在进行任何挂载配置更改时,务必小心谨慎,始终备份重要数据,并在修改后测试配置是否正确,以避免系统启动问题。
对于更高级的存储管理需求,您还可以学习 LVM(逻辑卷管理)和 RAID 等技术,它们提供了更灵活和可靠的存储解决方案。