Linux中挂载详解以及mount命令用法

article/2025/11/9 6:09:52

挂载概念

Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”

注意:“挂载点”的目录需要以下几个要求:

(1)目录事先存在,可以用mkdir命令新建目录;

(2)挂载点目录不可被其他进程使用到;

(3)挂载点下原有文件将被隐藏。

挂载与卸载

挂载方法:mount DECE MOUNT_POINT

    mount:通过查看/etc/mtab(文章最后会对/etc/mtab有个解释)文件显示当前系统已挂载的所有设备

命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir

device:指明要挂载的设备;

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'

(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'

(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

dir:挂载点

    事先存在;建议使用空目录;

    进程正在使用中的设备无法被卸载

常用命令选项

    -t vsftype:指定要挂载的设备上的文件系统类型;

    -r: readonly,只读挂载;

    -w: read and write, 读写挂载;

    -n: 不更新/etc/mtab; 

    -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)

    -L 'LABEL': 以卷标指定挂载设备;

    -U 'UUID': 以UUID指定要挂载的设备;

    -B, --bind: 绑定目录到另一个目录上;

注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts

………………………………………………………………………………………………………………………

    -o options:(挂载文件系统的选项)

      async:异步模式;

      sync:同步模式;

      atime/noatime:包含目录和文件;

      diratime/nodiratime:目录的访问时间戳

      auto/noauto:是否支持自动挂载

      exec/noexec:是否支持将文件系统上应用程序运行为进程

      dev/nodev:是否支持在此文件系统上使用设备文件;

      suid/nosuid:是否支持在此文件系统上使用特殊权限

      remount:重新挂载

      ro:只读

      rw:读写

      user/nouser:是否允许普通用户挂载此设备

      acl:启用此文件系统上的acl功能

注意:上述选项可多个同时使用,彼此使用逗号分隔;

 默认挂载选项:defaults:rw, suid, dev, exec, auto, nouser, and async

上述信息可以通过查看超级块信息看到,这里不再对其进行演示。

………………………………………………………………………………………………………………………

命令演示

1、指定文件系统将块设备挂载至指定空文件夹内:演示内容:1)没有指定文件系统,命令是否能正确执行;2)指定错误文件系统,命令是否能正确执行;3)挂载点有内容的文件夹,查看被挂载后其内容是否消失。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[root@localhost /] # fdisk -l
...
    设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1             2048     2099199     1048576   83  Linux
/dev/sdb2          2099200     4196351     1048576    5  Extended
/dev/sdb5          2101248     2306047      102400   83  Linux
/dev/sdb6          2308096     2512895      102400   83  Linux
/dev/sdb7          2514944     2719743      102400   83  Linux
/dev/sdb8          2721792     2926591      102400   83  Linux
...
[root@localhost /] # mount /dev/sdb8 /device
[root@localhost /] # df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/CentOS-root  18307072 4724136 13582936   26% /
devtmpfs                  485368       0   485368    0%  /dev
tmpfs                     500664      84   500580    1%  /dev/shm
tmpfs                     500664    7160   493504    2%  /run
tmpfs                     500664       0   500664    0%  /sys/fs/cgroup
/dev/sda1                  508588  142620   365968   29%  /boot
tmpfs                     100136      20   100116    1%  /run/user/42
tmpfs                     100136       0   100136    0%  /run/user/0
/dev/sdb8                   98988    5280    93708    6%  /device
[root@localhost /] # blkid /dev/sdb8
/dev/sdb8 : UUID= "a3c4bf06-3695-45e8-8a07-a063498f0578"  TYPE= "xfs" 
[root@localhost /] # umount /device
[root@localhost /] # mount -t ext2 /dev/sdb8 /device
mount : 文件系统类型错误、选项错误、 /dev/sdb8  上有坏超级块、
        缺少代码页或助手程序,或其他错误
