如何在 Ubuntu 中挂载存储设备:从入门到高级的完整指南

目次

1. “挂载”在 Ubuntu 中是什么意思?

挂载的意义与作用

在 Linux 和 Ubuntu 中,“挂载”指的是将存储设备附加到文件系统的过程
例如,仅仅把 USB 闪存盘或外部硬盘插入电脑,并不会立刻让其内容可访问。Ubuntu 会执行一个称为“挂载”的过程,将该存储设备的内容显示在特定位置,如 /media/mnt,这些位置被称为挂载点。

可以把它想象成把一个“组件”(存储设备)物理地连接到“主系统”(Ubuntu),从而最终能够使用其内容。

这一概念不仅适用于 USB 等可移动介质,也适用于内部硬盘分区、SSD,甚至网络共享文件夹。

文件系统与设备之间的关系

在 Linux(包括 Ubuntu)中,所有文件和目录都存在于从根目录 (/) 开始的单一层次结构中
要将外部设备整合进来,需要先创建一个空目录作为挂载点,然后将设备“附加”到该目录。挂载后,系统会把该设备视为文件系统的一部分,就好像它一直存在一样。

例如,如果你在 /media/usb 处挂载一个 USB 驱动器,它的内容就会出现在该目录下,并且可以像其他文件一样进行复制、编辑或删除。

关键点在于 Ubuntu 必须先挂载设备才能访问它。即使系统已经识别到硬件,在挂载完成之前也无法进行文件的读写操作。

Ubuntu 与其他操作系统(Windows / macOS)的区别

在 Windows 中,插入 USB 设备通常会自动分配一个驱动器字母,如 D: 或 E:。而在 Ubuntu 中,设备是否自动挂载取决于系统设置。在桌面环境下,大多数存储设备会自动挂载,但在 服务器环境或以终端为主的设置中,往往需要手动挂载

另一个区别是文件系统的认知。Windows 用户很少需要考虑 NTFS、FAT32 等文件系统类型,但在 Ubuntu 上,挂载选项和兼容性会因文件系统而异。例如,要完整支持 NTFS 设备,可能需要安装 ntfs-3g 包。

总之,Ubuntu 中的挂载不仅仅是连接硬件——它是一个 将存储整合进操作系统文件系统的关键过程。在接下来的章节中,我们将详细探讨实用的挂载方法和配置示例。

2. Ubuntu 手动挂载:基础方法

mount 命令的基本语法与用法

要在 Ubuntu 中手动挂载存储设备,需要使用 mount 命令。
虽然语法简洁,但功能极其强大且灵活。

sudo mount [options] device_path mount_point

例如,要将 USB 驱动器(/dev/sdb1)挂载到目录 /mnt/usb,可以使用以下命令:

sudo mount /dev/sdb1 /mnt/usb

执行该命令后,USB 驱动器上的文件将出现在 /mnt/usb 中,你即可对其进行读写操作。

请注意,挂载需要 root 权限,因此必须使用 sudo 来执行该命令。

创建与管理挂载点

挂载点是用于设备附加位置的 空目录
需要提前创建该目录。

sudo mkdir -p /mnt/usb

-p 选项会在父目录不存在时自动创建它们。
临时的手动挂载通常放在 /mnt/media 下,但你也可以使用任何自己喜欢的目录。

设备挂载后,挂载点目录会显示设备的文件。卸载后,它会恢复为一个空目录

如何识别设备名称和 UUID

(此部分内容待续)

要挂载设备,必须知道它的 设备名称(例如 /dev/sdb1)。可以使用以下命令进行检查:

lsblk

lsblk 命令列出所有已连接的块设备(硬盘、固态硬盘、USB 驱动器等),包括它们的大小和挂载状态。

如果需要检查 UUID(通用唯一标识符),请使用:

sudo blkid

blkid 命令显示每个设备的 UUID 和文件系统类型(ext4、ntfs、fat32 等)。UUID 在使用 fstab 自动挂载时尤为重要,后面会详细讨论。

使用 umount 卸载设备

要安全地分离已挂载的设备,请使用 umount 命令。
例如,卸载挂载在 /mnt/usb 的设备:

sudo umount /mnt/usb

也可以直接指定设备名称:

