Linux学习-43-挂载Linux系统外的文件mount和卸载文件系统umount命令用法

news2024/9/20 14:29:20

10.10 mount命令详解:挂载Linux系统外的文件

  • 所有的硬件设备必须挂载之后才能使用(新硬盘先格式化后创建分区,再对分区进行挂载),只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。通过学习 Linux 文件系统,我们可以对挂载的含义进行引申,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。而要将文件系统挂载到 Linux 系统上,就需要使用 mount 挂载命令。
  • 手动挂载(mount):重启后会失效。用于检测已经格式化的设备,是否可以和预期一样的进行工作。永久挂载:就要将设备添加到/etc/fstab中去了 .
  • /dev/ 该目录下存放的是 Linux 的外部设备,一般linux检测到的光盘和U盘的位置在此目录下,同样也是在这个目录中对设备进行分区,这些新建的分区目前和linux系统联系不大,如:/dev/sdb1分区是一个类似指针的数据结构,指向这个分区的原始数据块,还不属于/目录,这时虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但系统并不知道这个数据块哪部分数据代表文件,如何对它们操作,在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。需要对其进行挂载才能访问这些外部存储设备,这时访问挂载点就是在访问该存储设备。在 Linux 中访问设备的方式和访问文件的方式是相同的。

Windows系统mount挂载,给磁盘分区提供一个盘符(C,D,E,…)。比如插入移动硬盘后系统自动分配给了它I:这个过程其实就是挂载,退出移动硬盘后的时候进行安全弹出,其实就是卸载unmount。

Linux系统和Windows不同,win可以有C,D…多个目录,Linux只有一个根目录/。在按装Linux系统时,自定义创建的所有分区都在/下的某个位置,比如/run等等。

linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。

如:插入CD,系统其实自动执行了 mount /dev/cdrom /media/cdrom。所以可以直接在/media/cdrom中对CD中的内容进行管理。

参考文献:什么是挂载

  • mount 命令的常用格式有以下几种:
[root@CncLucZK ~]# mount [-l]
#单纯使用 mount 命令,会显示出系统中已挂载的设备信息,使用 -l 选项,会额外显示出卷标名称

命令测试:

[root@CncLucZK test]# mount -l
/dev/vda1 on / type ext4 (rw,relatime)
...
[root@localhost ~]# mount -a

-a 选项的含义是自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。简单介绍一下 /etc/fstab 文件,此文件是自动挂载文件,系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。

[root@CncLucZK ~]# mount [-t 系统类型] [-L 卷标名] [-o 特殊选项] [-n] 设备文件名 挂载点
  • 各选项的含义分别是:
    • -t 系统类型:指定欲挂载的文件系统类型。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
    • -L 卷标名:除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
    • -n:在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
    • -o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则使用默认值(defaults)。具体的特殊选项参见下表 ;
