一、前言


  • ​手动处理挂载是很不人性的,我们可以设置让系统在每次启动的时候就自动进行挂载,就不用手动再去修改
  • ​设置启动挂载的方法:在/etc/fstab文件内去修改
  • ③系统挂载的一些限制

  • 根目录是必须要被挂载的,并且一定要优先于其他挂载点被挂载进来
  • 其他挂载点必须为已建立的目录,可任意指定,但一定要遵守系统目录架构原则(FHS)
  • 所有挂载点,在同一时间内,只能挂载一次
  • 所有硬盘分区在同一时间内,只能挂载一次
  • 如若进行卸载,必须先将工作目录移到挂载点(及其子目录)下


二、/etc/fstab


  • 内容与功能:

  • 是系统启动时的配置文件,在该文件内记录的磁盘在系统启动时会自动挂载
  • 当我们用mount命令进行挂载时,会将所有的选项与参数信息写入到该文件内

  • 组成部分:​使用cat命令查看该文件时,每一行代表一个磁盘分区信息,信息被分为6大部分:

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_数据

  • [设备/UUID等]  [挂载点]  [文件系统类型]  [文件系统参数]  [dump]  [fsck]

 ①第一部分:可以使用磁盘设备的文件名/UUID/Label name


  • 文件系统或者磁盘的设备文件名,例如:/dev/sda1
  • 文件系统的UUID,例如UUID=XXX
  • 文件系统的LABEL名称,例如LABEL=XXX

②第二部分:挂载点(mount point)

  • 挂载点一定是个目录。(注意:如果是内存交换分区的话,因为内存交换分区无挂载点,此处填写swap)

③第三部分:磁盘分区的文件系统类型

  • 注意:在手动挂载时可以让系统自动检测挂载。但是在这个文件当中,我们必须手动写入文件系统才行,例如:xfs、ext4、vfat、reiserfs、nfs等

④第四部分:文件系统参数

async(默认),sync

此文件系统是否使用​同步写入的内存机制

atime,noatime

文件系统是否会修改文件的​读取时间​。为了性能,某些时刻会使用noatime

ro,rw

文件系统是​只读​(ro)还是​可读写​(rw)

auto(默认),noauto

当执行mount -a时,此文件系统是否会被主动测试挂载

dev,nodev

文件系统是否可以​建立设备文件

suid,nosuid

文件系统是否可以含有​suid/sgid​的文件格式

exec,noexec

文件系统是否可以拥有可执行的​二进制文件

user,nouser

是否允许文件系统让​任何使用者​都可以执行mount命令。一般来说,mount仅有root可以进行

defaults

默认值​为:rw、suid、dev、exec、auto、nouser、async

remount

重新挂载​。这在系统出错,或重新更新参数时很有用

codepage=数值


挂载USB移动磁盘时,指定挂载的文件系统所使用的语系。中文语系为:950


iocharset=编码名

挂载USB移动磁盘时,指定移动磁盘的编码。一般有:utf8、Big5

loop

进行loop设备挂载时会使用到

⑤第五部分:能否使用dump备份命令作用

  • dump是一个用来做为备份的命令,不过现在有太多的备份方案,这个地方直接输入0就好了

⑥第六部分:是否以fsck检验扇区


  • 早期系统启动的过程中,会有一段时间去校验本机的文件系统是否完整(clean),主要通过fsck去完成
  • 不过xfs文件系统会自己进行校验,所以xfs文件系统不需要进行这个操作,设置为0

注意事项


  • ​/etc/fstab是系统启动时的配置文件,实际文件系统的挂载时记录到/etc/mtab与/proc/mounts这两个文件中(每次我们在修改/etc/fstab文件的挂载信息时,同时也会修改这两个文件)
  • ​承上,如果我们在/etc/fstab输入的数据错误,导致无法磁盘顺利启动,而进入单人维护模式,这时候根目录就变为只读的状态,当然此时也无法修改/etc/mtab与/proc/mounts这两个文件。此时就可以谁用下面这一行命令

mount -n -o remount,rw /

如何让磁盘自动挂载?


  • 事例:​将/dev/sda3分区挂载到/data/ext4目录下,并将挂载信息写入/etc/fstab文件中,让系统每次启动时/dev/sda3都能自动挂载
  • 步骤如下:
  • 第一步:​使用nano命令或者gerp命令将/dev/sda3的以下挂载信息(信息自己设定)写入到/etc/fstab文件中