sudo umount /dev/sdb1

在未先卸载的情况下物理拔除设备可能导致数据损坏。在断开连接前务必先卸载设备。

3. 开机时自动挂载(fstab)

什么是 /etc/fstab?

如果希望 Ubuntu 在启动时自动挂载设备,需要使用 /etc/fstab 文件。
该文件是一个 系统范围的配置文件,定义了在启动过程中挂载哪些设备

例如,如果经常使用外部硬盘或额外的分区,并且想避免每次手动挂载,只需在 fstab 中添加相应条目即可实现自动化。

但请注意:错误的条目可能导致系统无法正常启动

使用 UUID 进行更安全的配置

fstab 中可以使用设备名称(如 /dev/sdb1)或 UUID 来指定设备。强烈推荐使用 UUID
设备名称可能会因连接顺序而变化,而 UUID 则保持不变。

首先,检查 UUID:

sudo blkid

示例输出:

/dev/sdb1: UUID="1234-ABCD" TYPE="vfat"

然后在 /etc/fstab 中添加如下行:

UUID=1234-ABCD /mnt/usb vfat defaults 0 0

各字段的含义如下:

FieldDescription
UUID=…Unique identifier of the target device
/mnt/usbMount point
vfatFile system type
defaultsStandard mount options
0 0Backup and filesystem check settings

编辑 fstab 时避免错误的技巧

fstab 中的错误可能导致严重的启动问题。
为降低风险,请遵循以下注意事项:

  • 始终创建备份sudo cp /etc/fstab /etc/fstab.bak
  • 确保挂载点已存在:使用 sudo mkdir -p /mnt/usb 创建
  • 使用以下命令测试配置
    sudo mount -a
    

该命令尝试挂载 fstab 中定义的所有条目。如果没有错误提示,则配置有效。

4. 如何挂载 USB 闪存驱动器和外部硬盘

FAT32、exFAT 与 NTFS 文件系统的区别

在 Ubuntu 中挂载 USB 闪存驱动器或外部硬盘时,需要检查 文件系统类型。以下三种是最常见的:

File SystemCharacteristicsUbuntu Support
FAT32Readable on almost all operating systemsSupported by default
exFATSupports large files, high compatibilitySupported by default on Ubuntu 20.04+, older versions require exfat-fuse
NTFSStandard file system on WindowsRead support by default; ntfs-3g recommended for full write support

要完整支持 NTFS 格式的设备,请安装 ntfs-3g

sudo apt update
sudo apt install ntfs-3g

检查设备并手动挂载的步骤

连接 USB 设备后,首先使用以下命令检查设备名称:

lsblk

示例输出:

sdb      8:16   1   16G  0 disk 
└─sdb1   8:17   1   16G  0 part /mnt/usb

此时,/dev/sdb1 为目标分区。创建挂载点:

sudo mkdir -p /mnt/usb

然后挂载设备:

sudo mount /dev/sdb1 /mnt/usb

设备内容将出现在 /mnt/usb 下,可正常访问。

自动挂载失效时的处理办法

在 GNOME 等桌面环境中,USB 设备通常会自动挂载。但在 服务器环境 或某些特定配置下,自动挂载可能失效。

尝试以下解决方案:

  1. 使用文件管理器重新连接(桌面环境)
  2. 使用 udisksctl 命令
    udisksctl mount -b /dev/sdb1
    
  1. 使用 dmesg 检查内核信息
    dmesg | tail
    

如果没有出现 “new USB device” 之类的消息,问题可能是电缆或物理连接故障。

安全移除设备 (umount)

在未卸载的情况下拔出 USB 设备可能导致数据损坏。拔出前请务必先卸载:

sudo umount /mnt/usb

如果不知道挂载点,可以直接指定设备:

sudo umount /dev/sdb1

卸载成功后,即可安全移除设备。

5. 挂载网络驱动器 (NAS)

挂载 Windows 共享 (SMB / CIFS)

Ubuntu 可以使用 SMB/CIFS 协议挂载来自 Windows 系统或 NAS 设备的共享文件夹,使其像本地目录一样访问。

首先,安装所需的软件包:

sudo apt update
sudo apt install cifs-utils

创建挂载点:

sudo mkdir -p /mnt/share

然后挂载共享文件夹:

