Linux 挂载文件系统

点击访问 Linux 命令大全 >>

本章节主要介绍 Linux 下文件系统的使用。尽管在安装 Linux 时已经自动为用户配置了整个文件系统,但有些时候任然需要我们手动挂载一些设备,例如:光盘、U盘等

快速上手

现在的 Linux 发行版本都能够自动识别插入的光盘、U盘等外部设备,而不需要手动运行挂载命令。我了学习,我们还是可以手动挂载一下光盘。

根据上图,设置 VMWare 的光驱,将 iso 文件挂载到光驱中。

实例:将设置的光驱挂载到 /mnt/cdrom 目录,然后查看目录下面的文件内容。如下:

## 查找 cdrom 文件,Linux 下面所有的设备均被当做文件处理,且放到了 /dev 目录下面
[root@localhost ~]# ls /dev/ | grep cd
cdrom

## 创建 /mnt/cdrom 目录,用来挂载光驱
[root@localhost ~]# mkdir /mnt/cdrom

## 将光驱挂载到 /mnt/cdrom 目录下
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载

## 查看光驱的内容
[root@localhost ~]# ll /mnt/cdrom/
总用量 1
-r-xr-xr-x. 1 root root 11 8月   3 22:15 readme.txt

## 查看光驱中 readme.txt 文件内容
[root@localhost ~]# cat /mnt/cdrom/readme.txt
hello Linux

Linux 设备表示方法

Linux 下所有的设备都被当做文件来操作。对于刚刚接触 Linux 的用户来说,使用软驱、光驱、磁盘、打印机等外部设备简直就是一场噩梦,因为 Linux 根本就没有提供设备管理器,都需要用户使用命令进行手动挂载。

在 Linux 中,每个设备都被映射为一个特殊文件,这个文件被称作“设备文件”。对于上层应用程序而言,所有对这个设备的操作都是通过读写这个文件实现的。Linux 将所有设备文件都放在 /dev 目录下面。如下:

[root@localhost ~]# ls /dev/
agpgart          disk       input               oldmem  sg1       tty13  tty26  tty39  tty51  tty7     vcs1   vga_arbiter
autofs           dm-0       kmsg                port    shm       tty14  tty27  tty4   tty52  tty8     vcs2   vhci
block            dm-1       log                 ppp     snapshot  tty15  tty28  tty40  tty53  tty9     vcs3   vhost-net
bsg              dmmidi     loop-control        ptmx    snd       tty16  tty29  tty41  tty54  ttyS0    vcs4   vmci
btrfs-control    dri        mapper              pts     sr0       tty17  tty3   tty42  tty55  ttyS1    vcs5   vsock
bus              fb0        mcelog              random  stderr    tty18  tty30  tty43  tty56  ttyS2    vcs6   zero
cdrom            fd         mem                 raw     stdin     tty19  tty31  tty44  tty57  ttyS3    vcsa
centos           full       midi                rfkill  stdout    tty2   tty32  tty45  tty58  uhid     vcsa1
char             fuse       mqueue              rtc     tty       tty20  tty33  tty46  tty59  uinput   vcsa2
console          hidraw0    net                 rtc0    tty0      tty21  tty34  tty47  tty6   urandom  vcsa3
core             hpet       network_latency     sda     tty1      tty22  tty35  tty48  tty60  usbmon0  vcsa4
cpu              hugepages  network_throughput  sda1    tty10     tty23  tty36  tty49  tty61  usbmon1  vcsa5
cpu_dma_latency  hwrng      null                sda2    tty11     tty24  tty37  tty5   tty62  usbmon2  vcsa6
crash            initctl    nvram               sg0     tty12     tty25  tty38  tty50  tty63  vcs      vfio

上面大部分是块设备文件和字符设备文件。块设备可以随机读写,如 /dev/hda1、/dev/sda2 等就是典型的块设备文件。而字符设备智能按顺序接收“字符流”,如:打印机等。

硬盘在 Linux 中遵循一种特定的命名规则,如 sda1 表示第 1 块硬盘上的第 1 个主分区,sdb6 表示 第 2 块硬盘上的第 2 个逻辑分区。

注意

