今天学习了Linux文件系统,现在来做个小总结。

  首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构。  

  清单 1. Linux 系统的顶层目录结构
   /              根目录
  ├── bin 存放用户二进制文件
  ├── boot 存放内核引导配置文件
  ├── dev 存放设备文件
  ├── etc 存放系统配置文件
  ├── home 用户主目录
  ├── lib 动态共享库
  ├── lost+found 文件系统恢复时的恢复文件
  ├── media 可卸载存储介质挂载点
  ├── mnt 文件系统临时挂载点
  ├── opt 附加的应用程序包
  ├── proc 系统内存的映射目录,提供内核与进程信息
  ├── root root 用户主目录
  ├── sbin 存放系统二进制文件
  ├── srv 存放服务相关数据
  ├── sys sys 虚拟文件系统挂载点
  ├── tmp 存放临时文件
  ├── usr 存放用户应用程序
  └── var 存放邮件、系统日志等变化文件
 
  在装Linux系统的时候,通常是提前分给它一块硬盘(100G),然后用U盘启动后,进入自定义选项中,这时就要对这100G硬盘进行分区,一般分为/boot、/、/home、swap、/usr,这5个分区。
  Linux内核则将每个分区视为位于/dev路径下的单独设备。(sda1 sda2 sda3......sd10)
每一个磁盘分区或者是一个文件系统(存放常规文件),或者是一个交换区域(供内核的内存管理之用swap)
  在我电脑上就是我有4个文件系统(/boot 、/、/home、/usr),还有一个交换空间(swap)
  在文件系统中,用来分配空间的基本单位是逻辑块,亦即文件系统所在磁盘设备上若干连续的物理块。
  磁盘有磁盘分区组成,每一个磁盘分区就是一个文件系统,文件系统由引导块、超级块、i节点表、数据块组成。
  下面是我在网上看到的一篇写的很详细的文件系统结构解释。





  最后一幅图中,磁盘分了3个区,有3个文件系统,针对第二个文件系统进行了展开。
下面的图是linux系统编程手册的原图,第一幅图写的i结点的数据块指针,第二个是mount列出当前主机的所有文件系统以及挂载情况,并且通过一幅生动的图来体现。


  想必到了这里大家对文件系统的结构很清楚了吧!接下来,来讲解关于Linux文件系统的硬连接和软连接的相关知识,这两部分是对Linux文件系统,尤其是i节点的使用密切相关。
  首先,下面这幅图将的是如何根据文件名,通过目录表和i节点表找到对应的文件数据块的。
  我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块展示了程序通过文件名获取文件内容的过程。



接下来讲解什么是硬连接以及什么是软连接。

 1.Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

 【硬连接】
  硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
 如果你觉得通过上面例子还有一些不明白的,那么下面通过一个更具体的例子来给你讲述透彻。
 








 最后在补充一点Linux系统编程手册上知识

这幅图中,主要讲了如何通过i节点表和目录表找到对应的/etc/passwd file,先找/目录,再找/etc目录下,最后找到passwd文件,文件数据内容和目录表都是放在数据块中的。

最后一幅图,是向大家展示了硬链接和软连接的区别。
硬连接其实就是文件的别名,两个文件是同一个i节点。
但是软连接(符号连接),是创建新的文件,新的文件的数据块内容是原来文件的位置地址。
希望这个总结,能更好的帮助大家了解Linux文件系统。

Linux文件系统的更多相关文章

  1. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

  2. linux 文件系统简介

    linux文件系统简介   文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...

  3. Linux文件系统层次结构标准

    该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...

  4. linux文件系统节点详解

    linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...

  5. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  6. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  7. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  8. linux文件系统简介

    文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接 ...

  9. linux文件系统---10

    进入 Linux 根目录(即“/”, Linux 文件系统的入口, 也是处于最高一级的目录),运行“ls –l”命令,可以看到 Linux 系统包含以下目录. 1./bin 包含基本命令,如 ls.c ...

随机推荐

  1. css中的负边距

    css中的负边距(negative margin)是布局中的一个常用技巧,只要运用得合理常常会有意想不到的效果.很多特殊的css布局方法都依赖于负边距,所以掌握它的用法对于前端的同学来说,那是必须的. ...

  2. SQL转换时间的时分

    SELECT WorkerNo, DutyTime, DATENAME(weekday, DutyTime) AS WeekDay, CycleType, CycleNumber, YnOnDuty, ...

  3. eclipse开发servlet,HttpServletRequest报红叉解决方案

    eclipse开发servlet,HttpServletRequest报红叉解决方案 今天突然间有兴致,想打一会代码,于是开发一个Servlet,代码和配置路径都没问题,HttpServlet居然报错 ...

  4. LeetCode 36 Valid Sudoku

    Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...

  5. 【转载】mysql慢查询

    mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+---- ...

  6. JQuery UI dialog 弹窗实例及参数说明

    按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...

  7. Linux C编程学习6---字符串处理、数据转换

    1.字符串 应用程序按其功能可分为数值计算.非数值计算以及输入输出操作等.非数值计算程序占相当大的比例,其核心就是字符串处理1.1.字符测试 1.1.1.测试字符是否为英文字母 int isalpha ...

  8. Conditional project or library reference in Visual Studio

    Conditional project or library reference in Visual Studio In case you were wondering why you haven’t ...

  9. jQuery获取输入框并设置焦点

    $(':input:enabled:visible:first').focus(); $("input:text:visible:first").focus(); 表单元素选择器: ...

  10. Visual C++ 的代码折叠

    写着写着,文件长了,代码多了. 就需要折叠一下了. 以前不知道C++有,百度了一下才知道,跟C#的还挺像 ,就是多了个 #pragma #pragma region 注释说明 代码. #pragma ...