Linux分区类型EXT2、EXT3、EXT4详解
一、EXT2与EXT3
Linux之前缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。这在关键行业的应用是一个致命的弱点.Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。
二、EXT3日志文件系统的特点
1、高可用性
系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
2、数据的完整性
ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,ext3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。
3、文件系统的速度
尽管使用ext3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3比ext2的性能还要好一些。这是因为ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。
4、数据转换
由ext2文件系统转换成ext3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个ext3文件系统提供的小工具tune2fs,它可以将ext2文件系统轻松转换为ext3日志文件系统。另外,ext3文件系统可以不经任何更改,而直接加载成为ext2文件系统。
5、多种日志模式
Ext3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。
三、EXT3的优点
为什么你需要从ext2迁移到ext3呢?以下有四个主要原因:可用性、数据完整性、速度、易于迁移。
1、可用性
在非正常当机后(停电、系统崩溃),只有在通过e2fsck进行一致性校验后,ext2文件系统才能被装载使用。运行e2fsck的时间主要取决于 ext2文件系统的大小。校验稍大一些的文件系统(几十GB)需要很长时间。如果文件系统上的文件数量多,校验的时间则更长。校验几百个GB的文件系统可能需要一个小时或更长。这极大地限制了可用性。相比之下,除非发生硬件故障,即使非正常关机,ext3也不需要文件系统校验。这是因为数据是以文件系统始终保持一致方式写入磁盘的。在非正常关机后,恢复ext3文件系统的时间不依赖于文件系统的大小或文件数量,而依赖于维护一致性所需“日志”的大小。使用缺省日志设置,恢复时间仅需一秒(依赖于硬件速度)。
2、数据完整性
使用ext3文件系统,在非正常关机时,数据完整性能得到可靠的保障。你可以选择数据保护的类型和级别。你可以选择保证文件系统一致,但是允许文件系统上的数据在非正常关机时受损;这是可以在某些状况下提高一些速度(但非所有状况)。你也可以选择保持数据的可靠性与文件系统一致;这意味着在当机后,你不会在新近写入的文件中看到任何数据垃圾。这个保持数据的可靠性与文件系统一致的安全的选择是缺省设置。
3、速度
尽管ext3写入数据的次数多于ext2,但是ext3常常快于ext2(高数据流)。这是因为ext3的日志功能优化硬盘磁头的转动。你可以从3种日志模式中选择1种来优化速度,有选择地牺牲一些数据完整性。
4、易于迁移
你可以不重新格式化硬盘,并且很方便的从ext2迁移至ext3而享受可靠的日志文件系统的好处。对,不需要做长时间的、枯燥的、有可能失误的“备份-重新格式化-恢复”操作,就可以体验ext3的优点。有两种迁移的方法:如果你升级你的系统,Red Hat Linux安装程序会协助迁移。需要你做的工作 就是为每一个文件系统按一下选择按钮。使用tune2fs程序可以为现存的ext2文件系统增加日志功能。如果文件系统在转换的过程已经被装载了(mount),那么在root目录下会出现文件”.journal”;如果文件系统没有被装载,那么文件系统中不会出现该文件。转换文件系统,只需要运行tune2fs –j /dev/hda1(或者你要转换的文件系统所在的任何设备名称),同时把文件/etc/fstab中的ext2修改为ext3。如果你要转换自己的根文件系统,你必须使用initrd引导启动。参照mkinitrd的手册描述运行程序,同时确认自己的LILO或GRUB配置中装载了initrd(如果没有成功,系统仍然能启动,但是根文件系统会以ext2形式装载,而不是ext3,你可以使用命令cat /proc/mounts 来确认这一点。)详情可参看tune2fs命令的man page在线手册(执行man tune2fs)。
总而言之
ext3日志文件系统是目前linux系统由ext2文件系统过度到日志文件系统最为简单的一种选择,实现方式也最为简洁。由于是直接从ext2文件系统发展而来,系统由ext2文件系统过渡到ext3日志文件系统升级过程平滑,可以最大限度地保证系统数据的安全性。目前linux系统要使用日志文件系统,最保险的方式就是选择ext3文件系统。
四、EXT3与EXT4的主要区别
Linux kernel自2.6.28开始正式支持新的文件系统 Ext4。 Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,而不仅仅像Ext3对Ext2那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:
1.与Ext3兼容
执行若干条命令,就能从Ext3在线迁移到Ext4,而无须重新格式化磁盘或重新安装系统。原有Ext3数据结构照样保留,Ext4作用于新数据,当然,整个文件系统因此也就获得了Ext4所支持的更大容量。
2.更大的文件系统和更大的文件
较之Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB 的文件。
3.无限数量的子目录
Ext3目前只支持32,000个子目录,而Ext4支持无限数量的子目录。
4.Extents
Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在Ext3中要建立25,600个数据块(每个数据块大小为 4KB)的映射表。而Ext4引入了现代文件系统中流行的extents概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25,600个数据块中”,提高了不少效率。
5.多块分配
当写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
6.延迟分配
Ext3的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。
7.快速 fsck
以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
8.日志校验
日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4的日志校验功能可以很方便地判断日志数据是否损坏,而且它将Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。
9.“无日志”(No Journaling)模式
日志总归有一些开销,Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
10.在线碎片整理
尽管延迟分配、多块分配和extents能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4支持在线碎片整理,并将提供e4defrag工具进行个别文件或整个文件系统的碎片整理。
11.inode 相关特性
Ext4支持更大的inode,较之Ext3默认的inode大小128字节,Ext4为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或inode版本),默认inode大小为256字节。Ext4 还支持快速扩展属性(fast extended attributes)和inode保留(inodes reservation)。
12.持久预分配(Persistent preallocation)
P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4在文件系统层面实现了持久预分配并提供相应的API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。
13.默认启用 barrier
磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写commit记录,若commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4默认启用barrier,只有当barrier之前的数据全部写入磁盘,才能写barrier之后的数据。(可通过“mount -o barrier=0″命令禁用该特性。)
五、EXT2转EXT3
编辑/etc/fstab。把每一个你想转换成ext3的分区的条目改成类似的内容:
/dev/hdXX /mnt_point ext3 defaults 1 0
在上面的一行中,将 /dev/hdXX 替换成分区,例如 /dev/hda2,把 /mnt_point 替换成你想挂载的位置,例如:/home。最后的 0 保证在启动的时候这个分区不会被chechfs脚本进行一致性检查。若想这个分区肯定可以被挂载然后又不太肯定内核支持ext3的话,可以把ext3换成auto。启动每一个你在 /etc/fstab中改为ext3的分区的日志,运行:tune2fs -j /dev/hdXX 重新挂载分区或者重起系统(如果你重新编译了内核)。
本文出自 “不安分与好奇心” 博客,请务必保留此出处http://linuxnote.blog.51cto.com/9876511/1642241
Linux分区类型EXT2、EXT3、EXT4详解的更多相关文章
- linux分区之ext2,ext3,ext4,gpt
linux分区之ext2,ext3,ext4,gpt 2013-07-10 12:00:24 标签:ext3 gpt 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明 ...
- Linux ext2/ext3文件系统详解
转载: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信 ...
- 调整分区大小(ext2\ext3\ext4)
现在的时间是2017年5月27日 我想说调整分区大小没那么麻烦,至少我直接将一个ext3格式分区从50G减少到了30G. 步骤如下 1 首先确保那个分区是没被挂载的. 2 调整分区大小,但是其实并没有 ...
- 在不损坏数据的情况下调整分区大小(ext2\ext3\ext4)
现在的时间是2017年5月27日 我想说调整分区大小没那么麻烦,至少我直接将一个ext3格式分区从50G减少到了30G. 步骤如下 1 首先确保那个分区是未挂载的. 2 调整分区大小,但是其实并没有实 ...
- Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk
fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...
- 使用 parted 命令可以查看系统采用什么类型的分区表 gpt/mbr/msdos/ext/ext/ext2/ext3/ext4
Linux磁盘表示方式 Linux以字母标识磁盘的个数 a:第一块 b:第二块 Linux用数字标识分区:1-4标识主分区或扩展分区 逻辑分区从5开始 例如:sda.sda1.sda2 低级格式化 ...
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- Linux中/proc目录下文件详解(转贴)
转载:http://www.sudu.cn/info/index.php?op=article&id=302529 Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...
随机推荐
- VS生成垃圾文件清理
@echo Off del /s /a *.txt *.exe *.suo *.ncb *.user *.dll *.pdb *.netmodule *.aps *.ilk 2>nul FOR ...
- 情人节到了,Postman 都脱单了,那你咧?
前言 Postman 是一款API接口调试工具,做过 Web 接口或多或少应该接触过. 通过它可以完成 Http 接口的调试,测试同学也可以基于此做一些自动化测试.另外 Postman 还提供其他高级 ...
- Java集合XMind与注意事项
Java中集合使用时的几个注意事项: 1.ArrayList和HashMap都具有扩容 ArrayList初始化数组长度为10,扩容后的容量为原来的1.5倍. HashMap初始化的数组长度为16,扩 ...
- Go语言实现:【剑指offer】顺时针打印矩阵
该题目来源于牛客网<剑指offer>专题. 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下4 X 4矩阵:1 2 3 4 5 6 7 8 9 10 11 ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第一节:画直线
今天正式开一本新书,<C# GDI+ 破镜之道>,同样是破镜之道系列丛书的一分子. 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子 ...
- GDAL利用地理坐标读取图像像元值
最近的一个项目需要在电子海图中下载已知水深点,导出点的地理坐标(经纬度).然后在arcgis中打开这些地理坐标输出为shp,利用GDAL读取不同波段的点对应的像元值,从而构建水深和像元值的对应关系. ...
- One Stage目标检测
在计算机视觉中,目标检测是一个难题.在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析.如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别.如果该 ...
- 调用winpcap发送路由器公告
#include <stdlib.h> #include <stdio.h> #include <pcap.h> #pragma comment(lib, &quo ...
- drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族
目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...
- matplotlib如何画子图
目录 前言 常用的两种方式 方式一:通过plt的subplot 方式二:通过figure的add_subplot 方式三:通过plt的subplots 如何不规则划分 前言 Matplotlib的可以 ...