UUID="2ecb322c-9d78-4478-a743-f7f59ef02a25" /data/ext4 ext4 default 0 0

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_数据_02


  • 注意:​如果/dev/sda3已经挂载了,需要将/dev/sda3卸载之后才可以进行第一步,要不然会失败
  • 第二步:​使用mount -a将/etc/fstab文件内未挂载的文件都挂载上来

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_文件系统_03

  • 第三步:​使用lsblk或者df命令查看挂载状态

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_文件系统_04

三、loop设备简介


  • 概念:​熟知,磁盘是一种存储设备,可以存储数据。loop类似于磁盘,也可以存储数据,是一种特殊设备
  • 特点:​因此,我们可以将文件/数据或者镜像文件制作成一个loop设备,然后将loop设备挂载,就可以在Linux系统上面使用
  • 如何创建loop设备:​如何制作loop设备:文件/数据通过mount命令和-o loop参数即可创建一个loop且同时挂载

四、使用loop设备挂载CD/DVD镜像文件


  • 概念:

  • 一般来说,我们从一个网站下载了一个Linux或其他所需的镜像文件(.iso)后,该镜像文件一般需要刻录成CD/DVD光盘才能够被系统使用
  • 但是有一种方法,可以不需要将其刻录成为光盘就能够直接使用该镜像中的文件数据。方法就是讲镜像文件制作成一个loop设备来进行挂载

  • 方法:

  • 方法:​使用mount命令,将镜像文件(.iso)制作成一个loop设备,并同时挂载到一个目录下
  • 此时,该挂载目录内的文件数据就是镜像文件内的数据,当然我们也可以对这些数据进行查看与修改

  • 命令格式:

mount -o loop  镜像文件目录  挂载目录

演示案例


  • 下面我我有一个镜像文件,将其挂载到/data/ubuntu_dvd目录下
  • 第一步:​将/tmp/ubuntu-14.04.5-desktop-amd64.iso镜像文件挂载到/data/ubuntu_dvd目录下

mount -o loop /tmp/ubuntu-14.04.5-desktop-amd64.iso  /data/ubuntu_dvd

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_数据_05

  • 第二步:​使用df命令查看一下挂载信息

可以看到镜像文件被制作成为一个loop1设备,该设备挂载于/data/ubuntu_dvd目录下

df /data/ubuntu_dvd

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_/etc/mtab_06

  • 第三步:​使用ls命令查看/data/ubuntu_dvd目录内的数据(此目录内的数据就是镜像文件内的数据)

可以看到挂载目录内的数据就是我们镜像文件内的数据

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_/etc/fstab_07

五、建立大文件以制作loop设备文件挂载


  • 概念:​我们可以手动建立一个大文件,然后将这个文件格式化后进行挂载。这样就能够帮助我们解决很多系统的分区不合理的情况,也可以为我们新增一个分区来进行使用,用途十分的广泛
  • 方法​:方法类似于上面的镜像文件挂载

  • 第一步:​建立一个新文件
  • 第二步:​并将该新文件格式化。格式化完之后该文件会被制作成为一个loop设备,该loop设备负责存储该新文件内容。两者的UUID完全相同
  • 第三步:​将格式化出来的新loop设备挂载到一个目录下进行使用
  • 第四步(选做):​将新文件加入/etc/fstab文件中,实现自动挂载


演示案例


  • 我们在/srv下建立一个512MB的大文件loopdev,然后将这个大文件格式化并且挂载来使用
  • 第一步:建立大型文件。​在/srv目录下使用dd命令(/dev/zero是一个会一直输出0的设备)建立一个loopdev文件,大小为512M

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_/etc/fstab_08

  • 第二步:文件的格式化。​将刚才建立的大文件进行格式化,此处我格式化为ext4文件系统格式的

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_设置启动挂载_09

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_数据_10


  • 第三步:将格式化好的loopdev进行挂载。​我们将/srv/loopdev挂载到/mnt目录下
  • 注意:​现在的系统中,不需要-o loop选项与参数也可以进行挂载,不过还是建议加上

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_设置启动挂载_11


  • 第四步:设置自动挂载。将​/srv/loopdev添加进/etcfstab文件中
  • 注意:​因为上面/dev/loop0在/mnt目录上挂载了,所以需要卸载,然后再使用mount -a重新挂载

nano /etc/fstab /srv/loopdev /data/file ext4 defaults,loop 0 0
umount /mnt
mount -a
  • 从上面可以看到,我们用/srv/loopdev文件制作出一个/dev/loop0设备,并将这个设备挂载到/mnt目录下

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

Linux设置启动挂载(/etc/fstab,/etc/mtab),loop特殊设备,使用loop设备挂载CD/DVD镜像文件_设置启动挂载_12