文件系统笔记ext4 yaffs2 fat ubi

因为是笔记,那就简单的分几个模块简单的记录下学习的内容好了。

Linux 支持几种不同的文件系统。每个文件系统都有自己的优缺点和性能特征。文件系统的一个重要属性是日志,它允许系统在崩溃后更快地恢复。通常,日志文件系统比非日志文件系统更好。ext4和yaffs2是日志类型的文件系统。

日志文件系统就是一种具有故障恢复能力的文件系统,它利用日志来记录尚未提交到文件系统的修改,以防止元数据破坏(请参见图 1)。但是如众多其他 Linux 解决方案一样,日志文件系统有多种方案供您选择。下面就让我们一起简短回顾一下日志文件系统的历史,然后再看一看现行的几种文件系统,看看它们之间有什么区别。

扩展文件系统的简史

第一个受 Linux 支持的文件系统是 Minix 文件系统。这个文件系统有严重的性能问题,因此出现了另一个针对 Linux 的文件系统,即扩展文件系统。第
1 个扩展文件系统(ext1)由 Remy Card 设计,并于 1992 年 4 月引入到 Linux 中。ext1 文件系统是第一个使用虚拟文件系统(VFS)交换的文件系统。虚拟文件系统交换是在 0.96c 内核中实现的,支持的最大文件系统为 2 GB。

第 2 个扩展文件系统(ext2)也是由 Remy Card
实现的,并于 1993 年 1 月引入到 Linux 中。它借鉴了当时文件系统(比如 Berkeley Fast File System [FFS])的先进想法。ext2 支持的最大文件系统为 2TB,但是 2.6 内核将该文件系统支持的最大容量提升到 32TB。


3 个扩展文件系统(ext3)是 Linux 文件系统的重大改进,尽管它在性能方面逊色于某些竞争对手。ext3 文件系统引入了日志 概念,以在系统突然停止时提高文件系统的可靠性。虽然某些文件系统的性能更好(比如
Silicon Graphics 的 XFS 和 IBM? Journaled File System [JFS]),但 ext3 支持从使用 ext2 的系统进行就地(in-place)升级。ext3 由 Stephen Tweedie 实现,并于 2001 年 11 月引入。

今天,我们已经拥有第 4 个扩展文件系统(ext4)。ext4 在性能、伸缩性和可靠性方面进行了大量改进。最值得一提的是,ext4 支持 1 EB 的文件系统。ext4 是由 Theodore Tso(ext3 的维护者)领导的开发团队实现的,并引入到 2.6.19 内核中。目前,它在 2.6.28 内核中已经很稳定(到 2008 年 12 月为止)。

ext4 从竞争对手那里借鉴了许多有用的概念。例如,在 JFS 中已经实现了使用区段(extent)来管理块。另一个与块管理相关的特性(延迟分配)已经在 XFS 和 Sun Microsystems 的 ZFS 中实现。

在 ext4 文件系统中,您可以发现各种改进和创新。这些改进包括新特性(新功能)、伸缩性(打破当前文件系统的限制)和可靠性(应对故障),当然也包括性能的改善。

ext3 分配空间的方式是其主要缺点之一。ext3 使用空闲空间位映射来分配文件,这种方式不是很快,并且伸缩性不强。ext3 的格式对小文件而言是很高效的,但对于大文件则恰恰相反。ext4 使用区段取代 ext3 的机制,从而改善了空间的分配,并且支持更加高效的存储结构。区段 是一种表示一组相邻块的方式。使用区段减少了元数据,因为区段维护关于一组相邻块的存储位置的信息(从而减少了总体元数据存储),而不是一个块的存储位置的信息。

ext4 的区段采用分层的方法高效地表示小文件,并且使用区段树高效地表示大文件。例如,单个 ext4 inode 有足够的空间来引用 4 个区段(每个区段表示一组相邻的块)。对于大文件(包括片段文件),一个 inode 能够引用一个索引节点,而每个索引节点能够引用一个叶节点(引用多个区段)。这种持续的区段树为大文件(尤其是分散的文件)提供丰富的表示方式。这些节点还包含自主检查机制,以阻止文件系统损坏带来威胁。

硬盘分区首先被分为好多个 block。这些 block 聚在一起,被分成几组,也就是 block group。每个 block group 都有一个 group descriptor。所有这些 descriptor 被聚在一起,放在硬盘分区的开头部分,跟在 super block 的后面。从
group descriptor 我们可以通过 block 指针,找到这个 block group 的 inode table 和 block bitmap 等等。从 inode table 里面,我们就可以看到一个个的 inode 了。从一个 inode,我们通过它里面的 block 指针,就可以进而找到存放用户数据的那些 block。我们还要提一下,block 指针不是可以到处乱指的。一个 block group 的 block bitmap 和 inode bitmap 以及 inode table,都依次存放在这个
block group 的开头部分,而那些存放用户数据的 block 就紧跟在它们的后面。一个 block group 结束后,另一个 block group 又跟着开始。