[root@localhost /] # cd /device/
[root@localhost device] # ll
总用量 0
[root@localhost device] # touch 11 22
[root@localhost device] # ll
总用量 0
-rw-r--r--. 1 root root 0 8月  23 10:14 11
-rw-r--r--. 1 root root 0 8月  23 10:14 22
[root@localhost device] # ll
总用量 0
[root@localhost device] # ll -a
总用量 4
drwxr-xr-x.  2 root root    6 8月  23 09:27 .
dr-xr-xr-x. 21 root root 4096 8月  23 09:29 ..
[root@localhost device] # cd ..
[root@localhost /] # umount /device/
[root@localhost /] # cd /device/
[root@localhost device] # ll
总用量 0
-rw-r--r--. 1 root root 0 8月  23 10:14 11
-rw-r--r--. 1 root root 0 8月  23 10:14 22

通过上述演示,说明了如下事实:1)没有指定文件系统,块设备也可以正常挂载;2)指定与块设备不一致的文件系统类型则命令报错;3)挂载点有内容的文件夹,在挂载后内容消失,卸载后内容重现,也就是说挂载后会将原文件内容掩盖,但并不对其进行其他操作。

………………………………………………………………………………………………………………………

2、演示内容:1)指定卷标并以只读方式挂载;2)对目录进行挂载操作,查看其与硬链接与软链接有何不同。

[root@localhost device]# blkid /dev/sdb6

/dev/sdb6: LABEL="sdb6" UUID="8284450c-8cb9-45d7-a8b8-ed9ed9ef9e52" TYPE="xfs" 
[root@localhost device]# mount -L 'sdb6' -r /device/ 
[root@localhost device]# touch /device/33 
touch: 无法创建"/device/33": 只读文件系统 
[root@localhost device]# umount /device/ 
[root@localhost /]# mount -B /etc/ /device/ 
[root@localhost /]# ll -i / 
总用量 64 
    11341 lrwxrwxrwx.  1 root root    7 7月  19 23:54 bin -> usr/bin
      128 dr-xr-xr-x.  4 root root 4096 8月  2 10:09 boot 
        3 drwxr-xr-x.  19 root root 3300 8月  23 09:10 dev 
 33554561 drwxr-xr-x. 129 root root 8192 8月  23 09:38 device 
 33554561 drwxr-xr-x. 129 root root 8192 8月  23 09:38 etc 
      158 drwxr-xr-x.  42 root root 4096 8月  22 09:00 home

通过上述演示,说明了如下事实:1)指定卷标挂载可行,以只读方式挂载后,无法对挂载点中的内容进行修改、创建等操作;2)目录的挂载实质上是硬链接,挂载后可以对里面的文件内容进行修改与删除。

注:文件夹的挂载在df中并不显示

………………………………………………………………………………………………………………………

卸载命令umount

命令使用格式:

     # umount DEVICE

     # umount MOUNT_POINT

上面已经演示过umount的使用

fuser:查看正在访问指定文件系统的进程:

命令使用格式:

     # fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:慎用

     # fuser -km MOUNT_POINT

 


交换分区swap

这里介绍下交换分区,通过实验演示交换分区的创建及挂载

挂载交换分区:

启用:swapon

   swapon [OPTION]... [DEVICE]

    -a:激活所有的交换分区;

    -p PRIORITY:指定优先级;

禁用swapoff [OPTION]... [DEVICE]

实验演示

1、交换分区的创建:1)新创建一分区,2)修改新分区的类型,改为swap号码为82,3)格式化为swap

