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


简介

在 Linux 中,一切(图片、二进制文件、文本文件、目录等)都被视为文件。了解如何更好地组织和访问文件非常重要。mount 和 umount 命令在这种情况下非常方便。

在本文中,我们将学习这两个命令。简而言之,使用 mount 命令,我们可以将文件系统挂载到一个目录中,使用 umount 命令,我们可以从该目录中卸载相同的文件系统。这也可以用于硬盘和 USB 驱动器。我们必须记住,所有 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”命令同时卸载多个文件系统。

命令

$ 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 中以更快的速度完成我们的工作。

更新于: 2023年5月8日

5K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告