首页 > 编程知识 正文

ntfs转ext4,文件系统ext4

时间:2023-05-03 08:48:10 阅读:112688 作者:4816

ext2与ext3

Linux ext2/ext3文件系统使用索引节点记录文件信息,其作用类似于windows文件分配表。 索引节点是一个包含文件长度、创建和修改时间、权限、隶属关系和磁盘位置等信息的结构。 文件系统维护索引节点的数组,每个文件或目录对应于索引节点数组中的唯一元素。 每个索引节点都被分配一个编号。 也就是说,数组中该节点的索引号称为索引节点号。 linux文件系统将文件索引节点编号和文件名同时保存在目录中。 因此,目录是一个由文件名称及其索引节点编号组合而成的表,目录中每一对的文件名和索引节点称为一个连接。 一个文件可以有唯一的索引节点编号,一个索引节点编号可以有多个文件名。 因此,磁盘上的同一文件可以从不同的路径访问。

Linux之前的默认情况下使用的文件系统是Ext2,Ext2文件系统确实高效且稳定。 但是,随着Linux系统用于关键业务,Linux文件系统的弱点也逐渐暴露出来。 其中,系统默认使用的ext2文件系统是非日志文件系统。 这在重要行业的应用是致命的弱点。 本文介绍了在Linux上使用ext3日志文件系统的APP应用程序。

Ext3文件系统直接从Ext2文件系统发展而来,目前Ext3文件系统非常稳定可靠。 与ext2文件系统完全兼容。 用户可以顺利迁移到具有良好日志记录功能的文件系统。 这也是ext3日志文件系统初始设计的初衷。

Ext3日志文件系统的特点1,高可用性

如果系统使用ext3文件系统,则即使未成功关闭,也无需检查文件系统。 发生停机后,恢复ext3文件系统的时间只有几十秒。

2、数据完整性:

ext3文件系统大大提高了文件系统的完整性,并避免了意外停机导致的文件系统损坏。 在确保数据完整性方面,ext3文件系统有两种模式。 其中之一是“同时维护文件系统和数据的一致性”模式。 这种方法不会看到由于未成功关闭而存储在磁盘上的垃圾文件。

3、文件系统速度:

使用ext3文件系统,在存储数据时可能需要多次写入数据,但总体而言,ext3比ext2性能更高。 这是因为ext3的日志记录功能优化了磁盘驱动器的读写磁头。 因此,与Ext2文件系统相比,文件系统的读写性能没有下降。

4、数据转换

从ext2文件系统转换到ext3文件系统非常简单,只需输入两个命令即可完成整个转换过程,用户无需花时间备份、恢复或格式化分区。 使用ext3文件系统提供的小工具tune2fs,可以轻松将ext2文件系统转换为ext3日志文件系统。 另外,ext3文件系统可以不做任何变更,直接加载成为ext2文件系统。

5 .多个日志模式

Ext3有各种各样的记录模式,一种动作模式是记录所有的文件数据和metadata (定义文件系统内的数据的数据,即数据的数据) (data=journal模式); 另一种操作模式是所谓的data=ordered或data=writeback模式,其中只记录元数据,不记录数据。 系统管理员可以根据系统的实际运行要求选择系统的运行速度和文件数据的完整性。

实际使用Ext3文件系统

创建新的ext3文件系统。 例如,要将磁盘上的hda8分区格式化为ext3文件系统并记录在/dev/hda1分区中,请执行以下步骤:

[ root @ stationxxroot ] # mke2fs-j/dev/HD A8

me2fs1.24a(02-sep-2001 ) )。

文件系统标签=

操作系统类型: Linux

blocksize=1024(log=0) ) ) ) ) ) ) )。

.

创建日记帐(8192块) : done

writingsuperblocksandfilesystemaccountinginformation : done

thisfilesystemwillbeautomaticallycheckedevery 30 mounts or

180 days,whichevercomesfirst.use tune2fs-cor-ITO override。

创建新的文件系统后,可以看到ext3文件系统每180天或第31次装载自动发现的时间。 实际上,这个参数可以根据需要自由调整。

在主分区/data目录下的:上挂载以下新文件系统

[ root @ stionxxroot ] # mount-text3/dev/HD A8/data

说明:已将格式化为ext3文件系统的/dev/hda8分区加载到/data目录中。

ext3基于ext2的代码,磁盘格式与ext2相同。 这意味着,可以将干净安装的ext3文件系统重新安装为ext2文件系统。 Ext3文件系统仍然可以作为ext2文件系统加载和使用,并且可以在Ext3和ext2之间自由切换单个文件系统。 此时,在ext2文件系统中

统上的ext3日志文件仍然存在,只是ext2不能认出日志而已。

以转换文件系统为例,将ext2文件系统转换为ext3文件系统,命令如下:
[root@stationxx root]# tune2fs -j /dev/hda9
tune2fs 1.24a (02-Sep-2001)
Creating journal inode: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
这样,原来的ext2文件系统就转换成了ext3文件系统。注意将ext2文件系统转换为ext3文件系统时,不必要将分区缷载下来转换。
转换完成后,不要忘记将/etc/fstab文件中所对应分区的文件系统由原来的ext2更改为ext3。

ext3日志的存放位置
可以将日志放置在另外一个存储设备上,例如存放到分区/dev/hda8。例如要在/dev/hda8上创建一个ext3文件系统,并将日志存放在外部设备/dev/hda2上,则运行以下命令:
[root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2
ext3文件系统修复
新的e2fsprogs中的e2fsck支持ext3文件系统。当一个ext3文件系统被破坏时,先卸载该设备,在用e2fsck修复:
[root @stationxx root] # umount /dev/hda8
[root @stationxx root] #e2fsck -fy /dev/hda8

 

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文件系统。

 


最新的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" 命令禁用该特性。)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。