sudo mount -t cifs //192.168.1.100/share /mnt/share -o username=USERNAME,password=PASSWORD,iocharset=utf8

关键点:

  • //192.168.1.100/share : IP 地址和共享名称
  • /mnt/share : 本地挂载点
  • -o 选项:用户名、密码、字符编码
  • iocharset=utf8 : 防止日文文件名出现乱码

如果不想在命令行中暴露密码,请参阅下面的安全凭据管理章节。

挂载 NFS 共享

NFS(网络文件系统)非常适合在 Linux 系统之间进行文件共享。

安装所需的客户端软件包:

sudo apt install nfs-common

创建挂载点:

sudo mkdir -p /mnt/nfs

挂载 NFS 共享:

sudo mount -t nfs 192.168.1.200:/export/share /mnt/nfs

根据服务器配置调整路径。

要在启动时自动挂载,请在 /etc/fstab 中添加以下条目:

192.168.1.200:/export/share /mnt/nfs nfs defaults 0 0

安全管理凭据(用户名 / 密码)

直接在挂载命令中包含密码出于安全考虑并不推荐。相反,您可以使用 凭据文件

  1. 创建凭据文件(例如):
    sudo nano /etc/samba/credentials
    

文件内容:

username=your_username
password=your_password
  1. 限制文件权限:
    sudo chmod 600 /etc/samba/credentials
    
  1. fstab 中添加以下条目:
    //192.168.1.100/share /mnt/share cifs credentials=/etc/samba/credentials,iocharset=utf8 0 0
    

这使得在启动时自动挂载而不暴露密码。

防止日文文件名乱码(区域设置)

如果在挂载 SMB 共享时,日文文件名显示为 “????.txt”,通常是 字符编码 的问题。

确保指定了以下选项:

iocharset=utf8

同时检查系统的区域设置:

locale

如果没有 ja_JP.UTF-8,请安装并启用日文区域设置:

sudo apt install language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8

注销或重启以应用更改。

6. 常见错误与故障排除

当出现 “Target Is Busy” 时

错误信息:

umount: /mnt/usb: target is busy.

当您尝试卸载的设备 正被一个或多个进程使用 时会出现此错误。

常见原因:

  • 另一个终端当前 cd 到该目录
  • 有文件在图形界面应用中打开
  • 后台进程正在访问设备上的文件

解决方案:

  1. 确认使用该挂载点的进程:
    lsof /mnt/usb
    
  1. 终止或关闭这些进程

  2. 如果问题仍然存在,使用 fuser

    sudo fuser -km /mnt/usb
    

此命令会强制终止使用该挂载点的进程。请谨慎使用。

解决 “Permission Denied” 错误

错误信息:

mount: /mnt/share: permission denied.

此错误表示挂载点或设备权限不足。

解决方案:

  1. 确保使用 sudo
    sudo mount /dev/sdb1 /mnt/usb
    
  1. 如有必要,调整挂载点所有权:
    sudo chown $USER:$USER /mnt/usb
    
  1. 对于 SMB 共享,在服务器上验证凭据和访问权限

自动挂载无效时

即使配置了 fstab,设备也可能在启动时无法自动挂载。

要检查的事项:

  • fstab 中的语法错误(间距、文件系统类型)
  • 正确的 UUID(使用 sudo blkid 验证)
  • 挂载点存在(使用 mkdir 创建)
  • 网络共享在启动时尚未可用(SMB / NFS)

调试:

sudo mount -a

如果出现错误,请更正相应的 fstab 条目。

使用 dmesg 和 journalctl 检查日志

详细的错误信息通常记录在系统日志中。

dmesg | tail -n 20

对于更详细的日志:

journalctl -xe

这些日志有助于识别硬件问题或无效的挂载选项。

其他常见的挂载相关错误

SymptomCauseSolution
mount: unknown filesystem type ‘exfat’exFAT not supportedsudo apt install exfat-fuse exfat-utils
I/O error when mounting SMBSMB version mismatchAdd vers=1.0 or vers=3.0 to mount options
Filenames appear as ????Locale / encoding issueAdd iocharset=utf8 or review locale settings

7. 参考:常见的挂载命令和用法

■ 检查设备

lsblk

