1 磁盘组成与分区

1.1 磁盘物理组成

(1)圆形盘片—记录数据
(2)机械手臂及磁头—读写盘片数据
(3)主轴马达—使得机械手臂成功读写数据驱动

1.2 盘片物理组成

(1)扇区—最小物理存储单位,512bytes
(2)柱面—扇区组成的圆,分区的最小单位
(3)第一扇区—最重要的扇区,包含主引导记录MBR446bytes 以及 分区表PB 64bytes

1.3 磁盘接口在Linux中文件名

(1)/dev/sd[a-p][1-15]  为 SCSI 、 SATA 、 USB 、 Flash等接口的磁盘文件名
(2)/dev/hd[a-d][a-63]  为IDE接口的磁盘文件名

2 文件系统特性

2.1 不同操作系统使用的文件系统

(1)传统Windows98及以前的操作系统主要利用的文件系统为FAT或FAT16
(2)Windows2000及以后的操作系统主要利用NTFS为其文件系统
(3)Linux操作系统的正规文件系统均为EXT2 或 EXT3 为其文件系统

2.2 文件系统的存储块

        通常,文件系统一般有三个存储块:
(1)super block : 超级块,用来存储文件系统的整体信息,包括其余两块innode 及 block的总量、使用量、剩余量以及文件系统的格式和文件信息
(2)innode:主要记录文件的属性信息,一个文件会占用一个innode块,同时记录该文件实际数据所在的block的编号
(3)block:主要记录文件的实际数据,根据实际情况可能占用一个或多个block存储

2.3 不同文件系统的数据访问方式

(1)索引式文件系统
        此类文件系统的innode块内存储文件实际数据所在的所有block的编号,此时,操作系统可以由此从开始就读取出文件数据所在的全部block。Linux的EXT2 、 EXT3都是这类文件系统;索引式文件系统的优点:它基本上不需要进行碎片整理,因为其文件写入的block不至于过于离散。
结构如下图:

(2)FAT文件系统
        此类文件系统没有innode块的存在,因此也就不存在一开始就读取文件实际数据的所有block。这种文件系统,通常都是一个block内存储要访问的下一block的编号,该存储方式容易造成文件数据block的过于离散。所以说,FAT的文件系统需要经常进行碎片整理,来保证其性能。我们通常使用的U盘一般是采用的FAT文件系统。
结构如下图:


3 Linux的EXT2文件系统

3.1 EXT2 存储块详解

        对于Linux的EXT2以及EXT3文件系统,有3个存储块,super block 、 innode以及block ,文件系统一开始就把innode和block规划好了,除非重新格式化或者利用resize2fs等命令更改,否则这两部分便不再进行改动。
(1)data block
data block是用来存储文件数据的块,EXT2文件系统中支持的block大小有1KB、2KB和4KB三种而已。
data block的大小在文件系统开始就已经初始化完毕,且不再改变。
一个block最多只能存储一个文件的数据,一个文件的数据根据实际内容量可以存储在多个block中。
对于小于block大小的文件来讲,在block中剩余的容量则不能再被其他文件占用,此时造成一定程度的磁盘空间浪费。
(2)innode block
innode主要记录文件的属性以及该文件实际数据存储在block的编号。
具体来讲,innode block中存储的内容有:
该文件的访问模式;
该文件大小;
该文件的所有者与组;
该文件创建状态改变的时间;
最近修改的时间;
定义文件特性的标志,如SetUID等;
该文件真正内容的指向;
innode block的大小也在文件系统格式化时已经确定,每个block的大小均固定为128bytes,每个文件只会占用一个innode block。
文件系统能够创建的文件数量与innode的数量有关。
系统读取文件时,先找到innode,分析权限,符合要求则读取block的内容。
innode block与文件大小密切相关,由于innode大小有限,只有128bytes的容量,记录一个block号码占用4bytes,而对于大文件则需要非常多的block来存储数据,block的数量远远超出了innode块可存储的容量。为此,文件系统采用多级存储结构,有12个直接,1个间接,一个双间接,一个三间接记录区,这样就满足了大文件的繁多block号的记录。
innode多级结构如下图:

        那么,这样的存储结构可以指定多少个block呢?以较小的1KB的block来讲:
12个直接指向,12*1K=12K , 直接指向可以记录12条;
间接指向,256*1K=256K,每条block号码的记录需要4bytes,因此1K大小可以记录256条;
双间接,256*256*1K,第一层指定256个记录,每个第二层指定256条;
三间接,256*256*256*1K , 第一层指定256个记录,每个第二层指定256条,每个第三层也指定256条记录;
总量,12+256+256*256+256*256*256(K)=16GB
此时,我们可以知道,文件系统将block划分为1KB时,能够容纳的最大文件为16GB,与文件限制表结果一致。但是这个方法不适用与block大小为2KB或者4KB时,因为大于2KB的block将会受到EXT2文件系统本身的限制,计算结果与限制表产生出入。

(3)super block
        此块记录整个文件系统相关信息的地方,记录信息主要有:
