【Linux】Linux的挂载原理 |MOUNT|挂载NAS|自动挂载

目录

零、常用挂载命令

一、Linux的挂载原理

1、概念

2、举例

3、补充

4、LINUX文件结构和WINDOWS的不同

5、挂载文件系统

6、mount结构与原理 

 7、mount 和umount命令

二、Linux 如何挂载NAS盘 

三、自动挂载

四、错误记录


零、常用挂载命令

(参考:Linux命令之mount命令https://blog.csdn.net/carefree2005/article/details/121907982)

挂载:mount    /dev/sda3  /mnt    # /dev/sda3 是要挂载的分区,  /mnt是挂载点

解挂:umount   /mnt  或 umount    /dev/sda3

挂载iso镜像文件
mkdir  -p /mnt/vcdrom
mount -o loop -t iso9660 /opt/cclinux2209-x86_64.iso /mnt/vcdrom

挂载NFS网络共享盘

 mount -t nfs 192.168.0.204:/disk4 /mnt/bf

如果出现device is busy报错,可以使用以下命令查看使用文件系统的进程:

                  $ fuser–m /mnt

也可以使用命令lsof查看正在被使用的文件:list open file

                  $ lsof  /mnt

一、Linux的挂载原理

1、概念

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

Linux系统中"一切皆文件",所有文件都放置在以根目录为树根的树形目录结构中。

在Linux看来,任何硬件设备也都是文件,它们各有自己的一套文件系统。

当在Linux系统中使用这些硬件设备时,只有将硬件设备的文件目录  嫁接到Linux本身的文件目录,硬件设备才能为我们所用。这里的嫁接过程我们称之为"挂载"。

既将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载;

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

2、举例

(摘抄自:http://c.biancheng.net/view/2859.html
举个例子,我们想通过命令行访问某个 U 盘中的数据,图 1 所示为 U 盘文件目录结构和 Linux 系统中的文件目录结构。


图 1 U 盘和 Linux 系统文件目录结构


图 1 中可以看到,目前 U 盘和 Linux 系统文件分属两个文件系统,还无法使用命令行找到 U 盘文件,需要将两个文件系统进行挂载。

接下来,我们在根目录下新建一个目录 /sdb-u,通过挂载命令将 U 盘文件系统挂载到此目录,

mount /dev/sdb1      /sdb-u

挂载效果如图 2 所示。


图 2 文件系统挂载


可以看到,U 盘文件系统已经成为 Linux 文件系统目录的一部分,此时访问 /sdb-u/ 就等同于访问 U 盘。

前面讲过,根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

3、补充

前面讲过,根目录下的/dev/目录文件负责所有的硬件设备文件。

事实上,当U盘插入Linux后,系统也确实会给U盘分配一个目录文件(比如:sdb4)。

位于/dev/sdb4,但是无法通过/dev/sdb4/直接访问U盘数据。

我们只要执行mount操作后就可以访问U盘数据了。

总之,Linux系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

4、LINUX文件结构和WINDOWS的不同

摘自:https://www.freesion.com/article/4836457591/

Linux是多用户操作系统,所以制定一个固定的目录规划有助于对系统文件和不同的用户文件进行统一管理——Linux采用标准的树状目录结构

Windows不同的是,在最顶层的文件目录不是唯一的(多个盘符)


5、挂载文件系统

linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构;这里所说“按一定方式”就是指的挂载

通俗的说,将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载;我们把这个子目录叫“挂载点”

注意几点:
1. 挂载点必须是一个目录
2. 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用;对于其他操作系统建立的文件系统的挂载也是这样
挂载前要了解linux是否支持所要挂载的文件系统格式

6、mount结构与原理 

摘自:https://blog.csdn.net/jinking01/article/details/105683360

在 Kernel 世界里,挂载是一项很了不起的特性,它可以将不同类型的文件系统组合成一个有机的整体,从使用者角度来看不同的文件系统并没有什么区别,那么 Kernel 是怎么做到呢?

首先,Kernel 会为每个文件系统准备一个 mount 结构,然后再把这个结构加入到 vfs 这颗大树上就好了。

这么一个小小的 mount 结构就这么神奇?

请看图,一个 mount 中有三个很重要的成员,他们分别指向父 mount 结构(6)、本文件系统自己的根目录(7)和本文件系统的挂载点(8)。

前两个很好理解,那么挂载点是什么呢?简单地说挂载点就是父级文件系统的某个目录(父级文件系统中的目录表示),一旦将某个文件系统efs挂载到某个目录上/home/a/,这个目录/home/a/就成了该文件系统efs的根目录了。并且该目录/home/a/的标志位 DCACHE_MOUNTED 将被置位,这将表明这个目录已经是一个挂载点了,如果要访问这个目录/home/a/的话就要顺着 mount 结构访问另一个文件系统了(因为efs能力处理/home/a/以下的内容,之上的内容就是另一个文件系统里的内容了),原来的内容将变得不可访问。
    现在我们从图的左边讲起,带你一窥 mount 的风采。一个进程有一个叫 root 的 path 结构,它就是本进程的根目录(大多数情况下它就是系统根目录),root 中两个成员分别指向某个文件系统的 mount 结构(其实是指向 mount.mnt 但这样理解没问题)(1)(rootfs文件系统的mount结构)和该文件系统的根目录(2)(就是/目录),这个文件系统就是所谓根文件系统(在图中就是 rootfs)。由于它是根文件系统,所以它的父 mount 结构就是它自己(4)它的挂载点就是它自己的根目录(5)。

但是 rootfs 只是一个临时的根文件系统,在 Kernel 的启动过程中加载完 rootfs 之后会紧接着解压缩 initramfs 到 rootfs 中,这里面包括了驱动以及加载真正的根文件系统的工具,Kernel 通过加载这些驱动、使用这些工具实现了挂载真正的根文件系统。之后 rootfs 将退出历史舞台,但作为文件系统的总根 rootfs 并不会被卸载(注)。图中 fs1 就是所谓的真正的根文件系统,Kernel 把它挂载到了 rootfs 的根目录上(8),并且将它的父 mount 结构指向了 rootfs(6)。这时访问根目录的话就会直接访问到 fs1 的根目录,而 rootfs 就好像不存在了一样。
    再看 fs1,他有一个子目录“mnt/”,以及“mnt/”的子目录“a”,此时路径“/mnt/a/”是可访问的。但现在我们还有另一个文件系统 fs2,我们把它挂载到“/mnt/”上会发生什么呢?首先 fs2 的父 mount 将指向 fs1(9),然后 fs2 的挂载点将指向 “/mnt/”(10),同时“mnt/”的 DCACHE_MOUNTED 将被置位。此时路径“/mnt/a/”就不可访问了,取而代之的是“/mnt/b/”。本着不怕麻烦的精神我们再折腾一下,把 fs3 也挂载到“/mnt/”上,这时和挂载 fs2 一样父 mount 将指向 fs2(11),但是挂载点应该指向哪里呢?答案是 fs2 的根目录(12)。这时“/mnt/b/”也消失了,我们只能看见“/mnt/c”了。这样整个结构就形成了一个挂载的序列,最后挂载的在序列末尾,Kernel 可以很容易的通过这个序列找到最初的挂载点和最终的文件系统。
    在顺序查找的情景下,当遇到一个目录时 Kernel 会判断这个目录是不是挂载点(检查 DCACHE_MOUNTED 标志位),如果是就要找到挂载到这个目录的文件系统,继而找到该文件系统的根目录,然后在判断这个根目录是不是挂载点,如果是那就再往下找直到某个文件系统的根目录不再是挂载点。
    反向查找也和顺序查找类似。

 7、mount 和umount命令

mount 参数 设备名称 挂载点

-a 安装在/etc/fstab文件中列出的所有文件系统.

-l 列出当前已挂载的设备,文件系统名称和挂载点

-o 指定挂载选项,

-t 文件系统类型,指定设备的文件系统类型,

--ext2 

--Msdos

--Vfat

--Nfs

--iso9660

--Audo 自动检测文件系统

在Linux中,我们通过mount命令将格式化好的磁盘分区挂载到一个目录上。

mount    /dev/sda3(要挂载的分区)    /mnt(挂载点)

常用参数:

不带参数的mount命令会显示所有已挂载的文件系统。$ mount

         -t  指定文件系统的类型

         -o 指定挂载选项

                   ro,rw        以只读或读写形式挂载,默认是rw

                   sync          代表不使用缓存,而是对所有操作直接写入磁盘(防止断电等异常情况引起数据丢失)

                   async        代表使用缓存,默认是async

                   noatime   代表每次访问文件时不更新文件的访问时间(accesstime)

                   atime        代表每次访问文件时更新文件的访问时间

                   remount  重新挂载文件系统

umount:命令umount用来卸载已挂载的文件系统,相当于windows中u盘弹出

                  umount   文件分区/挂载点

                  umount    /dev/sda3  ==    umount /mnt

如果出现device is busy报错,则表示该文件系统正在被使用,无法卸载,可以使用以下命令查看使用文件系统的进程:

                  $ fuser–m /mnt

也可以使用命令lsof查看正在被使用的文件:list open file

                  $ lsof  /mnt

Example:

$ umount   /dev/sdb1

$ mount   /dev/sdb1 /mnt

$ cd /mnt

$ umount   /dev/sdb1   卸载不掉,推出/mnt目录即可

自动挂载:

配置文件/etc/fstab用来定义需要自动挂载的文件系统,fstab中每一行代表一个挂载配置,格式如下:

/dev/sdb3     /mnt        ext4           defaults             0 0    (之间用Tab隔开进行对齐)

需要挂载的设备     挂载点              文件系统         挂载选项         dump,fsck相关选项

要挂载的设备也可以使用LABEL进行识别,使用LABEL=LINUXCAST取代/dev/sdb3

$ mount  –a命令会挂载所有fstab中定义的自动挂载项。

Linux下用e2label命令来设定分区的label,其用法很简单:(查看或修改我们的卷标)

e2label 分区 [新label]

如果后面指定新label则为分区设定新label;如果后面不指定label,则显示分区的当前label。

$ man e2label

Name: e2label – change the label on anext2/ext3/ext4 file system

$ e2label device [new label]

E2label will display or change the file systemlabel on the ext2,ext3,or ext4 file system located on device.

If the optional argument new-label is notpresent, e2label will simply display the current file system label.
If  the  optional  argument  new-label  is present,then e2label will set the file system label to be new-label.

$ mount -L LabelCast/mnt/test 
(label为LabelCast的分区挂载到/mnt/test) 

fstab中根据label来挂载: $ LABEL= LabelCast  /mnt/test ext3 defaults 1 1 

原文链接:https://blog.csdn.net/dongyanxia1000/article/details/60957719

参考文献

linux 挂载_图解Linux中的挂载原理 https://blog.csdn.net/weixin_39573598/article/details/110810698

二、Linux 如何挂载NAS盘 

linux下需要将nas盘挂在到系统中;
方法:
首先本地创建一个挂载目录:

    mkdir /mnt/nas

挂载目录:

mount  -o  username=flt,password=r9SDy,iocharset=utf8   //192.168.2.90/产品部   /mnt/nas
 

参数说明:

        username=flt                        [nas用户名]
        password=a^6r9dSDy                  [nas密码]     
        iocharset=utf8                      [路径中如有中文则添加此项,支持中文路径] 
        //192.168.2.90/产品部                [nas路径]
        /mnt/nas                            [挂载路径]

参数之间用,(逗号)分隔。

如果密码中有,号,则以上命令无法执行完成,因为需要参数之间用“,”逗号分隔,导致会认为提前结束了。
所以可以用下面方法,创建一个环境变量:

export PASSWD='!3\5g6,B'

mount -o username=mkx,iocharset=utf8 //192.168.10.90/产品部 /mnt/nas

注:shell会自动查找PASSWD

使用完成后将其卸载:

umount -l /mnt/nas

原文链接:https://blog.csdn.net/xiaominggunchuqu/article/details/78912330

三、自动挂载

(fdisk 分区和挂载:linux服务器自动挂载_linux自动挂载_徐佳鑫的博客-CSDN博客

方法1:通过vim /etc/fstab写入UUID

1)blkid查看分区的UUID和磁盘格式

2)按照下面的格式写入/etc/fstab

3)检查/etc/fstab 是否填写正确

