目录

一.了解磁盘

1.磁盘的概念

2.磁盘的物理结构

3.磁盘的逻辑结构

4.磁盘区域的划分

二.linux文件系统

三.inode

四.软硬链接

1.软链接

2.硬链接


一.了解磁盘

前言: 一般情况下, 系统中存在大量的未被打开的文件, 这些文件全部存储在磁盘上, 也简称磁盘级文件

在linux下, 一切皆文件, 而每个文件, 都拥有内容与属性, 这些全部存储在磁盘上

那么文件系统, 如何对磁盘文件进行管理, 磁盘是什么样子, 磁盘如何划分区域, 什么是格式化, 先来简单了解一下磁盘

1.磁盘的概念

永久性存储介质, 但是缺点就是非常慢, 因为磁盘属于外设, 是计算机中唯一的机械设备, 所以当我们加载一个进程或者打开一个文件都需要将其先加载到内存中, 尽可能的提速来与cpu的速度匹配

2.磁盘的物理结构

磁盘主要由盘片, 磁头...组成

盘面: 数据都存储在盘面上, 准确来说是存储在一个又一个扇区中

磁头: 由磁头高速左右摆动与盘片转动来进行读写

磁道: 一个盘面上的一圈就是一个磁道

柱面: 多个盘面的磁道在三维空间上组成一个柱面

扇区: 每个磁道被有规律的划分为n个扇区, 每一个扇区是512字节

OS通过CHS寻址来把数据写到指定扇区

CHS寻址:

1.在哪一个面上(对应的就是哪一个磁头)

2.在哪一个磁道(柱面)上

3.在哪一个扇区上

3.磁盘的逻辑结构

磁盘的物理结构是柱形的, 而在操作系统看来(也就是逻辑结构), 磁盘是线性的, 将其抽象为一个线性结构

将数据存储到磁盘转变为将数据存储到数组

找到磁盘的特定扇区的位置转变为找到数组特定的位置

对磁盘的管理就是对数组的管理

OS通过LBA寻址找到逻辑结构中的位置, 再将LBA寻址结果通过CHS寻址找到物理结构中的位置, 来进行读写

4.磁盘区域的划分

将上述逻辑结构划分为n个块, 所以对磁盘的管理, 就划分为了对一个小分区的管理

详细的说:

1.将一个总的线性结构划分为n个区域

2.再将每个划分好的区域, 分为n个小分区

3.每个小分区划分为n个块组

4.最终, OS对这些块组进行管理

二.linux文件系统

块组抽象图

块组中各个模块的概念

1.Data blocks: 多个4KB(8个扇区(512字节))大小的集合, 用来存储文件内容

2.inode Table: 一个大小为128字节的空间, 保存对应文件的属性, 所有文件的inode的集合, 每个文件都有对应的inode, 每个inode都有自己的inode编号

3.Block BitMap: 标记Data blocks中哪些个block被占用, 哪些个没被占用

4.inode BitMap: 标记inode Table中哪些个inode被占用, 哪些个没被占用

5.GDT: 块组描述符, 描述块组大小以及块组中的各种信息各种资源占用情况

6:Super Block: 描述整个磁盘的信息, 因为怕意外情况而导致Super Block数据丢失, 大部分块组中有备份

磁盘格式化都做了啥

写入相关数据, 并且每一个块组都写入, 整个分区就被写入了文件系统信息, 也就是格式化

写入相关数据, 就是将Block BitMap与inode BitMap中的位全部置为0, 将所有数据无效化, 即标记为可占用

事实上, 在删除文件时, 也是这么做的, 将Block BitMap与inode BitMap对应的删除文件的为置为0

所谓删除只是将数据无效化, 下一次写入新的数据即可覆盖无效数据

那么数据如果在没有被覆盖的情况下, 是可以被恢复的, 因为本质上inode还存在, block还存在

三.inode

指令: ls -i 查看当前目录下的所有文件inode

