[深入理解文件系统之十一] ext2中data和meta-data的数据一致性

ext2中data和meta-data的数据一致性

  • ext2 中的e2fsck

e2fsck是ext2/ext3/ext4的文件系统数据一致性的检查工具。在ext2中,出现下面的三种情况时,有必要进行一致性检查:

a.
not cleanly unmounted;

b.
the maximum mount count has been exceeded;

c.
maximum time between checks has been exceeded.

考虑到文件系统变动带来的兼容性要求,ext2中e2fsck需要支持的三种标志

COMPAT:
on-disk format is 100% compatible with older on-disk formats for
reading and writing

RO_COMPAT:
on-disk format is 100% compatible with older on-disk formats  only
for  reading

INCOMPAT:
the on-disk format has changed in some way that makes it unreadable
by older kernels, or would otherwise cause a problem if an old kernel
tried to mount it。

对e2fsck而言,它需要用比内核更严格的方式来处理上面的flags。如果连e2fsck都不能正确解析上面的任何一个flag,整个文件系统的一致性的检查都不会进行,这是因为e2fsck在此情况下判断当前文件系统给定的特性是否有效。

  • ext2的meta
    data

根据作用的级别不同,ext2保证data和metadata同步写入磁盘可以分为三种方式:

per
file: 打开的时候指定O_SYNC
flag;  (ext2 专有特性)

per
file : chattr +S file_name

per
file-system: mount的时候指定sync选项

  • ext2的局限性

ext2文件系统的局限性一方面来自内核代码的限制,比如在Linux
2.4内核中,一个块设备的最大size是2T。另外一方面,来自于它的block
bitmap/inode bitmap/inode  块/数据块的数据拓扑结构,比如文件大小和文件系统size的限制:

Filesystem
block size:     1kB        2kB        4kB        8kB

File
size limit:          16GB      256GB     2048GB     2048GB

Filesystem
size limit:  2047GB     8192GB    16384GB    32768GB

再如目录中文件数的限制:

There
is an upper limit of 32000 subdirectories in a single directory

另外,受限于目录中文件基于链表的组织形式,建议一个目录中最大允许10-15k
files, 否则会出现严重的性能瓶颈。当然如果改成了基于hash的目录索引的方式,最大支持的文件数目可以达到100k~1M+.

  • ext2中的journal扩展

Stephen
Tweedie为ext2开发了文件系统的journal功能。主要目的是:

1.避免meta-data
corrution;

2.
long time to do e2fsck;

文件系统的Journal只保存meta-data
(data 也可以同时保存)。对于完整的journal
,重放到文件系统中去; 否则,当前incomplete的transaction会被丢弃,这个transaction所代表的对文件系统的修改也会丢失。

参考链接:

References

==========

The
kernel source   file:/usr/src/linux/fs/ext2/

e2fsprogs
(e2fsck)  http://e2fsprogs.sourceforge.net/

Design
& Implementation http://e2fsprogs.sourceforge.net/ext2intro.html

Journaling
(ext3)   ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/

Filesystem
Resizing http://ext2resize.sourceforge.net/

Compression
(*)     http://e2compr.sourceforge.net/

Implementations
for:

Windows
95/98/NT/2000   http://www.chrysocome.net/explore2fs

Windows
95 (*)      http://www.yipton.net/content.html#FSDEXT2

DOS
client (*)    
ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/

OS/2
(+)        ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/

RISC
OS client    
http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/

时间: 2024-08-06 03:46:31

[深入理解文件系统之十一] ext2中data和meta-data的数据一致性的相关文章

[深入理解文件系统之十] ext2中重要的数据结构

如果把文件系统比作一个大楼的话,它的数据布局方式和内部数据结构就是高楼的基础和框架,因此理解了它的数据布局方式和数据结构就能对数据结构有一个整体的认识.ext2作为一个经典的文件系统,不失作为一个号的入口 1. ext2文件系统的数据拓扑结构: 2. ext2重要的数据结构如下 3. ext2 数据结构内部关系 4. Linux  文件系统中的cache: inode cache, Directory cache,buffer cache, 上面这些cache再加上内存里面的 file tabl

[深入理解文件系统之十二] ext3文件系统的挂载选项和journal

作为ext2的改进版本,ext3和ext2文件系统相比,最大的改进就是引入了journal功能,这在既提高了文件系统数据和元数据的一致性,又大大缩短了数据一致性检查和恢复的时间. ext3文件系统的mount 选项 只读模式:ro journal选项: journal=update/inum journal_dev=devmum norecovery/noload:不挂载日志分区,可能会挂载上inconsistent file-system. 数据模式:data=journal/ordered/