/etc/fstab填写错误会导致系统起不来(此时进入紧急模式删除错误行恢复),所以检查错误这步很重要:

使用命令mount -a进行挂载测试或sudo findmnt --verify,没有报错信息说明fstab文件没有问题。否则根据报错解决问题。

 方法2:开机启动执行挂载命令

把开启启动挂载命令写入:/etc/rc.d/rc.local

不能直接写 mount /dev/sda3   /mnt/log 这样,因为盘符不定,下次重启/dev/sda3可能变成/dev/sdb3

1)blkid查看分区的UUID和磁盘格式

2)将查到的UUID 替换下面的ID,其他参数和目录根据实际情况填写,然后写入/etc/rc.d/rc.local

mount    $(blkid|grep "34a271e8-41eb-44e1-bc2f-b0f7e34c4ade"|awk -F":" '{print $1}')    /osback

四、错误记录 

FS-Cache: Netfs 'nfs' registered for caching

问题原因是在服务器上没有安装nfs。使用如下命令安装

yum -y install nfs-utils

https://blog.csdn.net/w892824196/article/details/103934696

  • 12
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Linux系统中,要挂载NAS盘,首先需要将NAS盘的文件目录嫁接到Linux本身的文件目录,这个过程被称为挂载。 要实现挂载NAS盘到Linux系统中,可以按照以下步骤进行操作: 1. 首先,在Linux系统中创建一个用于挂载的目录,可以使用命令 "mkdir" 创建一个目录,比如 "/mnt/nas"。 2. 然后,使用挂载命令 "mount" 将NAS盘的文件目录与刚刚创建的挂载目录进行关联,命令的格式为: "mount NAS盘路径 挂载目录"。例如,如果NAS盘的路径为 "/dev/sdb1",则可以执行命令 "mount /dev/sdb1 /mnt/nas",将NAS挂载到 "/mnt/nas" 目录下。 3. 挂载完成后,就可以通过访问挂载目录来操作NAS盘上的文件了。 需要注意的是,挂载NAS盘需要具有root权限或者以root身份运行的用户才能执行挂载操作。另外,如果希望系统每次启动时自动挂载NAS盘,可以将挂载命令添加到系统启动脚本中,比如 "/etc/fstab" 文件。 总结起来,要在Linux系统中挂载NAS盘,首先创建一个挂载目录,然后使用挂载命令将NAS盘与挂载目录关联即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【LinuxLinux挂载原理 |MOUNT|挂载NAS](https://blog.csdn.net/weixin_42319496/article/details/125942825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Linux 如何挂载nas盘](https://blog.csdn.net/web13116256725/article/details/126418999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值