选项功能
rw/ro是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
[root@CncLucZK test]# mount		#查看系统中已经挂载的文件系统,注意有虚拟文件系统
#含义是,将 /dev/sda3 分区挂载到了 / 目录上,文件系统是 ext4,具有读写权限
/dev/sda3 on / type ext4 (rw)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=923060k,nr_inodes=230765,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext4 (rw)
  • 修改特殊权限。通过上例我们查看到,/boot 分区已经被挂载了,而且采用的是 defaults 选项。这里我们重新挂载分区,并采用 noexec 权限禁止执行文件执行,看看会出现什么情况(注意不要用 / 分区做实验,否则系统命令也就不能执行了。
[root@CncLucZK ~]# mount -o remount noexec /boot
#重新挂载 /boot 分区,并使用 noexec 权限
[root@CncLucZK sh]# cd /boot
#写一个 shell 脚本,看是否会运行
[root@localhost boot]#vim demo1.sh
#!/bin/bash
n=10
str1=HelloWorld${n} str2="linux \"shell\"${n}"
str3='string ${n}'

echo $str1
echo $str2
echo $str3

[root@CncLucZK boot]# chmod 755 demo1.sh
[root@CncLucZK boot]# . demo1.sh
-bash:./demo1.sh:权限不够
#虽然赋予了demo1.sh执行权限,但是仍然无法执行
[root@CncLucZK ~]# mount -o remount exec /boot
#记得改回来,否则会影响系统启动

对于特殊选项的修改,除非特殊场景下需要,否则不建议大家随意修改,非常容易造成系统出现问题,而且还找不到问题的根源。

  • 手动挂载分区。/dev/sdb1 分区还没有被划分。我们在这里只看看挂载分区的方式,非常简单,甚至不需要使用 “-ext4” 命令指定文件系统,因为系统可以自动检测。
root@CncLucZK ~]# mkdir /mnt/disk1
#建立挂载点目录
[root@CncLucZK ~]# mount /dev/sdb1 /mnt/disk1
#挂载分区
[root@www ~]# df /mnt  #显示mnt目录下的分区信息
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中间省略.....
/dev/sdb1              1976312     42072   1833836   3% /mnt/disk1
  • 使用 Linux 系统的硬盘分区不能像 Windows 系统那样,硬盘安装上就可以自动检测并投入使用,硬盘分区(设备)挂载和卸载(使用 umount 命令)的概念源自 UNIX,UNIX 系统一般是作为服务器使用的,系统安全非常重要,特别是在网络上,最简单有效的方法就是“不使用的硬盘分区(设备)不挂载”,因为没有挂载的硬盘分区是无法访问的,这样系统也就更安全了。这样也可以减少挂载的硬盘分区数量,相应地,也就可以减少系统维护文件的规模,当然也就减少了系统的开销,即提高了系统的效率。
  • 永久挂载:就要将设备添加到/etc/fstab中去 .
[root@CncLucZK ~]# vi /etc/fstab

在这里插入图片描述

  • 通过命令 : vim /etc/fstab 来查看永久挂载的配置文件 , /dev/mapper/centos-root / 表示的是我们之前在 df 命令下看到的逻辑卷的那个 , UUID=52b169f8-e31e-44e3-ac26-3bc74fe9e3e9 /boot 0 0 这个表示的是启动目录的挂载点 , mpper/centos-swap 这个表示的虚拟内存的挂载 , 默认情况下是挂载了三块硬盘 , 现在我们来把那块 sdb1 硬盘也挂碍上去 .

  • 该文件由六个部分组成

1:要使用的设备—可以使用UUID,也可以使用设备文件.可以使用blkid命令查看设备的UUID号
在这里插入图片描述
2.可以看到上面的 sdb1的信息 , 使用命令 : vim /etc/fstab 来对永久挂载的配置文件进行编辑 .

vim /etc/fstab 
...
/dev/sdb1 /mnt/disk1  ext4 default  0 0
1			2			3	4		5	6	
  • 第二部分:写挂载点,已经存在直接写,不存在使用mkdir来创建

    第三部分:文件系统类型

    第四部分:挂载时,应用于设备的自定义选项,defaults是必须的

    第五和第六部分:转存标志和fsck顺序

    转存标志:用于生成设备内容的备份,

    0:表示不需要备份

    1:表示需要备份

    fsck:当有多个文件系统需要检查时,检查的顺序。

    0表示不需要检查,开机直接挂载

    1表示检查后第一个挂载

    2表示检查后第二个挂载

  • 使用mount -a命令 检查书写格式是否有误 , 如果 mount -a 没有什么报错 , 则是表示配置文件书写正确 , 如果报错则书写错误 , 记得写完配置文件后wq(保存退出后一定要使用 mount -a 来检查) , 不然配置文件写错了后 , 再来开机是开不了机的 .

  • 然后我们来重启一下这个操作系统 , 使用命令 : reboot

  • 然后再来使用命令 df 命令查看 sdb1 是否挂载上去了 。

参考文献:Linux使用fdisk进行分区

