如何在 Linux 中挂载和卸载文件系统?

linuxoperating systemopen source

简介

在 Linux 系统中,所有内容(图片、二进制文件、文本文件、目录等)都被视为文件。了解如何更好地组织和访问文件至关重要。mount 和 umount 命令在这方面非常实用。

在本文中,我们将学习这两个命令。简而言之,使用 mount 命令可以将文件系统挂载到目录中,而使用 umount 命令可以从该目录中卸载同一个文件系统。这些操作也适用于硬盘和 U 盘。请记住,所有 mount 和 umount 命令都只能在"sudo"或"root"用户下运行。

列出所有存储设备

在学习 mount 和 umount 命令之前,我们需要列出 Linux 系统中的所有存储设备。

命令 1

sudo fdisk -l

输出

[sudo] password for rian:
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0002d5a1
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048 620969983 620967936 296.1G 83 Linux
/dev/sda2       620972030 625141759   4169730     2G  5 Extended
/dev/sda5       620972032 625141759   4169728     2G 82 Linux swap / Solaris
Partition 2 does not start on physical sector boundary.

命令 2

$ lsblk

输出

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298.1G  0 disk
├─sda2   8:2    0     1K  0 part
├─sda5   8:5    0     2G  0 part [SWAP]
└─sda1   8:1    0 296.1G  0 part /

使用"mount"命令可以查看所有当前已挂载的文件系统

如果我们输入"mount"命令,就可以获取所有信息,例如当前有哪些已挂载的文件系统。

命令

$ mount

输出

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=985120k,nr_inodes=246280,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=202976k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
------Many lines-----
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13500)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
………………………………………

我们还可以使用以下命令查看上述信息。

$ cat /proc/mounts

现在,让我们从"mount"命令的所有输出中只理解以下一行。


/dev/sda1 on / type ext4

/dev/sda1 => 这是文件系统名称。

on / => 这是挂载点。"/"表示它挂载在根目录。

type ext4 => 此处文件系统类型为 ext4。

使用"mount -t"命令可以了解特定文件系统的信息。

如果我们使用 -t 选项,则可以获取有关特定文件系统(例如:ext4)的信息。

命令

mount -t ext4

输出

/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

"mount"命令用于挂载文件系统

这非常简单。我们可以使用以下两个命令来挂载任何文件系统。

  • 使用"mkdir"命令创建挂载点目录。

  • 挂载所需的文件系统。

mount -t Type Device <Directory name created in step1>

此处"Type"可以是ext4,"Device"可以是/dev/sda1。

"umount"命令用于卸载文件系统

挂载文件系统后,我们可以使用"umount"命令卸载该文件系统。

命令

$ umount /dev/sda1

或

$ umount <mount point directory>

执行此命令后,我们将不再看到上次挂载的挂载点目录中的文件。

我们还可以使用相同的"umount"命令同时卸载多个文件系统。

Command

$ umount /dev/sda1 /dev/sda2

使用"umount -l"命令卸载文件系统

当用户不确定目标文件系统上是否有正在进行的读写操作时,可以使用"umount -l"命令卸载文件系统。该命令会等待所有正在进行的操作完成后再执行卸载。这也被称为延迟卸载。

根据手册页

-l, --lazy              detach the filesystem now, clean up things later

命令

$ umount -l /dev/sda1

"umount -f"命令用于强制卸载文件系统

"umount -f"用于强制卸载文件系统,即使该文件系统中正在进行读写操作。

命令

$ umount -f /dev/sda1

当网络共享无法访问时,可以使用此命令。

结论

通过本文,我们了解了"mount"和"umount"命令及其众多参数,并理解了这两个命令的重要性。现在,我们可以根据具体情况使用这些命令,在Linux中更高效地完成工作。


相关文章


有用资源