Linux OS: Write Barriers

  本文针对RHEL 6.
  文件系统作为大部分数据库的存储载体(ORACLE raw等其他由应用程序接管的I/O操作除外),一致性非常重要。
  write barriers 是一种内核机制,用来确保文件系统metadata被正确并有序的写入持久化存储介质,不管底层存储是否有易失CACHE,不管电源是否突然关闭,都可以被确保。
  一个开启了write barriers的文件系统,使用fsync()方法写入的数据将被确保被正确并有序的写入持久化存储介质。不管底层存储是否有易失CACHE,不管电源是否突然关闭,都可以被确保。
  当然开启write barriers将导致性能下降,特别在频繁的fsync()调用,或频繁的创建或删除大量小文件时。
  文件系统非常关心的一个操作是metadata的安全更新.对于一个日志型的文件系统,metadata的更新被绑定到一个transaction中,写入到持久化的底层存储,操作顺序如下:

  1. First, the file system sends the body of the transaction to the storage device.
  2. Then, the file system sends a commit block.
  3. If the transaction and its corresponding commit block are written to disk, the file system assumes that the transaction will survive any power failure.

   现在的硬盘,RAID卡,磁盘柜都带有自身的CACHE,还有操作系统本身的CACHE,如果电源丢失导致这些CACHE丢失,都可能引发文件系统不一致。打个比方,commit block写入了,但是对应的transaction body只写入了部分或完全没有写入,那么在电源恢复的时候,As a result, the journal may replay these uninitialized transaction blocks into the file system during post-power-loss recovery; this will cause data inconsistency and corruption. 
   write barriers是如何来确保数据被正确写入到持久化存储了呢?
  After the transaction is written, the storage cache is flushed, the commit block is written, and the cache is flushed again. This ensures that:

  • The disk contains all the data.
  • No re-ordering has occurred.

With barriers enabled, an fsync() call will also issue a storage cache flush. This guarantees that file data is persistent on disk even if power loss occurs shortly after fsync() returns.
   从write barriers的运行机制来看,flush cache的操作变得非常频繁。因此开启write barriers的同时开启设备的WRITE CACHE,将造成写性能下降。
   对于不带写CACHE的存储设备,或带掉电保护的CACHE,或者高端存储上的CACHE。可以考虑关闭write barriers来获得好的性能,同时不牺牲数据的一致性。
   关闭write barriers只需要在挂载设备时添加参数 -o nobarrier 。
   关闭了write barriers之后,还需要确保文件系统的一致性,可以通过关闭CACHE,使用可靠的高端存储来实现,对于NFS文件系统,客户端不需要打开write barriers,服务端需要打开write barriers。\
   关闭CACHE的方法:
普通的本地硬盘
hdparm -W0 /device/
对于有阵列卡的硬盘,
MegaCli64 -LDGetProp -DskCache -LAll -aALL
MegaCli64 -LDSetProp -DisDskCache -Lall -aALL

时间: 2024-08-07 05:47:29

Linux OS: Write Barriers的相关文章

Automatic logon configuration on Linux OS

Automatic logon configuration on Linux OS 1. Regarding to DSA: a) ssh-keygen -t dsa  b) cat ~/.ssh/id_dsa.pub | ssh <username>@<remote-host> "cat - >> ~/.ssh/authorized_keys" 2. Regarding to RSA: a) ssh-keygen -t rsa  b) ssh-co

Linus Torvalds:开源Linux OS安全性不可能十全十美

Linus Torvalds不重视 Linux kernel 安全性,是因为这些安全问题注定存在的吗? 这也是最近一篇刊登在Washington Post关于安全的开源操作系统文章所提出的建议.该报将Torvalds在安全方面的举动总结如下:"任何系统的安全性都不可能十全十美的.所以系统必须权衡其他的优先因素--如处理速度.灵活性和易用性--在一系列固有微妙的关系间进行权衡". 该报同样将Torvalds盛赞为"手握因特网未来的人". 总之,这两点建议表明Torva

Linux OS||Services不响应SYN总结

背景 对外提供TCP服务的进程,在压测时发现,TCP连接SYN响应慢,甚至不响应.导致无法正常接收新的请求,影响业务. 抓包分析: 如上有大量的重传,有时能够正常的响应请求,有时就无法响应请求. 排查思路 1.系统负载是否过高 2.是否有安全软件(比如安全狗,安骑士等) 3.是否开启防火墙 4.Snat问题  5.TCP相关参数:net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等 6.系统最大文件打开数是否有限制 7

GNU 和 Linux

    像Slashdot这样的论坛上常常有人在攻击GNU,他们的观点在我看来完全是缺乏历史知识和不尊重历史.当GNU倡导称Linux为 GNU/Linux时,这些人声称GNU企图从Linus Torvalds 身上窃取荣誉,或者宣称GNU的所作所为有反商业的可疑动机.我最后决定写下这篇文章,以避免出现更多的疑惑.     下面是这些为数不多但大喊大叫的分裂分子必须牢记的一些简单事实:     我们从GNU与Linux内核的关系开始说起:     GNU的问世比Linus Torvalds开始从

linux中利用UnixBench进行性能测试

 UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具. UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器.   性能测试-unixbench"> UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能.Unixbench的主要测试项目有:系统调用.读写

如何搭建linux开发服务器

    在开发过程中,必然会出现多人同时工作.协着的情况,在嵌入式开发项目中更为平常,这样可以加快项目周期,为产品上市占得时间先机.目前,使用linux作为开发产品的操作系统情况越来越多,使用越来越广泛.为了交叉编译,为了最接近开发目标,我们一般都会自己搭建一台linux开发服务器.linux开发服务器一些常用的功能必须支持,比如Samba.nfs.tftp.httpd等.     首先我们需要选择合适的linux操作系统作为服务器的系统,推荐使用Fedora8.Fedora10等,笔者在长期使

那些年,我们一起追过的Linux

Linux是功能强大的常用操作系统之一,目前它在计算机操作系统领域的发展速度越来越快.它提供了出色的性能和速度.Linux用起来非常稳定而可靠.它还提供了几个管理员工具和实用程序,可以帮助你有效地管理自己的系统. 回到上世纪90年代,Mandrake Linux还是唯一的Linux发行版:而今天,Linux发行版的数量变得数不胜数.这款操作系统现在有100多种.这也是开源软件具有的优点之一.外头有好多的Linux发行版,我们考虑了诸多重要因素,比如在线支持.易于安装以及对用户友好,替大家选出了若

Ora-27102: Out Of Memory: Linux Error: 12: Cannot Allocate Memory with LOCK_SGA=TRUE[ID 401077.1]

Ora-27102: Out Of Memory: Linux Error: 12: Cannot Allocate Memory with LOCK_SGA=TRUE  In this Document   Symptoms   Cause   Solution Applies to: Linux OS - Version: Enterprise Linux 4.2 and later   [Release: RHEL4U2 and later ]Linux x86Linux x86-64Li

岁月有痕:Linux桌面风雨兼程

当我们坐在 Debian.Fedora.Suse 等发行版本最新版本前,看着桌面操作的各种华丽效果,享受着各种易用的图形界面应用给我们带来的便利,是否对我们面前的这个操作系统如何而来有过思考? 我们是否考虑到在感恩节的时候,对隐藏在这个操作系统背后努力奉献时间的人们抱有感恩之心呢?Linux OS,一路走来,风雨兼程,岁月有痕.   1991 年:生于毫末 在故事的开头,要介绍下 Unix.Unix 由 Ken Thompson 和 Dennis Ritchie(已离世)于 1969 年开发.此