block与innode的总量;
未使用和已使用的innode/block的数量;
block和innode的大小;
文件系统挂载时间、最近一次写入数据的时间、最近一次检验磁盘时间等;
一个validbit数值,挂载值为0,未挂载值为1;

3.2 EXT2文件系统与目录树的关系

3.3 EXT2与EXT3文件系统访问与日志文件系统

3.4 文件系统操作及挂载点

3.5 其他Linux文件系统

        以上几节内容理论性强,通读《鸟哥的Linux私房菜—基础学习篇》P204-209了解即可。

Linux磁盘与文件系统管理 之 认识EXT2系统的更多相关文章

  1. Linux磁盘与文件系统管理笔记

    ### Linux磁盘与文件系统管理 linux 最传统的文件系统格式是EXT2,centos7 默认文件系统是xfs(日志式文件系统) 磁盘的组成: 盘片 机械手臂 主轴马达 (机械硬盘) 磁盘格式 ...

  2. Linux学习笔记—Linux磁盘与文件系统管理(转载)

    认识EXT2文件系统 文件的系统特性 Linux的正规文件系统为Ext2 文件数据除了文件实际内容外,还包括其他属性(文件权限.文件属性). 文件系统将这两部分数据分别存放在不同的块,权限和属性放在i ...

  3. Linux学习笔记之Linux磁盘及文件系统管理笔记

    Linux磁盘及文件系统管理 CPU,memory(RAM),I/O i/o: disks,ehtercard disks:持久存储数据 接口类型: IDE(ata): 并口,133MB/s;并行总线 ...

  4. Linux磁盘与文件系统管理概要

    Linux磁盘与文件系统管理 硬盘组成与分区 硬盘组成 圆形的盘片(主要记录数据) 机械手臂与磁头(可读取盘片上的数据) 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据 扇区(Sector)为最 ...

  5. 鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)

    本文总结了Linux操作系统来管理我们的硬盘和文件系统需要使用命令.当我们在系统中增加一个硬盘驱动器.什么是我们需要去通过这个硬盘就可以真正使用步骤?下面步骤: (1)对磁盘进行分区,新建能够使用的分 ...

  6. Linux磁盘及文件系统管理

    在LINUX中我们知道一个很重要的概念,那就是"一切皆文件",这里的一切表示所有在LINUX系统的对象,自然也包括了LINUX中的硬盘设备.在LINUX中所有设备都被抽象成一个文件 ...

  7. Linux入门-3 Linux磁盘及文件系统管理

    1. 磁盘基本概念 1.1 磁盘结构:盘片(单碟vs多碟).磁头(读写数据) 1.2 磁盘在Linux中的表示 1.3 分区概念 2 使用fdisk进行磁盘管理 3 Linux文件系统 mke2fs ...

  8. Linux 磁盘与文件系统管理

    介绍一本书叫<Linux 鸟哥私房菜>, 一本教人用linux很经典的一本书,这两天又看了里面的一章节,做一点笔记.有一些很细节的东西的, 在平时运用过很容易被忽略. 1)U盘使用的文件格 ...

  9. 第八章、Linux 磁盘与文件系统管理

    认识 EXT2 文件系统 Linux最传统的磁盘文件系统(filesystem)使用的是EXT2这个啦!所以要了解文件系统就得要由认识EXT2开始! 而文件系统是创建在硬盘上面的,因此我们得了解硬盘的 ...

随机推荐

  1. B.选点

    链接:https://ac.nowcoder.com/acm/contest/368/B 题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于任意一棵子树,都 ...

  2. Java EE学习笔记(一)

    spring入门程序: 1.导入Spring的4个基础包以及commons-logging的JAR包复制到lib目录中 2.src->com.itheima.ioc包下: ①UserDao.ja ...

  3. Unity里面两种单例模式的实现

    using System; public class Singleton<T> where T : class, new() { private static T m_instance; ...

  4. YDKJ 读书笔记 01 Function vs. Block Scope

    Introduction 本系列文章为You Don't Know JS的读书笔记. 书籍地址:https://github.com/getify/You-Dont-Know-JS Scope Fro ...

  5. 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比

    HashMap,ArrayMap,SparseArray源码分析及性能对比 jjlanbupt 关注 2016.06.03 20:19* 字数 2165 阅读 7967评论 13喜欢 43 Array ...

  6. Webservice相关的知识

    一.利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务 1.首先建立一个Web services EndPoint: package Hello; import ...

  7. Objective-C Data Encapsulation

    All Objective-C programs are composed of the following two fundamental elements: Program statements ...

  8. input禁止显示用户输入历史记录

    input标签中加上属性autocomplete="off"

  9. {ubuntu}不能挂载windows

    sudo apt-get install ntfs-3g sudo ntfsfix /dev/sda?

  10. Spring Boot: Spring Starter Project

    好久没有创建过新项目,楼主发现Spring Boot项目创建失败了!!! 其中有两处错误: [图一不知道是哪里错,果断删掉重输入一次.成功进入下一步  其余步骤也没有错误,然而  最后一步失败了,如图 ...