基于NAND 文件系统的坏块管理JFFS2、
YAFFS2、 FlashFx 这些专门针对 NAND 的文件系统可以对坏块进行管理。NAND 管理中间件。有一些中间件(Middleware)专门用于
NAND 管理,比如 UBI。

vfat 文件系统

vfat 文件系统(也称为 FAT32)没有日志功能,且缺乏完整的 Linux 文件系统实现所需的许多特性。它可用于在 Windows 和 Linux 系统之间交换数据,因为 Windows 和 Linux 都能读取它。不要将这个文件系统用于
Linux,除非要在 Windows 和 Linux 之间共享数据。如果您在一个 vfat 磁盘上解压缩一个 Linux 归档文件,那么您将丢失权限(比如执行权限),还会丢失该归档文件中可能存储的符号链接。

时间: 2024-10-02 10:33:11

文件系统笔记ext4 yaffs2 fat ubi的相关文章

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h

Linux下如何选择文件系统:EXT4、Btrfs 和 XFS

老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统.Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是 NTFS 和 HFS+.相反,对于 Linux 系统而言,有很多种文件系统可以选择,现在默认的是广泛采用的 ext4.然而,现在也有改用一种称为 btrfs 文件系统的趋势.那是什么使得 btrfs 更优秀,其它的文件系统又是什么,什么时候我们又能看到 Linux 发行版作出改变呢? 首先让我们对文件系统以及它们真正干什么

20150514我读《深入理解linux内核》之虚拟文件系统笔记

20150514我读<深入理解linux内核>之虚拟文件系统笔记 2015-05-14 Lover雪儿 虚拟文件系统所隐含的思想就是把很多不同种类的文件系统的共同信息放入内核,其中有一个字段或者函数来支持Linux所支持的所有实际文件系统所提供的任何操作.对所调用的每个读.写或者其他函数,内核都能把他们替换成支持本地Linux文件系统.NTFS文件系统,或者文件所在的任何其他文件系统的实际函数. 虚拟文件系统可以称为虚拟文件系统转换,是一个内核软件层,用来处理与Unix标准文件系统相关的所有系

开机流程+文件系统 笔记

1.BIOS:开机主动执行的固件,会认识第一个可开机设备,比如硬盘. 2.MBR:第一个可开机设备的第一个扇区内的主引导分区块,内含引导加载程序. 3.Bootloader:一支可以读取kernel文件来执行的软件. 4.kernel:开始操作OS的功能. BIOS和MBR都是硬件本身支持的功能,至于Bootloader则是操作系统安装在MBR上面的一套软件.MBR仅仅446 字节,因此这个Bootloader是小而完美的. 主要有下面这些功能: 提供菜单:用户可以选择不同的开机选项. 载入ke

btrfs文件系统笔记

发现一篇美文,先贴上链接,后续填坑.https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pconhttp://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon

Linux内核的基本概念

Linux内核学习,推荐的书籍: <linux设备驱动开发详解第二版>.<Linux内核设计与实现第三版>.<嵌入式Linux应用开发完全手册> 第一篇:讲解Linux内核的基础知识,先有一个整体的框架,后续会逐步讲解,一步步深入. 1.物理地址和虚拟地址 地址转换:内核所使用的地址一定是虚拟地址,但是CPU真正最后使用或者访问的是物理地址,所以,必须有一个转换过程.内核的虚拟地址和物理地址之间只是一个差值0xc0000000的区别,所以从物理地址求虚拟地址或从虚拟地址

Linux文件系统与磁盘管理学习笔记

文件系统和磁盘分区 对于一个存储空间来讲,文件系统是独占的,所以要进行分区(每一个分区都可以实现一个文件系统,即每一个分区都是一个独立的文件系统) 每一种文件系统都是工作在内核中的,通过系统调用提供文件的管理功能.所以,同一个操作系统的不同文件系统的系统调用一般是不一致的 Linux操作系统支持N种文件系统,Linux提供一个统一的接口,屏蔽了这些文件系统的差异,而这个接口叫VFS(Virtual File System虚拟文件系统) 文件系统是一种工作在内核中的软件,能够将某个分区中的数据以文

第11章,磁盘存储和文件系统学习笔记

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月24日11:25:33 第11章,磁盘存储和文件系统 本章内容: 磁盘结构 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 LVM快照 设备文件: 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB:   

刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则

从ext3和ext4文件系统来窥探空间和文件大小的演算法则 学习操作系统就不得不研究磁盘以及磁盘文件系统,磁盘是底层物理设备,而文件系统则是管理磁盘的上层工具,文件系统规划了磁盘存放数据的格式,确定了一个操作系统能够支持多大的磁盘空间,每个分区能够支持多大的数据空间,以及每个文件所能支持的大小.通常对系统管理员而言,最需要的知道的就是最大磁盘空间,最大分区空间以及最大文件的大小.本论题只讨论这三种大小到底是怎么算出来的,而不是死记硬背.知道了原理,以后不管遇到什么文件系统,都会有章可循,至少知道