Linux 文件系统挂载mount命令

所有的硬件设备必须挂载之后才能使用,只不过有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。mount 命令是 Linux 挂载命令。

一、什么是 “挂载” 以及为什么 Linux 需要挂载。#

前面我们有提到过,Linux 系统中 “一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将 Linux 本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为 “挂载”。

挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

二、“挂载点” 的目录要求:#

  • 目录事先存在,可以用 mkdir 命令新建目录
  • 挂载点目录不可被其他进程使用到
  • 挂载点下原有文件将被隐藏

三、mount 命令格式#

mount [-t vfstype] [-o options] [设备名称] [挂载点]

  • 挂载点: 必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount 以后会恢复正常

  • 设备名称: 可以是一个分区,一个 usb 设备,光驱,软盘,网络共享等

  • -t 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
    光盘或光盘镜像:iso9660;
    DOS fat16 文件系统:msdos;
    Windows 9x fat32 文件系统:vfat;
    Windows NT ntfs 文件系统:ntfs;
    Mount Windows 文件网络共享:smbfs;
    UNIX (LINUX) 文件网络共享:nfs

  • -o 主要用来描述设备或档案的挂接方式。常用的参数有:
    loop:用来把一个文件当成硬盘分区挂接上系统;
    ro:采用只读方式挂接设备;
    rw:采用读写方式挂接设备;
    iocharset:指定访问文件系统所用字符集

1、mount 挂载光驱系统#

一般来说 CDROM 的设备文件是 /dev/hdc 或 dev/cdrom 或 media/cdrom

首先我们在 mnt 目录新建 cdrom 目录:

$ mkdir /mnt/cdrom

执行挂载命令:

$ mount /dev/cdrom /mnt/cdrom

2、mount 挂载 u 盘#

如果计算机没有其它 SCSI 设备和 usb 外设的情况下,插入的 U 盘的设备路径是 /dev/sda1:

$ mkdir /mnt/upan

$ mount /dev/sda1 /mnt/upan

四、umount 卸载文件系统#

umount 命令用于卸载已经挂载的硬件设备,该命令的基本格式如下::

$ umount 设备文件名或挂载点

注意,卸载命令后面既可以加设备文件名,也可以加挂载点,不过只能二选一,比如卸载光盘:

$ umount /mnt/cdrom

命令加设备文件名同样是可以卸载的:

$ umount /dev/cdrom

如果加了两个(如下所示),从理论上分析,会对光驱卸载两次,当然,卸载第二次的时候就会报错。

`$ umount /dev/cdrom /mnt/cdrom/

另外,我们在卸载时有可能会出现以下情况:

[root@localhost ~]# cd /mnt/cdrom/
#进入光盘挂载点
[root@localhost cdrom]# umount /mnt/cdrom/
umount: /mnt/cdrom: device is busy.
#报错,设备正忙

这种报错是因为我们已经进入了挂载点,因此,如果要卸载某硬件设备,在执行 umount 命令之前,用户须退出挂载目录。

卸载硬件设备成功与否,除了执行 umount 命令不报错之外,还可以使用 df 命令或 mount -l 来查看目标设备是否还挂载在系统中。

image

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。