【Linux进阶】文件系统3——目录树,挂载

前言

        在Windows 系统重新安装之前,你可能会事先考虑,到底系统盘C盘要有多大容量?而数据盘D盘又要给多大容量等,然后实际安装的时候,你会发现其实C盘之前会有个100MB的分区被独立出来,所以实际上你就会有三个分区,那Linux下面又该如何设计类似的东西呢?

1.目录树结构(directory tree)

        我们前面有谈过Linux内的所有数据都是以文件的形式来呈现,所以,整个Linux系统最重要的地方就是在于目录树架构。

所谓的目录树架构(directory tree)就是以根目录为主,然后向下呈现为分支状的目录结构的一种文件架构。

所以,整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线“/”,所有的文件都与目录树有关。

目录树的呈现方式如图所示。

所有的文件都是由根目录(/)衍生来的,而子目录之下还能够有其他的数据存在。长方形为目录,波浪形则为文件。

那当我们想要取得mydata那个又件时,系统就得由根目录开始找,然后找到home接下来找到dmtsai,最终的文件名为:/home/dmtsai/mydata。

我们现在知道整个 Linux 系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分区当中,现在的问题是“如何结合目录树的架构与磁盘内的数据”?

这个时候就牵扯到挂载(mount)的问题。

2.文件系统与目录树的关系(挂载)

       我们说过, Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

        因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。

      也就是说,  挂载指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。 

        如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

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

我们看个例子来理解挂载

举个例子,我们想通过命令行访问某个 U 盘中的数据,图 1 所示为 U 盘文件目录结构和 Linux 系统中的文件目录结构。

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

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

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

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

由于整个Linux 系统最重要的是根目录,因此根目录一定需要挂载到某个分区,至于其他的目录则可依用户自己的需求挂载到不同的分区,我们以下图作为一个说明:

       上图中假设我的硬盘分为两个分区,分区1是挂载到根目录,至于分区2则是挂载到/home这个目录。这也就是说,当我的数据放置在/home内的各层目录时,数据是放置到分区2中的,如果不是放在 /home下面的目录,那么数据就会被放置到partition1。

        Windows也是用挂载的概念。鸟哥上课经常谈到的范例就是,当你拿U盘连接到你的Windows时,系统会检测到一个F盘,那你想要读取U盘的数据,要去哪里?当然就去F盘,同样的这个U盘,当你拿到学校的Windows时,却显示的是H盘好了,那你要读取U盘的数据还是去F盘吗?当然不是,你会去H盘。

这个“设备与磁盘分区对应的关系,就是Windows概念下的挂载”。这样说,有没有比较容易理解呢?

        其实判断某个文件在哪个分区下面是很简单的,通过反向追踪即可。以上图来说,当我想要知道home/vbird/test这个文件在哪个分区时,由test-->vbird-->home-->/,看哪个“进入点”先被查到那就是使用的进入点。所以test 使用的是/home这个进入点而不是/。

例题

        现在让我们来想一想,我的计算机系统如何读取光盘内的数据?

在Windows里面使用的是“光驱”的代号方式处理(假设为E盘时),但在Linux下面我们依旧使用目录树。在默认的情况下,Linux是将光驱的数据放置到/media/cdrom里面。

如果光盘里面有个文件名为“我的文件”的文件,那么这个文件是在哪里?

       答:这个文件最终会在如下的完整文件名中:

  • Windows:桌面\我的计算机\E:\我的文件
  • Linux:/media/cdrom/我的文件

如果光驱并非被挂载到/media/cdrom,而是挂载到/mnt这个目录时,刚刚读取的这个文件的文件名会变成:

  • /mnt/我的文件

如果你了解这个文件名,这表示你已经知道了挂载的意义。初次接触Linux时,这里最容易搞混
因为它与Windows的分区代号完全不一样。

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

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

相关文章

探索横河AQ6370E系列光谱仪隐藏功能!---高级标记功能!

横河AQ6370E系列光谱仪的这款光谱仪的传统功能中,其实还隐藏了一个特别实用的功能——高级标记功能!前所未有的方式解析数据与测量信号,不仅带来了全新的测试体验,还提升了测量速度,那么这个功能怎么找到呢&#xff0c…

ALG:MODTRAN查找表参数详解(学习笔记4)

一、Modtran安装及环境配置 https://blog.csdn.net/qq_41358707/article/details/134721973 二、ALG配置更新 添加大气RTM。Settings,进入首选项界面,单击RTM选项卡以更新RTM的配置: 从窗口右上角的select RTM弹出菜单中选择一个大气RTM&a…