显示连接的设备和分区结构。

lsblk

示例:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   1  16G  0 disk 
└─sdb1   8:17   1  16G  0 part /mnt/usb

blkid

显示 UUID 和文件系统类型。

sudo blkid

■ 挂载和卸载

mount

用于挂载存储的基本命令。

sudo mount /dev/sdb1 /mnt/usb

指定文件系统和选项:

sudo mount -t vfat -o uid=1000,gid=1000 /dev/sdb1 /mnt/usb

umount

卸载已挂载的设备。

sudo umount /mnt/usb

或者指定设备:

sudo umount /dev/sdb1

■ 自动挂载

/etc/fstab

用于在系统启动时挂载设备的配置文件。

sudo nano /etc/fstab

示例条目:

UUID=1234-ABCD /mnt/usb vfat defaults 0 0

mount -a

验证并挂载 fstab 中定义的所有条目。

sudo mount -a

■ 故障排除工具

dmesg

检查内核日志中的挂载相关错误。

dmesg | tail -n 20

journalctl

显示详细的系统日志。

journalctl -xe

lsof

识别使用挂载点的进程。

lsof /mnt/usb

fuser

强制终止使用挂载点的进程。

sudo fuser -km /mnt/usb

■ 网络共享

cifs-utils

用于 SMB/CIFS 挂载所需。

sudo apt install cifs-utils

nfs-common

用于 NFS 挂载所需。

sudo apt install nfs-common

udisksctl

在非 GUI 环境中进行简单的挂载/卸载。

udisksctl mount -b /dev/sdb1
udisksctl unmount -b /dev/sdb1

8. 常见问题解答:Ubuntu 中的挂载常见问题

Q1. 为什么我的 USB 设备没有自动挂载?

A. USB 设备通常在桌面环境中自动挂载,但以下情况下自动挂载可能失败:

  • 您正在使用 Ubuntu Server 或非 GUI 环境
  • 设备未被正确识别(电缆或硬件问题)
  • 设备没有文件系统或已损坏

使用 lsblkdmesg 检查设备识别,然后尝试手动挂载。

Q2. 编辑 fstab 后 Ubuntu 无法启动。我该怎么办?

A. 不正确的 fstab 条目可能导致系统停止在维护模式。

恢复步骤:

  1. 登录维护模式并编辑 fstab
    sudo nano /etc/fstab
    
  1. 使用 # 注释掉不正确的行
  2. 运行 mount -a 以确认无错误
  3. 重启系统

编辑前始终创建备份:

sudo cp /etc/fstab /etc/fstab.bak

Q3. 如何自动挂载 Windows 共享文件夹?

A. 使用凭据文件向 /etc/fstab 添加条目。

//192.168.1.100/share /mnt/share cifs credentials=/etc/samba/credentials,iocharset=utf8 0 0

使用 sudo mount -a 验证功能是否正常。

Q4. 如何在每次挂载时免输入密码?

A. 对 SMB 挂载使用凭据文件。对于本地存储设备,正确配置 fstab 可消除密码提示。

Q5. 如何列出当前已挂载的设备?

A. 使用以下任意命令:

mount | column -t

或使用更直观的方式查看:

lsblk -f

Q6. 即使关闭应用程序后仍出现 “Target is busy”

A. 查找残留的进程:

lsof /mnt/usb

或强制终止它们:

sudo fuser -km /mnt/usb

然后重新尝试 umount

9. 总结

在 Ubuntu 中挂载是 有效管理存储设备和网络共享的基础技能
本文涵盖了从基本概念到高级配置及故障排除的全部内容。

关键要点

  • 挂载将设备整合进 Linux 文件系统
  • 手动挂载提供灵活性和可控性
  • fstab 实现可靠的自动挂载
  • USB、外部硬盘和 NAS 需要针对文件系统的处理
  • 正确卸载可防止数据损坏
  • 故障排除工具帮助高效解决常见问题

掌握后,Ubuntu 的挂载系统将提供 卓越的灵活性和强大功能
运用本指南中的命令和概念,构建一个稳定高效、符合您需求的存储环境。

这些知识将支持从日常文件管理到服务器运维及 NAS 集成的所有工作,帮助您自信、精准地使用 Ubuntu。

侍エンジニア塾