0

0

如何在Linux中挂载外部存储设备 Linux mount命令参数详解

P粉602998670

P粉602998670

发布时间:2025-08-23 08:06:02

|

489人浏览过

|

来源于php中文网

原创

识别外部设备使用lsblk或fdisk -l,通过sudo mount -t指定文件系统类型,-o设置挂载选项如rw、umask等;卸载时用umount命令,遇“device is busy”可用lsof或fuser排查占用进程,或使用umount -l懒惰卸载;为实现开机自动挂载,需编辑/etc/fstab文件,推荐使用UUID代替设备名,配置挂载点、文件系统类型、选项、dump和fsck字段,并用sudo mount -a测试配置正确性,避免系统启动失败。

如何在linux中挂载外部存储设备 linux mount命令参数详解

在Linux系统中,挂载外部存储设备,说白了,就是告诉操作系统:嘿,我这里有个新的硬盘、U盘或者其他什么存储介质,你得把它识别出来,然后指定一个地方(一个目录)让它能被访问。这个过程的核心就是

mount
命令,它把一个文件系统连接到你系统目录树的某个特定点上。没有挂载,这些设备里的数据对你来说就是隐形的,无法读写。

解决方案

要挂载一个外部存储设备,你通常需要知道两件事:设备本身的名字(比如

/dev/sdb1
)和你想把它挂载到哪里(一个空目录,比如
/mnt/usb
)。

一个最基本的挂载流程是这样的:

  1. 识别设备及分区: 使用
    lsblk
    fdisk -l
    找到你的设备,比如
    /dev/sdb1
  2. 创建挂载点: 比如
    sudo mkdir /mnt/my_usb_drive
  3. 执行挂载命令:
    sudo mount /dev/sdb1 /mnt/my_usb_drive

当然,这只是最简单的情况,很多时候你还需要指定文件系统类型、挂载选项等等。

如何识别Linux中的外部存储设备及其分区?

识别外部存储设备,这在Linux下是个基础活儿,但有时候也挺让人头疼的,特别是当你插了好几个设备的时候。最常用的工具

lsblk
,它能以树状结构列出所有块设备,包括硬盘、U盘、光驱等,以及它们的分区。

当你输入

lsblk
,你可能会看到类似这样的输出:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 238.5G  0 disk
├─sda1        8:1    0   512M  0 part /boot/efi
├─sda2        8:2    0     1G  0 part /boot
└─sda3        8:3    0 237.1G  0 part /
sdb           8:16   1  14.9G  0 disk
└─sdb1        8:17   1  14.9G  0 part

这里,

sdb
就是我的U盘,而
sdb1
则是它上面的第一个分区。注意
RM
列,如果显示
1
,通常表示这是一个可移动设备。

另一个老牌工具是

fdisk -l
,它会列出所有硬盘的分区表信息,虽然输出可能有点啰嗦,但在某些情况下,比如需要看更详细的磁盘几何信息时,它还是很有用的。

如果你想知道某个分区是什么文件系统类型,

sudo blkid /dev/sdb1
是个好办法。它会告诉你设备的UUID、文件系统类型(
TYPE
),比如
ext4
vfat
(FAT32)、
ntfs
等。这个
TYPE
在你手动挂载时,如果文件系统不是Linux原生支持的,比如NTFS,就显得尤为重要。毕竟,Linux可不会魔法般地知道你插进来的是个什么格式的盘。

Linux mount命令的常用参数有哪些?

mount
命令的参数真是五花八门,但常用的也就那么几个,理解了它们,基本上就能应对绝大多数挂载场景了。

  1. -t <文件系统类型>
    :指定文件系统类型。 这是最常用的一个。比如,你要挂载一个FAT32格式的U盘,你就得用
    -t vfat
    ;如果是NTFS格式的,通常需要安装
    ntfs-3g
    包,然后用
    -t ntfs-3g

    sudo mount -t vfat /dev/sdb1 /mnt/usb
    sudo mount -t ntfs-3g /dev/sdb1 /mnt/data_drive

    如果你不指定,

    mount
    会尝试自动检测,但有时候它会猜错或者干脆猜不到。

  2. -o <挂载选项>
    :指定挂载选项。 这个参数是
    mount
    命令的精髓,它能让你精细控制挂载行为。选项之间用逗号分隔。

    • ro
      :只读挂载。如果只是想看看里面的内容,不想误操作,这个选项很安全。
    • rw
      :读写挂载。这是默认行为,但明确指定也无妨。
    • defaults
      :这是最常用的一个,它包含了
      rw, suid, dev, exec, auto, nouser, async
      等一系列默认选项。
    • noauto
      :不要在启动时自动挂载(主要用于
      /etc/fstab
      )。
    • user
      /
      users
      :允许普通用户挂载/卸载设备。
      user
      只允许挂载者卸载,
      users
      允许任何用户卸载。
    • exec
      /
      noexec
      :允许/禁止在挂载点执行程序。出于安全考虑,对于外部设备有时会用
      noexec
    • sync
      /
      async
      :同步/异步写入。
      sync
      写入会立即同步到磁盘,更安全但性能低;
      async
      则相反。
    • uid=<用户ID>
      ,
      gid=<组ID>
      ,
      umask=<权限掩码>
      :这些对于挂载FAT32或NTFS等不支持Linux权限的文件系统特别有用。它们能让你指定挂载后文件的所有者和权限。比如,
      uid=1000,gid=1000,umask=0022
      就能让当前用户(通常UID是1000)拥有对设备的读写权限。

    举个例子,挂载一个NTFS分区,并允许当前用户读写:

    sudo mount -t ntfs-3g -o defaults,uid=$(id -u),gid=$(id -g) /dev/sdb1 /mnt/data_drive

    这里

    $(id -u)
    $(id -g)
    会自动替换为当前用户的UID和GID,这比手动查找要方便得多。