10.11 umount命令:卸载文件系统

  • 将光盘和 U 盘挂载在系统中,而在使用完成后,需要先将其与挂载点取消关联,然后才能成功卸载。不过,硬盘分区是否需要卸载,取决于你下次是否还需要使用,一般不对硬盘分区执行卸载操作。
  • umount 命令用于卸载已经挂载的硬件设备,该命令的基本格式如下:
[root@CncLucZK ~]# umount [-fn]  设备文件名或挂载点
  • 选项与参数:
    • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
    • -n :不升级 /etc/mtab 情况下卸除。

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

[root@CncLucZK ~]# umount /mnt/usb
#卸载U盘挂载点
[root@CncLucZK ~]# umount /mnt/cdrom
#卸载光盘挂载点
[root@CncLucZK ~]# umount /dev/sr0
#命令加设备文件名,同样是可以卸载的

[root@CncLucZK ~]# mount /dev/sr0 /mnt/cdrom/
如果加了两个(如下所示),从理论上分析,会对光驱卸载两次,当然,卸载第二次的时候就会报错。
  • 另外,我们在卸载时有可能会出现以下情况:
[root@CncLucZK ~]# cd /mnt/cdrom/
#进入光盘挂载点
[root@CncLucZK cdrom]# umount /mnt/cdrom/
umount: /mnt/cdrom: device is busy.
#报错,设备正忙

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

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

参考文献:
Linux umount命令:卸载文件系统
Linux 磁盘管理

下一篇:Linux学习-44-虚拟内存、物理内存和swap分区的作用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录一次我虚拟机好不容易连上后的配置

有一说一,看到这个响应,人都麻了 在此我记录一下我检查了哪些,做了哪些 一、Windows本地服务 这一块,有一个算一个,没起的启动,启动的重启 二、VMware的虚拟网络编辑器设置 因为我这次成功用的是NAT模式&a…

图像分割 - 阈值处理 - 多阈值处理(OTSU)

目录 1. 多阈值处理介绍 2. 代码讲解 3. 完整代码 1. 多阈值处理介绍 之前介绍的都是全局单个阈值对图像的分割。固定阈值法,阈值是人工根据灰度直方图的波谷进行设置的。全局阈值法,根据不停的迭代两个区域间的平均灰度进行分割。OUST最大类间方差法…

centos7 环境安装 PM2 管理 node

前言: 由于最新的项目中用到的框架是 ssr 框架。 Vue使用的ssr是 nuxt.js,由于 nuxt.js 和普通的Vue项目不同,所以部署到Linux服务器的方式和普通的Vue项目是有区别的。 1、PM2 介绍 PM2 是一款非常优秀的 Node 进程管理工具,它…

用于科学研究的TCO反式环辛烯:1312010-03-9,(4E)-TCO-CycP-O-PNB ester

(4E)-TCO-CycP-O-PNB ester物理数据: CAS:1312010-03-9| 中文名:(4E)-反式环辛烯-CycP-O-PNB ester, (4E)-反式环辛烯-CYCP-O-PNB-酯 | 英文名:(4E)-TCO-CycP-O-PNB ester 结构式: 英文别名: …

试用信号灯实现如图所示的进程同步关系

