[深入理解文件系统之十一] ext2中data和meta-data的数据一致性

简介:

 ext2中data和meta-data的数据一致性

  • ext2 中的e2fsck

e2fsck是ext2/ext3/ext4的文件系统数据一致性的检查工具。在ext2中,出现下面的三种情况时,有必要进行一致性检查:

a. not cleanly unmounted;

b. the maximum mount count has been exceeded;

c. maximum time between checks has been exceeded.


考虑到文件系统变动带来的兼容性要求,ext2中e2fsck需要支持的三种标志

COMPAT: on-disk format is 100% compatible with older on-disk formats for reading and writing


RO_COMPAT: on-disk format is 100% compatible with older on-disk formats  only for  reading


INCOMPAT: the on-disk format has changed in some way that makes it unreadable by older kernels, or would otherwise cause a problem if an old kernel tried to mount it。


对e2fsck而言,它需要用比内核更严格的方式来处理上面的flags。如果连e2fsck都不能正确解析上面的任何一个flag,整个文件系统的一致性的检查都不会进行,这是因为e2fsck在此情况下判断当前文件系统给定的特性是否有效。


  •  ext2的meta data

根据作用的级别不同,ext2保证data和metadata同步写入磁盘可以分为三种方式:

per file: 打开的时候指定O_SYNC flag;  (ext2 专有特性)

per file : chattr +S file_name

per file-system: mount的时候指定sync选项


  • ext2的局限性

ext2文件系统的局限性一方面来自内核代码的限制,比如在Linux 2.4内核中,一个块设备的最大size是2T。另外一方面,来自于它的block bitmap/inode bitmap/inode  块/数据块的数据拓扑结构,比如文件大小和文件系统size的限制:

Filesystem block size:     1kB        2kB        4kB        8kB

File size limit:          16GB      256GB     2048GB     2048GB

Filesystem size limit:  2047GB     8192GB    16384GB    32768GB


再如目录中文件数的限制:

There is an upper limit of 32000 subdirectories in a single directory

另外,受限于目录中文件基于链表的组织形式,建议一个目录中最大允许10-15k files, 否则会出现严重的性能瓶颈。当然如果改成了基于hash的目录索引的方式,最大支持的文件数目可以达到100k~1M+.


  • ext2中的journal扩展

Stephen Tweedie为ext2开发了文件系统的journal功能。主要目的是:

1.避免meta-data corrution;

2. long time to do e2fsck;


文件系统的Journal只保存meta-data (data 也可以同时保存)。对于完整的journal ,重放到文件系统中去; 否则,当前incomplete的transaction会被丢弃,这个transaction所代表的对文件系统的修改也会丢失。


参考链接:

References

==========

The kernel source   file:/usr/src/linux/fs/ext2/

e2fsprogs (e2fsck)  http://e2fsprogs.sourceforge.net/

Design & Implementation http://e2fsprogs.sourceforge.net/ext2intro.html

Journaling (ext3)   ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/

Filesystem Resizing http://ext2resize.sourceforge.net/

Compression (*)     http://e2compr.sourceforge.net/


Implementations for:

Windows 95/98/NT/2000   http://www.chrysocome.net/explore2fs

Windows 95 (*)      http://www.yipton.net/content.html#FSDEXT2

DOS client (*)     ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/

OS/2 (+)        ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/

RISC OS client     http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/




















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1917977 ,如需转载请自行联系原作者


相关文章
|
Web App开发 移动开发 JavaScript
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
915 0
|
9月前
|
移动开发 安全 虚拟化
VMware ESXi 6.7 U3u (ESXi670-202403001), ESXi 6.5 U3v (ESXi650-202403001) 下载
VMware ESXi 6.7 U3u (ESXi670-202403001), ESXi 6.5 U3v (ESXi650-202403001) 下载
472 1
VMware ESXi 6.7 U3u (ESXi670-202403001), ESXi 6.5 U3v (ESXi650-202403001) 下载
|
机器学习/深度学习 算法 PyTorch
PyTorch Lightning:简化深度学习研究与开发
【8月更文第27天】PyTorch Lightning 是一个用于简化 PyTorch 开发流程的轻量级封装库。它的目标是让研究人员和开发者能够更加专注于算法和模型的设计,而不是被训练循环和各种低级细节所困扰。通过使用 PyTorch Lightning,开发者可以更容易地进行实验、调试和复现结果,从而加速研究与开发的过程。
526 1
|
Linux API 调度
技术笔记:Linux内核跟踪和性能分析
技术笔记:Linux内核跟踪和性能分析
|
人工智能 自然语言处理 算法
政务培训|LLM大模型在政府/公共卫生系统的应用
本课程是TsingtaoAI公司面向某卫生统计部门的政府职员设计的大模型技术应用课程,旨在系统讲解大语言模型(LLM)的前沿应用及其在政府业务中的实践落地。课程涵盖从LLM基础知识到智能化办公、数据处理、报告生成、智能问答系统构建等多个模块,全面解析大模型在卫生统计数据分析、报告撰写和决策支持等环节中的赋能价值。
310 2
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
494 0
|
网络协议 网络架构
网络协议介绍与学习
网络协议介绍与学习
496 4
|
存储 安全 开发工具
App隐私合规评估实务和要点
随着移动互联网的高速发展及监管部门针对移动互联网应用程序(以下简称“App”)隐私合规监管趋严,特别是在个人信息保护法的实施下。本文将深入探讨App隐私合规评估的要点和难点,提供详细的信息,并提供一套轻量级和自动化的App隐私合规治理方案,降低App业务被通报和下架等合规风险,以保障企业App业务正常运营。
1251 0
|
安全 数据安全/隐私保护 Windows
Windows 允许空密码远程桌面
Windows 允许空密码远程桌面
221 2
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
410 5