用于挂载Linux系统外的文件
mount 命令的全称是mount a filesystem,它的功能是将一个文件系统或设备连接到一个已存在的目录上,这个目录称为挂载点(mount point)。
挂载指的是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。如果不挂载,通过 Linux 系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。
例如当我们把 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如
sdb1
),就位于/dev/
目录下(/dev/sdb1
),因为根目录下的/dev/
目录文件负责所有的硬件设备文件。但此时无法通过/dev/sdb1/
直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。我们要访问 U 盘内部目录,必须将 U 盘件与已有目录文件进行挂载。
挂载后,原来挂载点的内容将被隐藏,而文件系统或设备的内容将出现在挂载点上。挂载的文件系统或设备可以是本地的,也可以是远程的,例如NFS(网络文件系统)或SMB(服务器消息块)。
并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
mount 命令可以手动执行,也可以通过配置 /etc/fstab
文件来自动执行。 /etc/fstab
文件是一个文本文件,它记录了系统中的所有可挂载的文件系统或设备,以及它们的挂载点和挂载选项。mount 命令可以根据这个文件来挂载所有或部分的文件系统或设备。
mount 命令还可以用来查询当前已挂载的文件系统或设备的信息,例如类型、选项、大小等。这些信息可以帮助你了解系统的磁盘使用情况和性能。
mount 命令是一个通用的 Linux 命令,它可以在多数 Linux 发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用。不同的Linux发行版可能支持不同的文件系统类型,例如ext4、xfs、btrfs等。你可以使用-t选项来指定要挂载的文件系统类型,也可以省略这个选项,让 mount 命令自动检测文件系统类型。
如果你的 Linux 系统没有安装 mount 命令,你可以使用以下命令来安装它:
[linux@bashcommandnotfound.cn ~]$ sudo apt update
[linux@bashcommandnotfound.cn ~]$ sudo apt install mount
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install mount
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install mount
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install mount
mount命令的基本语法格式如下:
mount [选项] ... 设备 | 目录
mount [选项] ... -t 类型 [-o 选项] 设备 目录
mount 命令有很多选项,可以用来控制挂载的行为和效果。以下是一些常用的选项:
选项 | 说明 |
---|---|
-a | 挂载 /etc/fstab 文件中列出的所有文件系统或设备 |
-f | 模拟挂载操作,不实际执行,用于测试和调试,通常会和 -v 一起使用。 |
-h | 显示帮助信息 |
-l | 显示已挂载的文件系统或设备的标签 |
-L 标签 | 挂载指定标签的文件系统或设备 |
-n | 不更新 /etc/mtab 文件,用于只读文件系统或设备。在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项; |
-r | 以只读模式挂载文件系统或设备 |
-t 文件系统类型 | 挂载指定类型的文件系统或设备。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。 |
-u | 卸载指定的文件系统或设备 |
-v | 显示详细的挂载信息,通常和 -f 用来除错。 |
-V | 显示版本信息 |
-F | 这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。 |
-o 选项 | 指定挂载选项,可以是一个或多个,用逗号分隔,例如ro,sync |
-o 支持的特殊选项如下所示:
选项 | 功能 |
---|---|
rw/ro | 是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。 |
async/sync | 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。 |
dev/nodev | 是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。 |
auto/noauto | 是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。 |
suid/nosuid | 设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。 |
exec/noexec | 设定在文件系统中是否允许执行可执行文件,默认是允许。 |
user/nouser | 设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。 |
defaults | 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。 |
remount | 重新挂载已挂载的文件系统,一般用于指定修改特殊权限。 |
以下是一些使用mount命令的实例,你可以根据自己的需求和环境来修改和尝试。
$ mount
$ mount /home
$ mount -t ext4
# 我们可以使用 mkfs 命令把磁盘分区格式化为指定的文件系统,比如 ext4
$ mkfs -t ext4 /dev/sda1
然后把该分区挂载到 /mnt 目录
$ sudo mount /dev/sda1 /mnt
$ sudo mount -t nfs 192.168.1.100:/data /mnt
$ sudo mount /dev/sdb1 /media/usb
$ sudo mount /dev/cdrom /media/cdrom
$ sudo mount -o loop image.iso /media/iso
$ sudo mount -r /dev/sda1 /mnt
$ sudo mount -o ro,sync /dev/sda1 /mnt
$ sudo mount -a
$ sudo umount /mnt
$ sudo umount -f /mnt
$ sudo umount -l /mnt
/etc/fstab
文件中指定了用户可以挂载的文件系统或设备。bash: mount: command not found
的错误。这时,你需要检查你的文件系统或设备是否正确连接和识别,或者你是否安装了mount命令。你可以使用lsblk
命令来查看你的文件系统或设备的信息,或者使用which mount
命令来查看你是否有mount命令。mount: /mnt: /dev/sda1 already mounted on /mnt.
的错误。这时,你需要先卸载这个文件系统或设备,或者选择一个不同的挂载点。umount: /mnt: target is busy.
的错误。这时,你需要先关闭所有使用这个文件系统或设备的进程,或者使用-f或-l选项来强制或延迟卸载。