Ext4功能和文件系统的简单功能

Linux kernel 自 2.6.28 開始正式支持新的文件系统 Ext4。

Ext4 是 Ext3 的改进版,改动了 Ext3 中部分重要的数据结构,而不只像 Ext3 对 Ext2 那样,不过添加了一个日志功能而已。Ext4 能够提供更佳的性能和可靠性,还有更为丰富的功能:

/. 与 Ext3 兼容。 运行若干条命令,就能从
Ext3 在线迁移到 Ext4。而无须又一次格式化磁盘或又一次安装系统。

原有 Ext3 数据结构照样保留。Ext4 作用于新数据,当然。整个文件系统因此也就获得了 Ext4 所支持的更大容量。

/. 更大的文件系统和更大的文件。 较之
Ext3 眼下所支持的最大 16TB 文件系统和最大 2TB 文件。Ext4 分别支持 1EB(1,048,576TB。 1EB=1024PB, 1PB=1024TB)的文件系统。以及 16TB 的文件。

/. 无限数量的子文件夹。

 Ext3
眼下仅仅支持 32,000 个子文件夹,而 Ext4 支持无限数量的子文件夹。

/. Extents。

 Ext3
採用间接块映射。当操作大文件时,效率极其低下。比方一个 100MB 大小的文件。在 Ext3 中要建立 25,600 个数据块(每一个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每一个 extent 为一组连续的数据块。上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

/. 多块分配。

 当 写入数据到
Ext3 文件系统中时。Ext3 的数据块分配器每次仅仅能分配一个 4KB 的块。写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

/. 延迟分配。

 Ext3
的数据块分配策略是尽快分配。而 Ext4 和其他现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才開始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来能够显著提升性能。

/. 高速 fsck。

 曾经运行
fsck 第一步就会非常慢,由于它要检查全部的 inode。如今 Ext4 给每一个组的 inode 表中都加入了一份未使用 inode 的列表。今后 fsck Ext4 文件系统就能够跳过它们而仅仅去检查那些在用的 inode 了。

/. 日志校验。 日志是最经常使用的部分,也极易导致磁盘硬件故障。而从损坏的日志中恢复数据会导致很多其它的数据损坏。

Ext4
的日志校验功能能够非常方便地推断日志数据是否损坏,并且它将 Ext3 的两阶段日志机制合并成一个阶段。在添加安全性的同一时候提高了性能。

/. “无日志”(No Journaling)模式。 日志总归有一些开销。Ext4
同意关闭日志,以便某些有特殊需求的用户能够借此提升性能。

/. 在线碎片整理。 虽然延迟分配、多块分配和
extents 能有效降低文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。

/. inode 相关特性。

 Ext4
支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节。Ext4 为了在 inode 中容纳很多其它的扩展属性(如纳秒时间戳或 inode 版本号)。默认 inode 大小为 256 字节。

Ext4 还支持高速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。

/. 持久预分配(Persistent preallocation)。

 P2P
软件为了保证下载文件有足够的空间存放,经常会预先创建一个与所下载文件大小同样的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供对应的 API(libc 中的 posix_fallocate())。比应用软件自己实现更有效率。

/. 默认启用 barrier。

 磁
盘上配有内部缓存,以便又一次调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写来写磁盘的能力后, commit 记录,如果 commit 记录书面。日志可能会被损坏,它会影响数据的完整性。Ext4 默认情况下启用 barrier,目前,只有当 barrier 所有的数据被写入磁盘之前,笔头 barrier 数据之后,通过 "mount -o barrier=0" 命令禁用此功能。

时间: 2024-08-26 21:05:29

Ext4功能和文件系统的简单功能的相关文章

12月4号 从上至下(不用函数功能)实现atm简单功能

#include <stdio.h> #include <stdlib.h> int main(int argc, const char * argv[]) { char operation; int totalMoney = 10000; int password = 123456; while (1) { //提示用户相应操作 printf("************************\n"); printf("1.输入密码\n2.存款\n3

EXT4文件系统禁用日志功能

ext4提供有很多特性,当然有一些是前一代文件系统ext3本身就具有的,比如日志功能,但有时候我们却并不需要这些特性,则我们可以禁用它们.ext4文件系统的日志功能就是在牺牲一定性能的情况下增强稳定性的一种手段,但在一些情况,比如Web Server上存在的大量小文件所在的文件系统就是一个典型示例,此时可以禁用ext4的日志功能. 关闭EXT4日志功能: [[email protected] ext4]# tune2fs -O ^has_journal /dev/sdd1 tune2fs 1.4

C++学习之电话薄功能(类的简单应用)

本篇我们讨论一个小程序:实现电话薄简单功能.(一条语句最好一个作用) 问题描述 : a) : 实现电话添加记录功能:(电话重复的视为同一人,不予增添):即电话号码唯一. b) : 删除记录功能:(实现提醒功能:确认是否要真的删除) c) : 查询记录功能:(按手机号码查询); 待优化功能: 1) :每次启动程序都为空.故可以先从文件读取若干项至vector中:readfile功能. 2) :没有提供修改记录的功能:比如某人的电话号码或者住址改了.(先按照号码查询,然后按要求修改之即可.): 3)

关于QQ空间相册功能的构想与简单实现

QQ空间上传照片对其可以分类,形成不同的相册,这对于用户体验来说是很不错的,如果用户只能上传不加以分类,那么用户体验会很差. 下面是自己关于相册功能实现的一些简单看法: 首先,是创建相册,可以用panel将控件隐藏,给用户更好体验. <asp:Button ID="creatphoto" runat="server" OnClick="creatphoto_Click" Text="创建相册" /> <asp

JavaScript基础--简单功能的计算器(十一)

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

学习SSH时的练习demo,实现分页和登录等简单功能

原文:学习SSH时的练习demo,实现分页和登录等简单功能 源代码下载地址:http://www.zuidaima.com/share/1550463779310592.htm 学习SSH时的练习demo,实现分页和登录等简单功能,适合初学者来练习使用..

配置简单功能强大的excel工具类搞定excel导入导出工具类(一)

对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象. 请看一下这个类都有哪些功能:????? 1.实体属性配置了注解就能导出到excel中,每个属性都对应一列.????? 2.列名称可以通过注解配置.????? 3.导出到哪一列可以通过注解配置.????? 4.鼠标移动到该列时提示信息可以通过注解配置.????? 5.用注解设置只能下拉选择不能随意填写功能.???? ? 6.用注解设置

Android仿iPhone晃动撤销输入功能(微信摇一摇功能)

重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内容,很多手机需要一直按住退格键逐字逐句的删除,稍稍麻烦,不过 在iPhone上,有个人性化的功能,当我们想要去撤销刚刚输入的所有内容的时候,可以轻轻晃动手机,会弹出提示框,点击确定就可以清空内容,如下图: 在 android中,一般手机貌似没有定制这个功能,不过我们可以自己去实现这样的功能,放置在我

根文件系统的简单定制

1)关闭selinux修改文件/etc/selinux/configSELINUX=disabled2)关闭防火墙chkconfig iptables off关闭虚拟机防火墙: 关闭命令:  service iptables stop 永久关闭防火墙:chkconfig iptables offservice iptables stop3)设置密码passwd root+ <<EOFavt123456avt123456EOF4)启动sshdservice sshd start 根文件系统的简单