[root@localhost ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。 
更改将停留在内存中,直到您决定将更改写入磁盘。 
使用写入命令前请三思。 
命令(输入 m 获取帮助):n 
Partition type: 
  p  primary (1 primary, 1 extended, 2 free) 
  l  logical (numbered from 5) 
Select (default p): l 
添加逻辑分区 9 
起始 扇区 (2928640-4196351,默认为 2928640): 
将使用默认值 2928640 
Last 扇区, +扇区 or +size{K,M,G} (2928640-4196351,默认为 4196351):+100M 
分区 9 已设置为 Linux 类型,大小设为 100 MiB 
命令(输入 m 获取帮助):p 
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 
Units = 扇区 of 1 * 512 = 512 bytes 
扇区大小(逻辑/物理):512 字节 / 512 字节 
I/O 大小(最小/最佳):512 字节 / 512 字节 
磁盘标签类型:dos 
磁盘标识符:0xd391e822 
  设备 Boot      Start        End      Blocks  Id  System 
/dev/sdb1            2048    2099199    1048576  83  Linux 
/dev/sdb2        2099200    4196351    1048576    5  Extended 
/dev/sdb5        2101248    2306047      102400  83  Linux 
/dev/sdb6        2308096    2512895      102400  83  Linux 
/dev/sdb7        2514944    2719743      102400  83  Linux 
/dev/sdb8        2721792    2926591      102400  83  Linux 
/dev/sdb9        2928640    3133439      102400  83  Linux 
命令(输入 m 获取帮助):t 
分区号 (1,2,5-9,默认 9):9 
Hex 代码(输入 L 列出所有代码):82 
已将分区“Linux”的类型更改为“Linux swap / Solaris” 
命令(输入 m 获取帮助):p 
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 
Units = 扇区 of 1 * 512 = 512 bytes 
扇区大小(逻辑/物理):512 字节 / 512 字节 
I/O 大小(最小/最佳):512 字节 / 512 字节 
磁盘标签类型:dos 
磁盘标识符:0xd391e822 
  设备 Boot      Start        End      Blocks  Id  System 
/dev/sdb1            2048    2099199    1048576  83  Linux 
/dev/sdb2        2099200    4196351    1048576    5  Extended 
/dev/sdb5        2101248    2306047      102400  83  Linux 
/dev/sdb6        2308096    2512895      102400  83  Linux 
/dev/sdb7        2514944    2719743      102400  83  Linux 
/dev/sdb8        2721792    2926591      102400  83  Linux 
/dev/sdb9        2928640    3133439      102400  82  Linux swap / Solaris 
命令(输入 m 获取帮助):w 
The partition table has been altered! 
Calling ioctl() to re-read partition table. 
正在同步磁盘。 
[root@localhost ~]# mkswap /dev/sdb9 
正在设置交换空间版本 1,大小 = 102396 KiB 
无标签,UUID=74bf2766-a01b-48ea-9082-2fad6b8e06a9

2、挂载交换分区:启用与禁用

[root@localhost ~]# free 
              total        used        free      shared  buff/cache  available 
Mem:        1001332      101756      535892      13424      363684      720328 
Swap:      2097148          0    2097148 
[root@localhost ~]# swapon /dev/sdb9  
[root@localhost ~]# free 
              total        used        free      shared  buff/cache  available 
Mem:        1001332      101716      535924      13424      363692      720368 
Swap:      2199544          0    2199544 
[root@localhost ~]# swapoff /dev/sdb9  
[root@localhost ~]# free 
              total        used        free      shared  buff/cache  available 
Mem:        1001332      102492      535152      13424      363688      719592 
Swap:      2097148          0    2097148

实验涉及到的命令小结:      

  内存空间使用状态:free [OPTION]

    -m: 以MB为单位

    -g: 以GB为单位

  文件系统空间占用等信息的查看工具:df

    -h: human-readable

    -i:inodes instead of blocks

    -P: 以Posix兼容的格式输出; 

  查看某目录总体空间占用状态:du

  du [OPTION]... DIR

    -h: human-readable

    -s: summary

命令总结:mount, umount, free, df, du, swapon, swapoff, fuser


开机自动挂载

如果我们想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。

文件挂载的配置文件/etc/fstab

wKiom1e7vF_iNNTXAAAo2-XXpTo662.gif

查看此文件可知

每行定义一个要挂载的文件系统;

其每行的格式如下

要挂载的设备或伪文件系统  挂载点  文件系统类型  挂载选项 转储频率 自检次序

UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot  xfs    defaults    0 0

    要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)

    挂载点:指定的文件夹

   挂载选项:defaults

    转储频率

      0:不做备份

      1:每天转储

      2:每隔一天转储

    自检次序

      0:不自检

      1:首先自检;一般只有rootfs才用1;