硬盘一般分为 IDE 硬盘、SCSI 硬盘和 SATA 硬盘。在 Linux 中,IDE 接口的设备被称为 hd,SCSI 和 SATA 接口的设备被称为 sd。第一块硬盘被称作 sda,第二块硬盘被称作 sdb……依次类推。

Linux 规定,一块硬盘上智能存在 4 个主分区,分别被命名为 sda1、sda2、sda3 和 sda4。逻辑分区则从 5 开始标识,每多一个逻辑分区,就在末尾分区号上加 1。逻辑分区没有数量限制。

用户不能直接通过设备文件访问存储设备,所有的存储设备(包括硬盘、光盘等)在使用前必须首先被挂载到一个目录下,然后就可以像操作目录一样使用这个存储设备了。

mount 命令

通过 mount 命令可以挂载文件系统。这个命令非常有用,几乎在使用所有的存储设备前都要用到它。例如:

## 创建 /mnt/cdrom 目录,用来挂载光驱
[root@localhost ~]# mkdir /mnt/cdrom

## 将光驱挂载到 /mnt/cdrom 目录下
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载

## 查看光驱内容
[root@localhost ~]# cd /mnt/cdrom/
[root@localhost cdrom]# ll
总用量 1
-r-xr-xr-x. 1 root root 11 8月   3 22:15 readme.txt

也可以使用 -t 选项明确指定设备所使用的文件系统类型。常见文件系统如下表:

表 示 方 法描    述
ext2 Linux 的 ext2 文件系统
ext3 Linux 的 ext3 文件系统
vfat
 Windows 的 FAT16/FAT32 文件系统
ntfs
 Windows 的 NTFS 文件系统
iso9660
 CD-ROM 光盘的标准文件系统

如果不指明类型,mount 会自动检测设备上的文件系统,并以相应的类型进行挂载。因此在大多数情况下,-t 选项不是必要的。

另外两个常用的选项是 -r 和 -w,分别指定以只读模式和刻度模式挂载设备。其中,-w 选项是默认值。

umount 命令

可以使用 umount 命令卸载文件系统,该命令帮助信息如下:

用法:
 umount [-hV]
 umount -a [选项]
 umount [选项] <源> | <目录>

选项:
 -a, --all               卸载所有文件系统
 -A, --all-targets       卸载当前名字空间内指定设备
                         对应的所有挂臷点
 -c, --no-canonicalize   不对路径规范化
 -d, --detach-loop       若挂臷了回环设备,也释放该回环设备
     --fake              空运行;跳过 umount(2) 系统调用
 -f, --force             强制卸载(遇到不响应的 NFS 系统时)
 -i, --internal-only     不调用 umount.<类型> 辅助程序
 -n, --no-mtab           不写 /etc/mtab
 -l, --lazy              立即断开文件系统,所有清理以后执行
 -O, --test-opts <列表>  限制文件系统集合(和 -a 选项一起使用)
 -R, --recursive         递归卸载目录及其子对象
 -r, --read-only         若卸载失败,尝试以只读方式重新挂臷
 -t, --types <列表>      限制文件系统集合
 -v, --verbose           打印当前进行的操作

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

实例:卸载 /dev/cdrom 光驱,如下:

## 卸载 /dev/cdrom 光驱
[root@localhost ~]# umount /dev/cdrom

## 查看 /mnt/cdrom 目录,发现已经没有任何内容,卸载光驱成功
[root@localhost ~]# ls /mnt/cdrom/

Linux 启动时自动挂载文件系统

系统如何在开机时自动挂载硬盘?系统又是怎样知道哪些分区是需要挂载的?这些信息均有 Linux 的 /etc/fstab 文件来确定。该文件内容如下:

[root@localhost ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jul 12 19:13:37 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3b7b0039-5da1-44de-a64b-0dc644913074 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

fstab 配置文件说明:

  • UUID或路径:表示每个文件系统的唯一ID或者设备路劲

  • 挂载点,如:/、/boot

  • 文件系统类型,如:xfs、swap

  • 各种挂载参数,如:defaults,取值如下

    • auto:开机自动挂载

    • defaults、noauto:开机不自动挂载

    • nouser:只有 root 可挂载

    • ro:只读挂载

    • rw:可读可写挂载

    • user:任何用户都可以挂载

  • 备份频度,如:0

  • 在重启动过程中文件系统的检查顺序

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号