计算机底层知识拾遗(四)理解文件系统

操作系统的很多核心组件都是相互关联的,比如虚拟内存管理,物理内存管理,文件系统,缓存系统,IO,设备管理等等,都要放在一起来看才能从整体上理解各个模块到底是如何交互和工作的.这个系列的目的也就是从整体上来理解计算机底层硬件和操作系统的一些重要的组件是如何工作的,从而来指导应用层的开发.这篇讲讲文件系统的重要概念,为后面的IO系统做铺垫. 文件系统主要有三类 1. 位于磁盘的文件系统,在物理磁盘上存储文件,比如NTFS, FAT, ext3, ext4 2. 虚拟文件系统,在内核中生成,没有物理的

谁人能理解这三句对话中的心酸啊?!

问一神棍:“我什么时候才能不做程序猿?” 神棍掐指一算,答:”等你躺进棺材的时候.“ 我一把拉住神棍的双手,内牛满面的说:“大哥,谢谢噢,想不到我还能躺在棺材里,谢谢噢.” 这三句纯粹是我个人胡扯,不过说的也是真心话.别看貌似很搞笑,其实内里有很多心酸故事. 程序员?美其名曰软件工程师,其实腻,天朝下的程序员,小部分可称为码农(相对来说有点技术含量的),大部分可称为代码搬运工(每天就是 ctl+c / ctl+v  含金量几乎为0),只有大海捞针数量级的码神存在. 所以,福利待遇,薪金制度比“机

Data Provider 中没有.net framework Data provider for Mysql 的解决方法

近来做的一个项目中,数据库用的是 MySql, 而在项目使用 Entity Data Model 来做数据服务层,可是在项目中添加 Data Entty Model 时,一般我们都会选择从数据库中直接生成,可是在选择Data Provider 时,就是没有 .net framework  Data provider for Mysql, 里面默认就只有一个 .net framework Data provider for SQL Server , 这个只能与 Microsoft 的 SQL se

关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position:absolut; 1.相对定位(div与div之间的关系)        body 标签其实就是一个大的盒子,在body里面设置 两个盒子div1 和 div2 ,而且两个盒子都给了它一个相对定位:position:relative;,那么div2 就会相对于 div1 排版,排在div1的下面,

第5章分布式系统模式 在 .NET 中使用 DataSet 实现 Data Transfer Object

要在 .NET Framework 中实现分布式应用程序.客户端应用程序需要显示一个窗体,该窗体要求对 ASP.NET Web Service 进行多个调用以满足单个用户请求.基于性能方面的考虑,我们发现,进行多个调用会降低应用程序性能.为了提高性能,需要通过对 Web Service 进行一次调用就能检索到用户请求所需的所有数据. 背景信息 注意:以下是在 .NET 中使用类型化 DataSet 实现 Data Transfer Object 中所描述的同一个示例应用程序. 下面是一个简化的

ios--->OC中Protocol理解及在代理模式中的使用

OC中Protocol理解及在代理模式中的使用 Protocol基本概念 Protocol翻译过来, 叫做"协议",其作用就是用来声明一些方法: Protocol(协议)的作用 定义一套公用的接口(Public) @required:必须实现的方法,默认在@protocol里的方法都要求实现. @optional:可选实现的方法(可以全部都不实现) 委托代理(Delegate)传值 它本身是一个设计模式,它的意思是委托别人去做某事. 比如:两个类之间的传值,类A调用类B的方法,类B在执

对宏观的力学中连续介质假设的理解,以及对流体力学中平均速度的理解,以及流体与固体在力学上的本质区别

对宏观的力学中连续介质假设的理解:宏观的力学(如流体力学.弹塑性力学等)研究的对象是大量分子的集合,这时候每个集合构成一个个小微元体,整个对象就是由这无数个小微元体连续无间隙地构成.因为我们只需要关注每个集合上对象的性质,如密度.速度.应力.形变等,不需要进入集合内部去探寻分子间的作用力,所以每一个集合都可以看作是连续无间隙的,这样反映出的宏观性质与真实物体的宏观性质是一样的.只不过做数值积分或划分网格时dx.dy.dz等空间尺寸的自变量微分应当远大于该物质的分子平均自由行程,否则集合中的物理性