挂载mount

1.挂载的概念

mount 是一个 Unix/Linux 系统中的命令,用来将文件系统(如磁盘分区、光盘、USB 驱动器或远程文件系统)附加到当前文件系统的某个目录上。一旦文件系统被挂载,用户就可以像访问本地文件一样访问该文件系统上的文件和目录。

挂载(Mounting)是指将一个文件系统(通常是磁盘分区)连接到操作系统的文件系统层次结构中的某个目录,使得用户和程序能够访问该分区上的数据。简而言之,挂载使得你可以在操作系统中“访问”一个磁盘分区、USB 驱动器、网络共享等,像访问本地文件一样操作其中的文件和目录。

挂载的主要作用是将不同存储设备(如硬盘、USB、网络共享)和虚拟文件系统连接到操作系统的文件系统层次结构中,使得操作系统能够访问这些设备上的文件和数据。挂载可以是本地的(例如挂载磁盘分区),也可以是网络的(例如挂载远程共享目录)。它在数据共享、存储管理、安全性和跨平台操作中发挥着重要作用。


(1)挂载命令:mount -t nfs

在被挂载的测试机一端执行mount命令:

mount [-t vfstype] [-o options] device dir
sudo mount -t <filesystem_type> [options] server:/path/to/export /local/mount/point

如果没权限,就前面加 sudo

#1.挂载到/tmp
mount -t nfs 10.0.3.1:/home/user /tmp
 
#2.挂载到测试机的相同路径下,方便gdb等操作
mount -t nfs 10.0.3.1:/home/user /home/user/local-workspace

注意:10.0.3.1不是IP地址,而是k8s集群节点


(2)-t 选项:指定要挂载的文件系统类型

-t 参数用于指定要挂载的文件系统的类型。它的语法是 -t <filesystem_type>,其中 <filesystem_type> 是你想要挂载的文件系统的类型名称。Linux 支持多种文件系统类型,例如:

①ext4:第四代扩展文件系统,常用于本地硬盘。
②vfat:适用于 FAT32 文件系统的 USB 驱动器等。
③nfs:网络文件系统,用于挂载远程服务器上的共享目录。

因此,在 mount -t nfs 中,-t 表示接下来会指定文件系统的类型,而 nfs 则是具体的文件系统类型——即 Network File System。


(3)-o选项

学习链接:
①Linux挂载命令mount用法及参数详解:https://www.cnblogs.com/linuxprobe/p/5473645.html
②干货:Linux 系统的三种挂载方式:https://zhuanlan.zhihu.com/p/629402405
③文件系统(六)—文件系统mount过程:https://blog.csdn.net/u012489236/article/details/124523247


(4)取消挂载的命令:umount

umount /usr/local-workspace
umount 10.0.3.1:/home/usr
sudo umount /mnt/data

(5)显示磁盘空间使用情况、查看挂载点:df -h

df:disk filesystem,其主要功能是报告文件系统的磁盘空间使用信息
-h:human,人类可读

执行 df -h 命令后,你会看到每个已挂载文件系统的容量、已用空间、可用空间、使用百分比以及挂载点等信息。

虽然 df -h 主要用于查看磁盘空间使用情况,但它确实也能间接显示出系统上所有已挂载的文件系统(包括物理硬盘、分区、网络存储、USB 设备等)。这是因为只有已经挂载的文件系统才会出现在 df 的输出中。如果你想专门检查某个特定文件系统或设备是否已经挂载,除了可以使用 df -h 外,还可以考虑使用 mount 或 findmnt 命令来获取更详细的信息。



2.挂载的目的和作用

(1)跨操作系统访问:将Windows系统内容挂载到Linux系统下

将Windows的C、D、E盘,挂载到WSL的 /mnt/d/users/user/Desktop


挂载可以让一个操作系统访问另一个操作系统的文件系统。例如,Linux 系统可以挂载 NTFS 或 exFAT 格式的 Windows 分区,使得 Linux 用户可以访问存储在 Windows 系统上的数据。反之,Windows 也可以通过特定驱动访问 Linux 系统上的 ext4 格式分区。
作用:跨操作系统访问文件,实现不同操作系统之间的文件共享和交换。


