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" 命令禁用此功能。
Ext4功能和文件系统的简单功能的更多相关文章
- 【 VS 插件开发 】三、Vs插件简单功能的实现
[ VS 插件开发 ]三.Vs插件简单功能的实现
- 关于QQ空间相册功能的构想与简单实现
QQ空间上传照片对其可以分类,形成不同的相册,这对于用户体验来说是很不错的,如果用户只能上传不加以分类,那么用户体验会很差. 下面是自己关于相册功能实现的一些简单看法: 首先,是创建相册,可以用pan ...
- 学生与部门管理app-产品功能与界面的简单设计
学生与部门管理app-产品功能与界面的简单设计 1. 结对成员学号 我:********* 大佬:*******10 2. 需求分析(NABCD模型) 2.1 N-需求 各个部门在开学初占据学校青春广 ...
- Android一键换肤功能:一种简单的实现
Android一键换肤功能:一种简单的实现 现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,这里有一个开源实现,我找了一大堆,发现这个项目相对较为简洁:htt ...
- 零元学Expression Blend 4 - Chapter 29 ListBox与Button结合运用的简单功能
原文:零元学Expression Blend 4 - Chapter 29 ListBox与Button结合运用的简单功能 本章所讲的是运用ListBox.TextBox与Button,做出简单的列表 ...
- python库的tkinter带你进入GUI世界(计算器简单功能)
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 一个处女座的程序猿 PS:如有需要Python学习资料的小伙伴可以加 ...
- 用两行代码实现重试功能,spring-retry真是简单而优雅
背景 最近做的一个需求,需要调用第三方接口.正常情况下,接口的响应是符合要求的,只有在网络抖动等极少数的情况下,会存在超时情况.因为是小概率事件,所以一次超时之后,进行一次重试操作应该就可以了.重试很 ...
- Android仿iPhone晃动撤销输入功能(微信摇一摇功能)
重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内 ...
- 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
[源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...
随机推荐
- vc 按钮自绘
按钮自绘,将按钮区域分成三部分,左边.右边.中间都由贴图绘制,可用于手动进度条按钮,或者左右选择项按钮 cpp代码部分: // LRSkinButton.cpp : implementation fi ...
- Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind at ...
- javascript学习初衷
很久没有过来写东西了,由于要做小网页,介于不懂javascript,一味的去爬其他站点的代码下来,却不能自由组合,控制,达到自己想要的效果, 于是只能沉下心,javascript从头学起,还记得张老师 ...
- Indy的TCPServer到底能支持多少个连接
最近一个项目,最开始使用IdTcpServer,在大压力测试的时候,只连接了800个多一点的客户端(每个客户端连接上之后每秒钟发送一个几十字节的报文,服务器应答).但是持续的时间不会超过10分钟,服务 ...
- STM8S---IO复用配置(STVP方式)
1 说明 STM8S的IO复用用程序代码配置起来比較麻烦.通常是操作flash来操作option byte字节.配置寄存器更加麻烦,能够使用STM 标准外设驱动库来设置. 本文使用一种界面配置的方式来 ...
- ps中图层混合模式、多图层叠加、不透明度、填充、图层样式详解
图像领域中,通过进行一下想法的时候,都要通过用ps看下是不是合理,而ps中图层是必用的一个功能,下面详解一下图层有关的叠加原理. 基本顺序是图层从下往上继续, 先计算图层的填充,再计算样式.最后计算不 ...
- 关于智普 - 千人免费学|Python培训|国内最权威python培训|html5
关于智普 - 千人免费学|Python培训|国内最权威python培训|html5 智普教育隶属于北京顶嵌开源科技有限公司,成立于2008年. 智普开源是基于Linux系统的互联网开源学习平台,讲求务 ...
- Python使用cx_Oracle模块连接操作Oracle数据库
1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...
- jconsole 连接 eclipse启动项目
eclipse 启动java项目默认没有开启jmx远程查看功能,假设须要看项目执行的线程内存使用量等信息,能够在eclipse启动參数中添加: -Dcom.sun.management.jmxremo ...
- Android开发周报:Flyme OS开源、经典开源项目解析
Android开发周报:Flyme OS开源.经典开源项目解析 新闻 <魅族Flyme OS源码上线Github> :近日魅族正式发布了MX5,并且在发布会上,魅族还宣布Flyme OS开 ...