/etc/fstab和/etc/mtab的区别

   /etc/fstab文件的作用

记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。 

  /etc/mtab文件的作用: 

   先看它的英文是: 

     This changes continuously as the file /proc/mount changes. In other words, when filesystems are mounted and unmounted, the change is immediately reflected in this file. 

     记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息 


 


http://chatgpt.dhexx.cn/article/pd4am9oG.shtml

相关文章

如何查看键盘上面的键值?

有同学问我如何查看某一个键值,于是我专门写这篇博客分享一个工具,对于学习C/C初级简单制作某一个游戏还是可以的。 下载地址: https://dearbear.lanzoui.com/i8QKqhbfv5e

从键盘输入数据并显示

从键盘输入数据并显示实验 编写程序,将键盘接收到的四位十六进制数按"Enter"回车键转化为二进制数,再显示 在屏幕上, 按"空格键"结束!。若输入的不是 0-F 间的数字,则显示出错信息,并要求 重新输入。 …

jquery 界面显示软键盘

需求&#xff1a;客户端界面需要一个软键盘进行操作 做了一个简易的例子进行展示。 html代码&#xff1a; <div id"container"> <div class"print-right"><div id"right-top" class"right-top"><div class&quo…

ubuntu 显示键盘按键

前言 在看一些主播玩游戏时&#xff0c;他们屏幕上会有一个虚拟键盘&#xff0c;可以显示按键 当时觉得很神奇&#xff0c;就想着给ubuntu也弄一个 庆幸的是&#xff0c;ubuntu的确有这种软件 文章目录 前言一、KeyMon简介二、安装步骤三、自定义设置总结 一、KeyMon简介 这…

PS/2键盘显示感叹号 报(代码10)错误

PS/2键盘显示感叹号 报&#xff08;代码10&#xff09;错误具体步骤如下&#xff1a; 1、开始-》控制面板-》轻松访问中心&#xff0c;打开屏幕键盘。 2、点开始-》运行-》使用屏幕键盘输入regedit&#xff0c;然后点回车&#xff0c;打开注册表编辑器 &#xff08;计算机\H…

Android软键盘(五)如何判断软键盘是否显示

前几次分析了软键盘自动弹出的现象&#xff0c;以及布局上移上移等问题&#xff0c;这次记录一下&#xff0c;如何判断软键盘是否在显示。 先来看一下网上比较流行的答案&#xff1a; 一&#xff1a; if(getWindow().getAttributes().softInputMode WindowManager.LayoutPar…

IOS 键盘的显示与关闭

转自&#xff1a;http://my.oschina.net/hmj/blog/99489 在每一个IOS应用中&#xff0c;几乎不可避免的要进行文本输入操作&#xff0c;例如要求用户填写登陆注册信息&#xff0c;进行话题的评论回复&#xff0c;等等。用到的文本输入组件有UITextField,UITextView,对于这两个…

如何在屏幕实时显示键盘操作(独家分享)

能够在屏幕上实时显示键盘操作&#xff0c;对于录制操作教程视频需求的人来说&#xff0c;可以达到事半功倍的效果&#xff0c;尤其对于比较大型的软件&#xff0c;如Photoshop&#xff0c;After effect等&#xff0c;有非常复杂多样的快捷键&#xff0c;&#xff08;小型软件也…

实时显示键盘按键

本文转载于&#xff1a;Keyviz - 开源按键可视化工具&#xff1a;实时显示键盘按键[Windows] - 小众软件 Keyviz 是一款开源、免费的按键可视化工具&#xff0c;它可以实时显示用户当前按下的按键&#xff0c;可自定义显示按键风格、样式&#xff0c;非常适合录屏、演示等场合…

键盘按键显示软件nohboard

