选择设置好ext3日志模式
日志文件系统
通常在系统运行中写入文件内容的同时,并没有写入文件的元数据(如权限、所有者及创建和访问时间),如果在写入文件内容之后与写入文件元数据之前的时间差里,系统非正常关闭,处于写入过程中的文件系统会非正常卸载,那么文件系统就会处于不一致的状态。当重新启动时,Linux会运行fsck程序,扫描整个文件系统,保证所有的文件块都被正确地分配或使用,找到被损坏的目录项并试图修复它。但是,fsck不保证一定能够修复损坏。出现这种情况时,文件中不一致的元数据会填满已丢失文件的空间,目录项中的文件项可能会丢失,也就造成文件的丢失。
为了尽量减少文件系统的不一致性,缩短操作系统的启动时间,文件系统需追踪引起系统改变的记录,这些记录存放在与文件系统相分离的地方,通常我们叫“日志”。一旦这些日志记录被安全地写入,日志文件系统就可以应用它们清除引起系统改变的记录,并将它们组成一个引起文件系统改变的集,将它们放在数据库的事务处理中,保持在状态下有效数据的正常运行,不与整个系统的性能发生冲突。在任何系统发生崩溃或需要重新启动时,数据就遵从日志文件中的信息记录进行恢复。由于日志文件中有定期的检查点,通常非常整齐。文件系统的设计主要考虑效率和性能方面的问题。
Linux可以支持许多日志文件系统,包括FAT、VFAT、HPFS(OS/2)、NTFS(Windows NT)、UFS、XFS、JFS、ReiserFS、ext2、ext3等。
ext3支持多种日志模式
ext3 是ext2文件系统的高一级版本,完全兼容ext2,与ext2主要区别便是具有快速更新文件的存储功能。计算机自磁盘上读取或写入数据开始就必须保证文件系统中文件与目录的一致性,所有日志文件中的数据均以数据块的形式存放在存储设备中,当磁盘分区时文件系统即被创建,按照文件形式、目录形式支持存储数据和组织数据。Linux的文件和目录采用层次结构文件系统,文件系统一般是在安装系统时通过使用“mount”命令安装上的,用于使用的文件链表存储在文件/etc/fstab中,用于维护而安装的文件链表则存放在/etc/mtab中。
ext3提供多种日志模式,即无论改变文件系统的元数据,还是改变文件系统的数据(包括文件自身的改变),ext3 文件系统均可支持,以下是在/etc/fstab文件引导时激活的三种不同日志模式:
◆data=journal日志模式
日志中记录包括所有改变文件系统的数据和元数据。它是三种ext3日志模式中最慢的,但它将发生错误的可能性降至最小。使用“data= journal” 模式要求ext3将每个变化写入文件系统2次、写入日志1次,这将降低文件系统的总性能,但它的确是使用者最心爱的模式。由于记录了在ext3中元数据和数据更新情况,当一个系统重新启动的时候,这些日志将起作用。
◆data=ordered日志模式
仅记录改变文件系统的元数据,且溢出文件数据要补充到磁盘中。这是缺省的ext3日志模式。这种模式降低了在写入文件系统和写入日志之间的冗余,因此速度较快,虽然文件数据的变化情况并不被记录在日志中,但它们必须做,而且由ext3的daemon程序在与之相关的文件系统元数据变化前执行,即在记录元数据前要修改文件系统数据,这将稍微降低系统的性能(速度),然而可确保文件系统中的文件数据与相应文件系统的元数据同步。
◆data=writeback日志模式
仅记录改变文件系统的元数据,但根据标准文件系统,写程序仍要将文件数据的变化记录在磁盘上,以保持文件系统一致性。这是速度最快的ext3日志模式。因为它只记录元数据的变化,而不需等待与文件数据相关的更新如文件大小、目录信息等情况,对文件数据的更新与记录元数据变化可以不同步,即ext3是支持异步的日志。缺陷是当系统关闭时,更新的数据因不能被写入磁盘而出现矛盾,这一点目前尚不能很好解决。
不同日志模式间有差别,但设置的方法一样方便。可以使用ext3文件系统指定日志模式,由/etc/fstab启动时完成。例如,选择data=writeback日志模式,可以做如下设置:
/dev/hda5 /opt ext3 data=writeback 1 0
在一般情况下,data=ordered日志模式是ext3文件系统的缺省模式。
选择日志模式
1.考虑数据完整性
使用ext3文件系统,在非正常关机时,数据完整性能得到可靠的保障,而且可以选择数据保护的类型和级别。例如,可以选择保证文件系统一致、允许文件系统上的数据在非正常关机时受损,这样可以在某些状况下提高一些速度(但非所有状况)。另外,也可以选择保持数据与文件系统一致的情况,这意味着在非正常关机后,不会在新近写入的文件中看到任何数据垃圾。这种保持数据与文件系统一致的安全性选择通常是缺省设置的情况。
在大多数情况下,用户都是在文件的末尾增加写入数据。仅仅在某些情况下(例如数据库),用户在现存文件的中间写入数据,甚至覆盖现存文件。这种操作一般是先截断该文件,然后再写入数据。如果选择data=ordered模式,系统正在写文件时崩溃,那么数据块可能被部分改写,但是新增加的数据写入过程并没有完成,所以这种不完整数据块将不能作为文件数据的一部分。崩溃后要得到残存数据块的惟一办法是,在崩溃过程中有一个程序正在重写现存文件的中部,该程序使用了 fsync()和O_SYNC强制写操作,才能保证在这种情况下按特定顺序写入。
2.考虑速度
ext3写入数据的次数要多于ext2,尽管如此,ext3的速度仍然快于ext2(即使是对高速数据流)。这是因为ext3的日志具有优化硬盘磁头转动的功能。通过选择3种日志模式中的某一种,可以选择优化速度,但这会或多或少地造成一些数据的不完整,下面就来比较一下这三种日志模式。
◆ 使用选项data=writeback可以显著地提高速度,但同时会降低对数据一致性的保护。选择其它日志模式,数据一致性的保护基本上与ext2文件系统相同。不同的是在正常操作时,系统要不断地维护文件系统的完整性,包括频繁的共享写操作创建和删除大量的小文件。如果从ext2切换到ext3,发现应用程序性能大幅度下降,选项data=writeback可能会对提高性能有帮助。即使没有获得数据一致性保护措施,仍然可以享受ext3的优势(文件系统总是保持一致)。在很多日志文件系统中,将这种模式设置为缺省模式。
◆data=ordered(缺省模式)能提供保持数据与文件系统的一致,这意味着在非正常关机时,不会在新近写入的文件中看到任何垃圾数据。
◆为了保证在多数情况下获得适中的速度,data=journal模式需要大一些的日志。当然在非正常关机后需要的恢复时间也长一些,但在某些数据库操作时速度较快。
一般情况下,建议使用缺省模式。如果要改变模式,要在/etc/fstab文件中为相应的文件系统加上data=模式选项。
这样,可以在速度和文件数据完整性两方面权衡利弊,并且可以为某些特殊的应用调整速度。
Linux 操作系统是近年来用户数量增长最快的操作系统,ext3作为第一个正式支持的日志文件系统,全面兼容ext2的。ext3提供了多种日志模式支持,改进了 Linux系统的性能,解决系统中存在的不一致性的问题。ext3文件系统是一个优秀的、极具发展前景的文件系统。
阅读(433) | 评论(0) | 转发(0) |
-->
选择设置好ext3日志模式的更多相关文章
- ext3日志模式
ext3日志模式 http://blog.sina.com.cn/s/blog_5d4ab4b40100dosx.html ext3支持多种日志模式 ext3 是ext2文件系统的高一级版本,完全兼容 ...
- Oracle 设置日志模式
在NOARCHIVELOG模式下启动和运行一个数据库. 确定闪回恢复区的位置和归档日志目标目录的位置. 步骤一 为归档的重做日志配置FRA和单独的归档日志目标. 首先,设置FRA参数DB_RECOVE ...
- (转)使用 DB2 HADR 选择用于灾难恢复的 SUPERASYNC 模式
使用 DB2 HADR 选择用于灾难恢复的 SUPERASYNC 模式 Vishnu G 和 Hemant Singh2013 年 6 月 25 日发布 WeiboGoogle+用电子邮件发送本页面 ...
- 使用X-UA-Compatible来设置IE浏览器兼容模式(转)
使用X-UA-Compatible来设置IE浏览器兼容模式 文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 ...
- 强制将IE8设置为IE7兼容模式来解析网页
强制将IE8设置为IE7兼容模式来解析网页 英文原文:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx 文件兼容性用于定义让IE ...
- 如何设置eclipse在默认模式下打开文件
如何设置eclipse在默认模式下打开文件 打开eclipse.选择例如以下:windows --> preferences --> General --> Editors --&g ...
- oracle 开启归档日志模式
摘自:https://www.jianshu.com/p/f8c0e9309ce2 在默认情况下,oracle数据库是在非归日志档模式中创建的,在非归档日志模式中,进行日志切换时会直接重写redo l ...
- I.MX6 不一定要设置BOOT_MODE进入烧录模式
/************************************************************************* * I.MX6 不一定要设置BOOT_MODE进入 ...
- db2日志模式、备份归档、恢复解析
DB2的日志分为两种模式,日志循环与归档日志,也就是非归档和归档模式.下面就具体介绍一下这两种方式以及和备份归档设置的关系. 一.日志循环 这是默认方式,也就是非归档模式,这种模式只支持(backup ...
随机推荐
- [基本操作] kd 树
概念就不说了吧,网上教程满天飞 学了半天才知道,kd 树实质上只干了两件事情: 1.快速定位一个点 / 矩形 2.有理有据地优化暴力 第一点大概是可以来做二维平面上给点/矩形打标记的问题 第二点大概是 ...
- 如何卸载Python通过setup.py安装的模块
0,pip uninstall xxxx 1.找到egg sudo easy_install -m BitVector .... Using /usr/local/lib/python2./ ...
- [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- loj 6085.「美团 CodeM 资格赛」优惠券
题目: 一个有门禁的大楼,初始时里面没有人. 现在有一些人在进出大楼,每个人都有一个唯一的编号.现在有他们进出大楼的记录,但是有些被污染了,只能知道这里有一条记录,具体并不能知道. 一个人只有进大楼, ...
- Inception-Resnet-V2
零.Inception-Resnet-V2的网络模型 整体结构如下,整体设计简洁直观: 其中的stem部分网络结构如下,inception设计,并且conv也使用了7*1+1*7这种优化形式: inc ...
- Oracle 12C 新特性之 db默认字符集AL32UTF8、PDB支持不同字符集
一. db默认字符集AL32UTF8Specify the database character set when you create the database. Starting from Ora ...
- JavaScript创建对象的几种重要模式
一.工厂模式 1. 代码示例 function person(name, age) { var p = new object(); p.name = name; p.age = age; p.sayN ...
- 动态规划算法(后附常见动态规划为题及Java代码实现)
一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 二.基本思想与策略 基本 ...
- win32 获取本机网卡信息(MAC地址,IP地址等)
由于一个需求需要获取网卡的MAC地址,就搜了一下,大部分都是COPY来COPY去的一些代码,有很多甚至不能直接运行或有还有内存泄漏.自己查了一下MSDN然后封装了一下: 需要注意,一个机器可能有多个网 ...
- 蓝桥杯 历届试题 PREV-2 打印十字图
历届试题 打印十字图 时间限制:1.0s 内存限制:256.0MB 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并 ...