在inode Table, 这是一个128字节的空间, 在这个空间中有大量的inode

每个inode对应有且仅有一个独属于自己的inode编号

inode中保存的是对应文件的属性

一般对一个文件而言, 一个文件对应一个inode, 对应一个inode编号

也会有多个文件名对应一个inode的情况, 但是本质上这多个文件名还是指的同一个文件

内核数据结构中的struct inode表现形式

struct inode
{//inode编号//...//文件的属性...//...//与当前文件占用的block的映射关联int blocks[15];//block[0] = 6;block[1] = 7;//如果文件很大,一定有解决方式//block块不够用的情况//block最后几个映射可以映射其他的block来解决
}

如果一台计算机此时不能再新建文件了, 通常情况有两大原因

1.文件系统的block不够了

2.文件系统的inode不够了

四.软硬链接

前言: 目录是文件吗? 目录中存放的是什么

目录也是文件, 也有对应的inode

目录中存放的内容是目录中的文件与文件自己的inode的映射关系

这也就说明了, 为什么创建文件需要w权限, 因为创建一个文件, 需要向目录中写入文件名与inode编号的映射关系

这个数字代表当前inode与多少个文件名产生映射

inode是给系统看的, 文件名是给用户看的

所谓的删除文件, 本质上就是减这个数, 当这个数减为0时, 说明没有文件名与这个inode产生关联, 这时就可以删掉该文件了

删除文件指令

1.rm 文件名

2.unlink 文件名

1.软链接

linux软链接如同windows中的快捷方式, 软链接是一个单独的文件, 有属于自己的inode, 内容存储的是原文件的路径

创建软链接的指令:

ln -s file.txt soft.link

或ln file.txt -s soft.link

意为: 创建一个file.txt的软链接并命名为soft.link

softMybin.link是mybin生成的软链接, 是mybin这个可执行文件的快捷方式

2.硬链接

创建硬链接, 并不是真正的创建新的文件, 而是在指定目录下, 建立了文件名和指定inode的映射关系

创建硬链接指令

link file.txt hard.link

或ln file.txt hard.link

意为: 创建一个file.txt的硬链接并命名为hard.link

创建出硬链接hard.link与hard2.link, 此时发现这俩与file.txt的inode编号相同, 且inode与文件名的映射关系最终变为3, 也就是说, 此时有三个文件名与同一个inode产生关联, 简单粗暴的说, 此时这个文件便拥有了3个名字, 当我们删除任意一个的时候, 只会将映射关系的引用计数3减为2, 当减为0时, inode编号不与任何一个文件名关联的时候, 才会删掉文件

硬链接的用途

为什么新创建的目录是2, 而新创建的文件是1

因为, 进入dir2目录时, 会有一个隐藏文件.来表示当前文件, 这时dir2与.都指的是这个目录文件

当我们在目录中在创建一个目录时, 引用计数就会变为3, 因为目录中还存在一个隐藏文件..表示上一目录, 所以如果一个目录中存在一个目录的话, 引用计数就会变为3, 此时目录文件inode编号与目录名/./..产生关联, 当目录中存在多个目录时, 自然引用计数也会逐渐++

快速查看目录中存在的目录个数公式

设:

目录文件名与inode映射的引用计数 为x;

目录中目录的个数为n;

x = 目录名 + . + n*.. ---> x = 2 + n ---> n = x - 2

即: 目录中目录的个数 = 目录文件名与inode映射的引用计数 - 2