作为一名主播为了自证明游戏中的天秀操作是自己打出来的&#xff0c;不是外挂或代打 亦或者录制一段教学视频&#xff0c;需要实时显示你的按键操作&#xff0c;都需要如下一款软件&#xff1a; nohboard 下载地址&#xff1a; https://obsproject.com/forum/resources/no…

如何在屏幕实时显示自己键盘的输入字符?

请先看这篇文章&#xff1a; 本博打开方式&#xff01;&#xff01;&#xff01;请详读&#xff01;&#xff01;&#xff01;请详读&#xff01;&#xff01;&#xff01;请详读&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 大家在观看…

PowerBuilder 9日历控件展示,下载(附带源码)

下载地址&#xff1a;https://download.csdn.net/download/weixin_37914760/11444539 1、pb9日历控件&#xff0c;支持多个日期选择

C# scottplot插件下载安装(工具箱中无控件问题)

前言 ScottPlot - 可交互的 .NET 图表库 (coderbusy.com)https://scottplot.coderbusy.com/软件版本&#xff1a;VS2015 参考&#xff1a;(3条消息) C# 使用 ScottPlot.WinForms 实现示波器的波形显示_张世争的博客-CSDN博客_winform 示波器https://blog.csdn.net/tcjy1000/a…

WinCC数据报表控件

1、背景 WinCC实现报表历来是老大难&#xff0c;自带的报表功能不好使&#xff0c;又没有好用的第三方控件。虽然网上也有很多实现报表的方法&#xff0c;但是毫无例外的要求使用者具有脚本编程功底&#xff0c;HwDataReport的出现将终结这一现象。您无需一行脚本即可完成…

QT学习之自定义控件

一 、自定义控件封装 1、 添加新文件 - Qt – 设计师界面类 (smallwidget.h smallwidget.cpp smallwidget.ui) 2、在添加的新 smallwidget.ui中 设计 QSpinBox和QSlider 两个控件&#xff0c;组合在一起 3、 主UI界面中使用自定义控件&#xff0c;拖拽一个Widget&#xff0c;…

pyqt qtdesinger 自定义控件

自定义控件包括3部分&#xff0c;自定义控件,提升控件和修改py文件。 1.自定义控件 在新建窗体时选择Widget。 这时这个窗体整个就是一个控件。 随便拖入些控件完成创建。保存。 命名为try_widget。 把ui文件转化为py文件。 自定义控件部分完成。 2.提升控件 新建一个QMain…

Microsoft Barcode控件详解

1、电脑无Microsoft BarCode插件&#xff0c;下载安装&#xff1a;&#xff08;链接已失效&#xff09;https://www.microsoft.com/zh-cn/download/details.aspx?id8913 2、安装后还是没有显示Microsoft BarCode插件&#xff0c;可以去下载MSBCODE9.OCX&#xff0c;通过CMD注…

Qt自定义控件(开源)

在平常的项目中经常会有到Qt做界面去显示一些数据&#xff0c;因此&#xff0c;使用Qt封装了一些自定义的控件。 所有控件使用Qt painter自绘&#xff0c;不需要依赖任何第三方库。提供setValue()接口&#xff0c;可以设置控件数据。每个控件都是一个单独的类。目前有仪表盘、…

C# 分页控件

先看实现项目的效果图&#xff1a; 特别是由于数据量比较大&#xff0c;页面显示卡顿需要分页显示时&#xff0c;这种控件就显得特别需要了。 之前看到不少控件库都有提供这个控件&#xff0c;但是单独提取出来的话&#xff0c;需要附带很多它类库里面的依赖文件&#xff0c;而…

C# winform 下拉框多选,自定义控件(附下载链接)

C# winform 下拉框多选&#xff0c;自定义控件 点我下载源文件 效果如下图所示&#xff1a; 可以实现下拉框多选效果 自定义控件&#xff0c;将上面这个自定义控件拖到项目就能使用 下拉框添加选项方法&#xff08;和ComboBox类似&#xff09; PowerComboBox5.Items.AddR…