深入理解Linux内核-Ext2和Ext3文件系统
Ext2的一般特征:
1、创建Ext2文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳块大小(从1024B~4096B)。来减少文件碎片
2、创建Ext2文件系统时,系统管理员可以根据在给定大小的分区上预计存放的文件树来选择给该区分配多少个索引节点。更加有效的利用磁盘空间
3、文件系统将磁盘分组,每组包含存放在相邻磁道上的索引节点和数据块。对单独块组中的文件访问的时候可以减少磁盘的平均寻道时间。
4、磁盘数据块被使用之前,就被系统预分配给普通文件,当文件增大时,因为物理上的相邻块已经被保留,这就减少了文件的碎片。
5、支持快速符号链接。 Ext2的一些健壮灵活的特点:
1、给文件创建新的硬链接时,先在索引节点中增加硬链接计数器,然后把新名字加到指定目录下。这样虽然在删除文件后,导致文件不会被自动回收。但是相比反过来,先添加到目录,后加索引计数器,在删除原文件后,导致新增硬链接指向错误的数据块,更是一场灾难。
2、在启动时支持对文件系统的状态进行自动的一致性检查。由外部程序e2fsck完成。可以再系统崩溃之后激活,也可以在预订的安装次数、或者预定义的时间激活。
3、支持不可变的文件
4、兼容Unix System V Release (SVR4, 新文件的用户组ID的BSD语义相兼容 Ext2需要的特性:
1、块片:
系统管理员对磁盘的访问通常选择较大的块,因为计算机通常处理大文件。因此导致大的块存放小文件会浪费很多磁盘空间。为解决这个问题,将几个不同文件放在同一个块点不同片上来解决。 2、透明地处理压缩和加密文件:
这些新的选项将允许用户透明地在磁盘上存放压缩和加密的文件版本。 3、逻辑删除:
一个undelete选项将允许用户在必要的时候很容易恢复以前已经删除的内容 4、日志:
日志避免文件系统在被突然卸载时对其进行自动的耗时检查。 Ext2的数据结构:
1、第一个块不受Ext2文件系统的管理,保留下来作为分区引导扇区。
2、其余的分为块组,大小相等,顺序排列
3、块组的多少,取决于分区的大小和块的大小。限制在于块位图
4、块位图必须放在一个单独的块中。用来标记组中块的空闲和占用情况,所以每个组中可以有8*b个块,b是块的字节数(1024~4096)。 超级块:
组描述符和位图:
1、块大小为1024、2048、4096字节,因此一个单独的位图描述8192、16384、32768个块的状态。 索引节点表:
1、由一连串连续的块组成,每一个块包含索引节点的一个预定义号。
2、索引节点大小相同,128个字节。
3、128个字节,限制了索引节点的扩展。256个字节又太浪费,故提出了增强属性的概念。 访问控制列表:
1、限制了每个文件可以访问用户(用户组)名称以及权限 创建Ext2文件系统:
1、格式化磁盘,以使磁盘驱动程序可以读和写磁盘上的块。
2、创建文件系统。 Ext3文件系统
1、添加了日志功能
深入理解Linux内核-Ext2和Ext3文件系统的更多相关文章
- 在Linux环境中使用Ext3文件系统
Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统 ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- 【读书笔记::深入理解linux内核】内存寻址
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...
- linux 内核移植和根文件系统的制作【转载】
原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...
- linux 内核移植和根文件系统的制作
1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1 Linux版本 Linux内核的版本号 ...
- 深入理解Linux内核-虚拟文件系统
Linux 成功的关键之一是它具有和其他操作系统和谐共存的能力 5个标准文件类型:1.普通文件2.目录文件3.符号链接文件4.设备文件5.管道文件 虚拟文件系统(Virtual FileSystem) ...
- Linux内核启动及根文件系统载入过程
上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-bo ...
随机推荐
- Xamarin.Android其他类型的服务
一.前言 前面我们已经学了关于服务的很多知识,但是对于真实的开发那些远远不够,通过这节我们将学习其他类型的服务,比如前台服务.IntentService和消息服务.下面我们开始进入正题. 二.前台服务 ...
- python之模块配置文件ConfigParser(在python3中变化较大)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ConfigParser(在python3中为configparser) #特别注意:py ...
- OSWorkFlow 学习
1.OSWorkFlow基本概念 在商用和开源世界里,OSWorkflow 都不同于这些已有的工作流系统.最大不同在于 OSWorkflow 有着非常优秀的灵活性.在开始 接触 OSWorkflow ...
- windows7下安装apache+PHP5.3
Apache+PHP 安装与配置 最近在学习PHP,所以就在windows7下安装了PHP的开发环境.之所以没有选择集成的软件,如WAMP.AppServ等套件,是为了单独安装这些软件,有助于更加深入 ...
- yum安装nodejs 8
Install Node.js 8 on Enterprise Linux Distributions To install Node.js 8 on Enterprise Linux distros ...
- ios中键盘处理源码
1:先分别设置各个文本框的键盘类型(inputview)-->在特定键盘中textediting中禁用输入. 2:然后递归绑定各个键盘的工具条(inputaccessview).并且个各个控 ...
- Android启动过程深入解析
本文由 伯乐在线 - 云海之巅 翻译.未经许可,禁止转载!英文出处:kpbird.欢迎加入翻译小组. 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Li ...
- PHP中使用 JKS(Java Key Store)的方法
PHP语言无法直接读取 JKS中的密钥,需要通过以下方法进行转换 本例以JKS中的私钥为例 首先 使用 KeyStore Explorer工具,打开JKS文件 ,此时可能需要输入 JKS密码 对私钥进 ...
- Centos 安装 GitLab 8.5.1 版本管理
GitLab版本管理 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能 ...
- block(九)Block 和 Delegate 的使用比较
Block 和 Delegate中的方法都可以理解成回调函数,当某件事情发生的时候取执行一段代码片段 Block(代码块) 优点:是一种轻量级的回调,能够直接访问上下文,使用块的地方和块的实现地方在同 ...