【Linux】文件系统/inode/软硬链接相关推荐

  1. python的深浅拷贝与linux中的软硬链接

    记录一下我对python的深浅拷贝以及linux中的软硬链接的理解 放在开头 软硬连接 python中对象的深浅拷贝 浅拷贝 深拷贝 copy.copy()对可变和不可变对象的不同 总结 放在开头 在 ...

  2. linux 文件inode,linux文件系统-inode学习整理

    linux文件系统-inode学习整理 介绍 linux文件系统可讲的模块有很多,包括文件系统整体架构.文件系统分类.虚拟文件系统以及文件系统存储结构等等,本文主要介绍的是文件系统的存储结构,也就是本 ...

  3. 以下关于linux文件系统中inode,linux文件系统—inode及相关概念.docx

    linux文件系统-inode及相关概念 linux文件系统-inode及相关概念 博客分类: /category/156693Linux/blogs/tag/LinuxLinux/blogs/tag ...

  4. Linux——文件系统inode与软硬链接

    目录 一.inode (一).背景知识 (二).inode 二.软硬链接 (一).软链接 (二).硬链接 一.inode (一).背景知识 我们知道,磁盘是按磁道与扇区划分.Linux把一个磁盘进行了 ...

  5. Linux的文件系统和软硬链接

    目录 文件系统 磁盘的物理结构: 磁盘的存储结构 磁盘的逻辑抽象结构 管理文件 那么文件如何与属于自己的内容关联起来? 创建一个文件,OS做了什么? 删除一个文件,OS做了什么? 软硬链接 硬链接 软 ...

  6. linux基础文件管理软硬链接

    一.文件系统的基本结构 1.文件和目录被组成一个单根倒置树目录结构 2.文件系统从根目录下开始,用"/"表示 3.根文件系统(rootfs):root filesystem文件名区 ...

  7. Linux 文件系统 软/硬链接文件

    文件系统 文件系统就是磁盘上管理文件的系统,一个硬盘有两个分区,一个是swap交换分区,是当内存不够用时将这个分区当做交换内存来使用:一个是filesystem文件系统分区,用来存储管理文件的: 文件 ...

  8. Linux文件系统中的链接

    inode 在讨论Linux系统的链接之前,不得不先说下inode.Linux文件系统中的每一个对象都有唯一的inode索引,每一个inode号和文件系统的一个对象一一对应,要查看文件或目录的inod ...

  9. 认识Linux文件系统inode和查看inode相关信息

    inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 1 inode是什么 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存 ...

最新文章

  1. Camel之AsyncProcessor
  2. deploy service on swarm
  3. VS2010 SQL Server 2005 Database Project 使用笔记(二)
  4. (三十三)设计模式之混合模式
  5. Android 面向切面编程-aspjectj应用
  6. 利用Android Studio快速搭建App
  7. @SuppressWarnings使用的正确姿势
  8. Unity加载机制及内存管理
  9. android按钮_Android按钮
  10. 朝鲜黑掉韩国政府版 Word
  11. 超实用的桌面收纳盒!
  12. 城市空气质量监测系统解决方案
  13. intellij idea 15 万恶的光标跟随
  14. java项目根目录_获取java项目的根目录
  15. 矩形已知三个点的坐标,求第四个点的坐标
  16. 三维计算机动画的特征是真实性,3D动画电影的应用特点及制作管理内容
  17. kali下安装VMware
  18. 【Android】SD卡的安全存储问题
  19. linux系统nc命令使用
  20. Ubuntu 安装出现 error vmlinuz has invalid signature 【或者】 mmx64.efi not found

热门文章

  1. ssm高校专升本考试管理系统 毕业设计-附源码201631
  2. vue使用Ant design的input输入框,去掉边框和获取焦点时的边框
  3. matlab计算单模光纤耦合效率的积分,空间光单模光纤耦合效率因素分析.pdf
  4. Web 安全之 HSTS 详解和使用
  5. 搭建 超级签 详细攻略
  6. J2SE 5.0专题 之 语言特性
  7. PebbleBee Card 防丢卡片,既可充电又支持苹果Find My功能
  8. 一个网络IP地址冲突的问题
  9. 数据库中的windows1.0(最新内存数据库VOLTDB的一些介绍)
  10. 锐捷网络“治愈”江苏省肿瘤医院“移动医疗”网,每年服务13万患者