(2)访问外部存储设备

在 Linux、Unix 或类 Unix 系统中,外部存储设备(如硬盘、U盘、DVD、网络共享等)必须通过挂载才能访问。
举例来说,如果你将一个 USB 驱动器插入到 Linux 系统,它的文件系统(例如 FAT32、NTFS 或 ext4)需要被挂载到某个目录,才能在命令行或图形界面中访问其内容。
作用:提供对外部存储设备(硬盘、U盘、SD卡等)的访问能力。

在这里插入图片描述
在这里插入图片描述


(3)整合不同的存储设备

操作系统的文件系统可以由多个不同的存储设备组成。比如,一个系统可能有多个硬盘或磁盘分区,每个分区存储不同类型的数据。挂载这些分区到特定目录,可以让你在单一的文件系统层次结构中无缝访问它们。
作用:通过挂载多个磁盘分区或存储设备,形成一个统一的文件系统,方便访问和管理多个存储设备上的数据。



3.文件系统挂载要做的事

在这里插入图片描述

(1)创建挂载点 (mount point)

首先,操作系统需要一个目录作为挂载点(mount point)。例如 /mnt/data 或 /media/usb。这是一个空目录,用来挂载外部存储或文件系统

sudo mkdir /mnt/data

(2)执行挂载命令:mount -t nfs

使用 mount 命令将设备(如磁盘分区、网络共享等)挂载到挂载点。设备和挂载点是挂载操作的两个基本要素。例如,挂载硬盘分区 /dev/sda1 到 /mnt/data

这里,/dev/sda1 是设备,/mnt/data 是挂载点。

sudo mount /dev/sda1 /mnt/data

(3)访问数据

挂载完成后,设备中的数据就可以通过挂载点访问了。例如,进入 /mnt/data 目录,可以看到硬盘分区中的所有文件。

cd /mnt/data
ls

(4)卸载操作、取消挂载

挂载完成后,如果不再需要访问该分区或设备,可以使用 umount 命令卸载设备。卸载后,设备的文件将不再与操作系统的文件系统集成。

sudo umount /mnt/data

(5)挂载常见的用例

1.挂载 USB 存储设备:在 Linux 系统中,当插入 USB 设备时,操作系统通常会自动挂载它。也可以手动挂载 USB 存储

sudo mount /dev/sdb1 /mnt/usb

2.挂载 Windows NTFS 分区:在 Linux 中,挂载 NTFS 文件系统的 Windows 分区:

sudo mount -t ntfs-3g /dev/sda1 /mnt/windows

3.挂载远程共享目录(网络挂载):使用 Samba 或 NFS 协议挂载远程共享目录。

sudo mount -t cifs //192.168.1.100/shared /mnt/shared -o username=your_user,password=your_password

4.挂载虚拟文件系统(例如 /proc 或 /sys):系统信息通常通过挂载虚拟文件系统进行访问。

sudo mount -t proc none /proc
sudo mount -t sysfs none /sys



4.mount的缺点:耗时久

进行相同的操作:mount耗时比本地更久


挂载(mount)后运行测试用例比直接执行实际用例耗时更长,主要原因通常包括以下几个方面:
①文件系统I/O开销
挂载的文件系统(尤其是网络文件系统或虚拟化环境下的文件系统)往往在I/O操作上比本地文件系统要慢。频繁的小文件读写、文件目录遍历等操作会引入较大的延迟。
②额外的系统调用和同步机制
挂载环境下,文件操作往往需要经过额外的系统调用、缓存刷新、权限校验和同步机制,这些都会增加执行时间。
③中间层抽象开销
如果采用了虚拟化或容器技术,在主机与挂载的环境之间可能存在一层或多层的抽象转换(例如,Docker挂载卷),这层抽象通常会带来额外的性能损耗。

综合来看,主要的时间损耗是由于挂载文件系统在I/O操作、系统调用以及中间抽象层带来的额外延迟。根据实际场景,针对性地优化文件访问方式或调整挂载策略,可能有助于降低这种额外的开销。