本文针对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

Linux OS: Write Barriers相关推荐

  1. clear linux安装教程,Clear Linux OS特性介绍,附下载地址

    Clear Linux OS是一个开源的滚动发布Linux发行版,针对性能和安全性进行了优化,专为定制和可管理性而设计,提供有Clear Linux* OS Desktop/Server版本下载. C ...

  2. socat 虚拟串口在 linux OS中如何实现?

    socat虚拟串口工具 用途:linux socat 将2个串口通过虚拟的方式连接起来,这样就可以:直接对串口程序进行调试了. 对串口程序进行调试,不再需要外部串口. Win OS Win com0c ...

  3. 《LINUX KERNEL MEMORY BARRIERS》

    <LINUX KERNEL MEMORY BARRIERS> 原文地址:https://www.kernel.org/doc/Documentation/memory-barriers.t ...

  4. [转]QNX与Linux OS比较优劣-QNX与Linux两家未来有望独霸车载电子操作系统

    image.png 声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正 车载操作系统 车载电子操作系统是汽车智能化的核心,能够有效分配车机的硬件资源,对车内各种任务功能进行协同管 ...

  5. Palm OS、Windows CE及Linux OS之比较

    1 Palm OS与Windows CE的比较 3Com公司的Palm OS是掌上电脑市场中较为优秀的嵌入式操作系统,是针对这一市场专门设计的系统.它有开放的操作系统应用程序接口(API),支持开发商 ...

  6. <Linux> 自制x86 Linux OS的ISO镜像

    本博文介绍把自行编译Linux kernel + 自行编译busybox,制作成x86平台iso镜像文件,并运行于virtualbox上,本博文是在博文A: <Linux> Linux + ...

  7. 支持 Linux OS的免费SCADA软件列表

    支持 Linux OS的免费SCADA软件列表 Fernhill SCADA Tatsoft factory studio Ignition SCADA:钡铼技术BL102 IIOT工业物联网关兼容此 ...

  8. Windows subsystem Ubuntu 18.04LTS + Intel(R) Parallel Studio XE 2015 for Linux* OS + NetCDF

    Windows subsystem Ubuntu 18.04LTS + Intel® Parallel Studio XE 2015 for Linux* OS + NetCDF 4.2 above ...

  9. 运行自定义映像。linux,安装和使用virt-customize自定义Qcow2/Raw Linux OS磁盘映像

    本文将讨论如何使用virt-customize自定义Qcow2映像,QCOW代表(QEMU Copy On Write),是QEMU处理器仿真器支持的磁盘映像格式之一,它使用磁盘存储优化策略,在实际需 ...

最新文章

  1. 电子学会青少年编程等级考试Python案例08
  2. 皮一皮:论蓝朋友的拍摄技术
  3. MxGraph从入门到精通之4:布局
  4. Java 输出流中的flush方法
  5. x-code 4.61 无证书真机调试
  6. xenserver 虚拟机扩容lvm磁盘分区的方法_Linux磁盘扩容
  7. 传感与检测技术,Pt100热电阻测温实验报告,江南大学物联网
  8. leetcode(167)两数之和 II - 输入有序数组
  9. python实例 65,66
  10. 批量上传文件及进度显示
  11. J.U.C之并发工具类:Exchanger
  12. Windows 部署服务(WDS)基础配置指南 (2008 or 2008R2 Only)
  13. vscode配置python 控制台/终端/TERMINAL 不输出/不显示 解决办法
  14. Android 开发中常见的Eclipse排版设置
  15. Android,iOS打开手机QQ与指定用户聊天界面
  16. BZOJ1010[HNOI2008] 玩具装箱toy
  17. linux amd64目录,创建基于amd64的qqforlinux的deb包
  18. 数学顶级期刊- 数学纪事,数学年刊,数学进展,数学杂志
  19. java考勤表导出_Sql通过存储过程生成全年日历考勤表数据
  20. 股票做空是什么意思?股票做空和做多是什么意思?

热门文章

  1. 【配置】利润中心会计启用
  2. 淘宝2011春季校园招聘笔试试题(答案+个人解析版)
  3. linux多字节错误,在Linux中解压缩时遇到多字节字符的问题
  4. DDR SDRAM芯片DQS的作用以及读写DQS/DQ对齐方式不同的原因
  5. MnTTS: 开源蒙古语语音合成数据集及其基线模型
  6. 语音识别基础算法——动态时间规整算法
  7. DO280OpenShift访问控制--管理项目和账户
  8. 洛谷 P1830 轰炸Ⅲ
  9. “野蛮人”姚振华是如何炼成的?
  10. mitmproxy系列抓包工具使用与实战