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. Python 数字模块

    Python中的数字模块 math模块 random模块 Decimal模块 - 没有损失的小数 Fraction模块 - 可以计算分数

  2. CF #541div2 F

    题目本质:并查集的链式合并 解决方法1: 类似哈夫曼树,叶节点们为真点,其余造一些虚的父节点,使得dfs这棵树的时候,先进行并查合并的点一定是兄弟节点因而紧挨着被输出,巧妙达到了效果. #pragma ...

  3. a标签中href=""的几种用法

    http://blog.csdn.net/u010297791/article/details/52784879 这是分页上的 <?php function pages($page,$e_pag ...

  4. python学习之列表元组,字典

    list:元素性质可以不一致,元素还可以是list,可类似数组方法进行索引(也可以用负数索引,-1表示最后一个),可用.append('')进行动态增加,可用pop()删除最后一个或者pop(i)删除 ...

  5. C. Anton and Making Potions 贪心 + 二分

    http://codeforces.com/contest/734/problem/C 因为有两种操作,那么可以这样考虑, 1.都不执行,就是开始的答案是n * x 2.先执行第一个操作,然后就会得到 ...

  6. Linux下自动化测试环境的搭建

    1.安装Linux虚拟机,详情参考  https://blog.csdn.net/qq_22770715/article/details/78558374     https://www.cnblog ...

  7. JSP文件上传,好烦啊、、

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. VS2015 VB.Net利用QrCodeNet生成QR Code

    Step by step Create QR Code with QrCodeNet Step.1 新建項目 Step.2 下載QrCodeNet代碼,解壓\QrCodeNet\sourceCode\ ...

  9. MVC系列学习(十六)-区域的学习

    1.查找控制器的过程 1.1调用其他项目中的控制器 a.先到网站根目录下的bin文件夹下,遍历所有的程序集 b.找到以Controller结尾的类 c.再找出其中继承了Controller的类 d.接 ...

  10. 在腾讯云centOs系统上安装nginx

    1.安装nginx 下载:wget http://nginx.org/download/nginx-1.8.1.tar.gz 解压:tar -zxvf nginx-1.8.1.tar.gz 安装编译源 ...