【数据结构】TreeMap及TreeSet

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 一、概念 TreeMap和TreeSet都是Java中基于红黑树(Red-Black tree)实现的有序集合类。它们分别实现了SortedMap和SortedSet接口,因此提供了按照键(对…

更深入了解汽车与航空电子等安全关键型应用的IP核考量因素

作者:Philipp Jacobsohn,SmartDV高级应用工程师 中国已经连续十多年成为全球第一大汽车产销国,智能化也成为了汽车行业发展的一个重要方向,同时越来越多的制造商正在考虑进入无人机和飞行汽车等低空设备,而所有的这些…

ExcelVBA运用Excel的【条件格式】(三)

ExcelVBA运用Excel的【条件格式】(三)前面知识点回顾1. 访问 FormatConditions 集合 Range.FormatConditions2. 添加条件格式 FormatConditions.Add 方法语法表达式。添加 (类型、 运算符、 Expression1、 Expression2)其中 TextOperator:***&am…

“创新电商营销:‘精选返现‘模式引领购物新风尚“

在电子商务领域的蓬勃发展中,创新营销模式层出不穷,其中“精选返现”模式凭借其创新的互动机制与激励机制,赢得了广大消费者的青睐。该模式通过优化价格策略、融入社交互动及构建梯度回馈体系,有效激发了消费者的购买动力&#xf…

企业应对策略:全面防御.DevicData-P-xxxxxx勒索病毒

引言 在数字化时代,网络安全已成为不可忽视的重要议题。随着互联网的普及,各种网络威胁层出不穷,其中勒索病毒以其独特的攻击方式和巨大的破坏性,给个人用户和企业带来了严重的经济损失和数据安全风险。在众多勒索病毒中&#xff…

昇思25天学习打卡营第11天|基于MindSpore的GPT2文本摘要

数据集 准备nlpcc2017摘要数据,内容为新闻正文及其摘要,总计50000个样本。 数据需要预处理,如下 原始数据格式: article: [CLS] article_context [SEP] summary: [CLS] summary_context [SEP] 预处理后的数据格式: […

Redis安装部署与使用,多实例

一、redis基础 1.1 关系型数据库和NoSQL数据库 数据库主要分为两大类:关系型数据库与 NoSQL 数据库。 关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的 MySQL、Oracle、MS SQ…

Python爬虫教程第2篇-reqeusts是最好用的网络请求工具

简介 爬虫第一步就是网络请求,一个好用的网络请求库会非常重要。而requests库就是非常好用的一个http库,pyhon中虽然也有内置的urllib库用于网络请求,但是urllib使用起来比较的麻烦,而且缺少很多实用的高级功能,所以这…

Syncthing一款开源去中心化和点对点文件同步工具

Syncthing:一款开源的文件同步工具,去中心化和点对点加密传输,支持多平台,允许用户在多个设备之间安全、灵活地同步和共享文件,无需依赖第三方云服务,特别适合高安全性和自主控制的文件同步场景。 &#x…

使用MySQLInstaller配置MySQL

操作步骤 1.配置High Availability 默认选项Standalone MySQL Server classic MySQL Replication 2.配置Type and Networking ◆端口默认启用TCP/P网络 ◆端口默认为3306 3.配置Account and Roles 设置root账户的密码、添加其他管理员 4.配置Windows Service ◆配置MySQL Serv…

Java线程池及面试题

1.线程池介绍 顾名思义,线程池就是管理一系列线程的资源池,其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息,例如已完成任务的数量。 总结一下使用线程池的好处: 降低资源消耗。通过重复利用已创建的…

xcode项目添加README.md文件并进行编辑

想要给xcode项目添加README.md文件其实还是比较简单的,但是对于不熟悉xcode这个工具的人来讲,还是有些陌生,下面简单给大家讲一下流程。 选择“文件”>“新建”>“文件”,在其他(滚动到工作表底部)下…

Java基础-组件及事件处理(中)

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 BorderLayout布局管理器 说明: 示例: FlowLayout布局管理器 说明: …

【Qt5】入门Qt开发教程,一篇文章就够了(详解含qt源码)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)

文章目录 开发思路发射点添加子弹组件构建子弹处理缩放效果闪光效果 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一) 开发思路 整体开发还是基于组件的思维。相比于工厂模式或者状态机,可能有些老套,但是更容易理解和编…

STM32/GD32驱动步进电机芯片TM2160

文章目录 官方概要简单介绍整体架构流程 官方概要 TMC2160是一款带SPI接口的大功率步进电机驱动IC。它具有业界最先进的步进电机驱动器,具有简单的步进/方向接口。采用外部晶体管,可实现高动态、高转矩驱动。基于TRINAMICs先进的spreadCycle和stealthCh…

STM32 低功耗模式 睡眠、停止和待机 详解

目录 1.睡眠模式(Sleep Mode) 2.停止模式(stop mode) 3.待机模式(Standby Mode) STM32提供了三种低功耗模式,分别是睡眠模式(Sleep Mode)、停止模式(Stop …

MYSQL八股文汇总

目录 1、三大范式 2、DML 语句和 DDL 语句区别 3、主键和外键的区别 4、drop、delete、truncate 区别 5、基础架构 6、MyISAM 和 InnoDB 有什么区别? 7、推荐自增id作为主键问题 8、为什么 MySQL 的自增主键不连续 9、redo log 是做什么的? 10、redo log…