试用信号灯实现如图所示的进程同步关系 信号量的个数要等于具有直接前驱的进程个数 P2,P3,P4,P5这些进程有前驱,所以设S2S3S4S50 因为P1执行完,P2,P3,P4才能执行因为P1没有直接前驱,所以直接释放P2.P3.P4的信号量S2,S3,S4P1{V(S2)V(S3)V(…

03-HTML

1 HTML入门 1.1 初识HTML 1.1.1 概述 网络世界已经跟我们息息相关,当我们打开一个网站,首先映入眼帘的就是一个个华丽多彩的网页。这些网页,不仅呈现着基本的内容,还具备优雅的布局和丰富的动态效果,这一切都是如何…

图像分割简介

相比于目标检测只是将目标位置检测出来而言,目标分割能够更精准的将图像进行划分。图像分割在计算机视觉中的地位 为后续检测、识别等提供技术支持。 图像分割难点以及处理 难点:图像特征的组合难以表达? 比如 图中人的头发和裤子是黑色&a…

《FFmpeg Basics》中文版-10-为视频添加文字

正文 视频中包含的文本数据可以显着提高其信息质量。 在视频中添加文字的相关介绍 如何将一些文本添加到视频输出中的两种常用方法是使用前一章中的字幕或叠加技术(overlay)。 具有许多可能性的最高级选项是使用表中描述的抽象滤镜: 描述从文本文件或字符串在视频…

成像雷达量产突破:木牛携手全球合作伙伴突破智驾瓶颈

时隔三年的全球工程机械行业大展,第33届2022德国慕尼黑Bauma展,于近期圆满收官。作为2022年为数不多的全球性展会,吸引了60多个国家和地区的3100余家工程机械企业聚首,行业新品竞相角逐,数字智能化的创新产品成为本次展…

最近公共祖先(lca)

题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含三个正整数 N,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−1 行每行包含两个正整数 x,y,表示 x 结点和 y 结…

[附源码]java毕业设计景区门票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C# 通过字符串找对应名称的变量、Winform跨容器调用变量、递归遍历XML

C# 通过字符串找对应名称的变量、Winform跨容器调用变量、递归遍历XML 通过字符串,找对应名称的变量 ExceptionRecord er new ExceptionRecord();//新建类的对象(变量在这个类中) var fieldInfo er.GetType().GetField("Params"…

《Google软件工程之道》软件工程随想

写在之前:今年年初给自己安排了任务,每个月写一遍感悟性的文章。促使自己沉淀并思考。 这篇文章的内容本来只是一些想法, 想想还是记下来。几年以后自己再读这篇文章也许是另一种体会吧 编程和软件工程之间有三个关键的区别:时间、…

基于遗传算法的自主式水下潜器路径规划问题(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

2022/11/18拓展班上机课

Vs的使用 新建项目 新建源文件 关闭scanf_s和printf_s检查:project -> 属性 -> C/C -> 常规 ->SDL:否 char* str"..."出现”"const char *" 类型的值不能用于初始化 "char *" 类型的实体“错误&#xff…

2022.11.17补题祭

前言: 考完期中考试了!!生物逆袭了!!全年级前十(可能是因为题目太简单我比较细心吧)但还是错了一些不该错的题目......(生物惨痛87分) 感觉这次期中考试情况良好&#…

荧光标记PEG衍生物——Fluorescein-PEG-Azide,FITC-PEG-N3,荧光素peg叠氮

荧光标记PEG衍生物——Fluorescein-PEG-Azide,FITC-PEG-N3,中文名为荧光素-聚乙二醇-叠氮,其所属分类为Azide PEG Fluorescent PEG。 Fluorescein-PEG-Azide的分子量均可定制:荧光素-peg 20000-叠氮/Fluorescein-PEG 5000-Azide、…

47-用户和权限管理

47-用户和权限管理用户的管理和相关管理命令用户的基础概念用户UID区分用户类别创建用户- useradd修改用户- usermod删除用户- userdel修改用户密码- passwd实验:用户的管理文件用户组的基础概念用户组GID用户组分类创建组- groupadd修改组-groupmod删除组- groupde…

qt 样式表 qss

Qt样式表是一个可以自定义部件外观的十分强大的机制﹐除了那些能够通过子类化QStyle更改的外观,其余的都可以使用Qt样式表来美化。 实现办法:调用setStyleSheet 函数,其中styleSheet一般通过读取配置文件.qss实现。 void setStyleSheet(const QString&a…

volatile如何保证可见性

在Java中, volatile关键字可以保证变量的可见性,如果我们将变量声明为 volatile,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主存中进行读取。 Java内存模型: 1.Java所有变量都存储在主…