如何卸载(umount)已挂载的设备以及常见问题?

挂载了设备,用完之后可不能直接拔掉,那样很容易导致数据损坏。正确的方式是先“卸载”它。

PageOn
PageOn

AI驱动的PPT演示文稿创作工具

下载

卸载命令是

umount
。你可以通过两种方式指定要卸载的目标:

  1. 通过挂载点:
    sudo umount /mnt/my_usb_drive
  2. 通过设备名:
    sudo umount /dev/sdb1

通常推荐使用挂载点,因为它更直观,而且在某些情况下,设备名可能会变。

卸载时最常见的错误就是:“device is busy”(设备忙)。 这意味着有程序正在使用这个挂载点里的文件或者目录。遇到这种情况,你不能硬拔,得先找出是谁在“霸占”着它。

解决“设备忙”问题,有几个办法:

  1. 找出占用进程:

    • lsof <挂载点>
      :列出所有打开指定挂载点下文件的进程。
    • fuser -m <挂载点>
      :显示所有访问指定挂载点的进程ID。 找到进程ID后,你可以尝试关闭相关程序,或者直接
      kill <进程ID>
      。 比如,
      fuser -m /mnt/usb
      可能会输出一些PID,然后
      sudo kill 
  2. 懒惰卸载(Lazy Unmount): 如果实在找不到或者无法关闭占用进程,

    umount -l <挂载点>
    是个救命稻草。这个命令会立即将文件系统从文件系统层次结构中分离,但会等到所有对该文件系统的引用都结束后才清理所有数据结构。它不会强制终止任何进程,只是让挂载点看起来被卸载了。但请注意,这可能会导致数据丢失或损坏,所以只在万不得已时使用。

  3. 确保数据同步: 在卸载之前,尤其是对U盘这类可移动设备,最好先运行一下

    sync
    命令。
    sync
    会强制将内存中所有未写入的数据块写入磁盘,确保数据完整性。虽然现代Linux系统通常会处理得很好,但多一步
    sync
    总归是更保险的做法。

记住,安全卸载是保护数据完整性的关键步骤,千万不能省。

如何配置fstab实现开机自动挂载?

对于那些你需要长期固定使用的外部存储设备,比如一个专门的数据盘,每次开机都手动挂载显然不现实。这时,

/etc/fstab
文件就派上用场了。它是Linux系统启动时自动挂载文件系统的配置文件。

编辑

/etc/fstab
需要非常小心,一个错误的配置可能导致系统无法启动。在修改之前,务必备份
/etc/fstab
sudo cp /etc/fstab /etc/fstab.bak

/etc/fstab
文件的每一行代表一个要挂载的文件系统,包含六个字段:

  1. 文件系统设备: 最好使用设备的UUID而不是
    /dev/sdX
    ,因为
    /dev/sdX
    可能会在设备插拔或系统启动时发生变化,而UUID是设备独一无二的标识符,更稳定。你可以用
    sudo blkid
    命令来获取设备的UUID。 例如:
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  2. 挂载点: 设备将要挂载到的目录。这个目录必须存在。
  3. 文件系统类型: 例如
    ext4
    ntfs-3g
    vfat
  4. 挂载选项:
    mount -o
    后面的选项类似,比如
    defaults
    ro
    noauto
    user
    等。对于数据盘,
    defaults
    通常就够了。如果希望在启动时检查文件系统错误,可以加上
    errors=remount-ro
  5. dump选项: 用于
    dump
    命令,通常设为
    0
    (不备份)。
  6. fsck选项: 用于
    fsck
    命令在启动时检查文件系统。根文件系统通常设为
    1
    ,其他文件系统设为
    2
    (表示在根文件系统检查完毕后检查),不检查设为
    0

一个典型的

/etc/fstab
条目可能像这样:

UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /mnt/data_disk ext4 defaults 0 2

这行配置的意思是:将UUID为

a1b2c3d4-e5f6-7890-1234-567890abcdef
的设备,以
ext4
类型挂载到
/mnt/data_disk
目录,使用默认选项,不进行
dump
备份,并在启动时进行文件系统检查(优先级为2)。

配置完成后,不要急着重启! 你可以用

sudo mount -a
命令来测试你的
fstab
配置是否正确。这个命令会尝试挂载所有在
fstab
中但尚未挂载的文件系统。如果没有报错,说明你的配置基本没问题。如果报错,你就能及时发现并修正,避免重启后无法进入系统。

自动挂载虽然方便,但一不小心写错了,那开机就可能直接进到紧急模式了。所以,理解每个字段的含义,并且在修改后进行测试,是至关重要的。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

280

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

254

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

535

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

21

2026.01.06

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号