大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性。它保护数据不被写入日记。但 是,在许多情况下,我们并不清楚这些barrier是否有用。本文就为什么要在你的Linux系统上启用barrier做出了解释。

Linux日志和barrier功能

要理解barrier,你首先需要理解文件系统日志功能。常用的文件系统使用日志功能来保证文件系统的完整性。该功能背后的思路很简单:在写入新的 数据块到磁盘之前,会先将元数据写入日志。预先将元数据写入日志可以保证在写入真实数据前后一旦发生错误,日志功能能很容易地回滚到更改之前的状态。这个 方法确保了不会发生文件系统崩溃的情况。

单独使用日志功能不能保证没有任何差错。现在的磁盘大都有大容量的缓存,数据不会立即写入到磁盘中,而是先写入到磁盘缓存中。到这一步,磁盘控制器 就能更加高效地将其复制到磁盘中。这对性能来说是有好处的,但是对日志功能来说则相反。为了保证日志百分之百可靠,它必须绝对保证元数据在真实数据写入之 前被预先写入。这就是我们要介绍文件系统barrier的原因。

我们很容易理解使用barrier的根本原因:barrier本身禁止在barrier之后写入数据,真实的数据块将在barrier被写入之前完 全写入磁盘。使用barrier可以确保文件系统的完整性,因为barrier功能在EXT4文件系统中是默认启用的(除非你的操作系统更改了这个默认设 置)。

Linux文件系统的barrier:启用还是禁用?

你可以通过/proc/mounts文件来监控文件系统barrier的当前状态;对于每一个挂载的文件系统,打开这个文件都能看到所有的挂载选项。如果你看到barrier=1,那么你的文件系统就正在使用barrier功能。下列信息是一个文件系统的例子:

/dev/sda1 /boot ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0/dev/mapper/luks-3e67401f-44c6-4a27-a1bf-cdf0dcf45f65 /home ext4 rw,seclabel,noatime,barrier=1,data=ordered 0 0

文件系统barrier何时不工作?

Barrier的问题在于,它不能应用于所有条件下。如果设备映射器作为存储层的优先级使用,那么文件系统barrier就无法工作了,因为设备映 射器不支持barrier。所以,哪怕你的文件系统默认支持barrier,还是无法在逻辑卷、软RAID或者多路径磁盘上运行该功能(RED HAT和所有相关的Linux版本都将barrier作为默认选项)。

解决这个问题的方案之一就是避免使用设备映射器。所以在安装服务器时,你需要充分考虑配置选项。首先,你不该使用LVM安装服务器,而应该选择用传 统的分区方式。接着,你不能使用和设备映射器配合工作的多路径磁盘,它会在SAN上创建多个冗余路径。某些情况下,SAN供应商会提供一个专有驱动器作为 选择,但不是所有供应商都提供该选项。最好的办法是采用智能硬件。

使用barrier保护的风险之一是,在系统中断时,数据会留在缓存中,而永不会写入文件系统。一个简单的电池备份控制器可以避免这个问题。当服务器使用的这个控制器出故障了,磁盘控制器仍然能保证变更操作,这充分排除了barrier使用的需要。

使用barrier的另一个不利之处在于,你需要付出降低性能的代价。如果你需要顶级的性能,那么你可以用挂载选项-o barrier=0来关闭barrier功能,比如:mount /dev/sda2 -o barrier=0 /data。

文件系统barrier功能非常有用,但是不能和设备映射器配合工作。如果你需要使用这类设备,但是又想要保证文件系统完整性,那么你可以用电池备 份磁盘控制器。如果你的硬件不支持这个,那么你只能避免使用设备映射器,这样才能用barrier功能来保障文件系统完整性。还有,如果你希望得到更好的 系统性能,最好也不要开启barrier功能,它会降低系统运行速度。

mount noatime参数提高IO性能

Linux has a special mount option for file systems called noatime. If this option is set for a file system in/etc/fstab, then reading accesses will no longer cause the atime information (last access time – don’t mix this up with the last modified time – if a file is changed, the modification date will still be set) that is associated with a file to be updated (in reverse this means that if noatime is not set, each read access will also result in a write operation). Therefore, using noatime can lead to significant performance gains.

I do not issue any guarantee that this will work for you!

Using noatime

In this example I want to use noatime for my root file system – /. Therefore I open /etc/fstab…

vi /etc/fstab

… and add noatime to the options of the / file system, e.g. like this:

proc /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 /dev/md0 /boot ext3 defaults 0 0 /dev/md1 none swap sw 0 0 /dev/md2 / ext3 defaults,noatime 0 0

You don’t have to reboot the system for the changes to take effect – the following command will do:

mount -o remount /

That’s it. You can run

mount

linux barrier,Linux文件系统的barrier:启用还是禁用相关推荐

  1. linux 取消自动登录,通过GUI启用或禁用Ubuntu 18.04系统自动登录

    有些 Ubuntu 用户只是个人使用电脑,所以每次登录 Ubuntu 18.04 LTS 系统时都要输入设置时的身份验证信息觉得非常的麻烦,下面我们有两种方法可以让你启用与禁用 Ubuntu 18.0 ...

  2. barrier linux,Linux系统上启用barrier?

    大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性.它保护数据不被写入日记.但是,在许多情况下,我们并不清楚这些barrier是否有用.本文就 ...

  3. barrier linux,Linux Barrier I/O

    I/O barrier请求用来保证I/O请求的顺序.其主要是针对那些需要保证顺序的写请求,比如日志的checkpoint.在请求队列中,那些排在barrier请求前的请求,必须在barrier请求开始 ...

  4. barrier linux,Linux Barrier I/O 实现分析笔记

    一直以来,I/O顺序问题一直困扰着我.其实这个问题是一个比较综合的问题,它涉及的层次比较多,从VFS page cache到I/O调度算法,从i/o子系统到存储外设.而Linux I/O barrie ...

  5. 第5章 Linux上管理文件系统

    5.1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据 ...

  6. Linux上管理文件系统

    1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据. ...

  7. Linux磁盘存储和文件系统

    磁盘存储和文件系统 设备文件 I/O Ports: I/O设备地址 一切皆文件:open(), read(), write(), close() 设备类型:块设备:block,存取单位"块& ...

  8. Linux主分区文件系统,Linux_Linux磁盘和文件系统管理,1、 分区MBR(Master Boot Recor - phpStudy...

    Linux磁盘和文件系统管理 1. 分区 MBR(Master Boot Recorder)主引导分区仅提供最多4个分区,主分区(Primary,P)与扩展分区(Extended,E),如3P+1E, ...

  9. linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO

    我们在创建DMS表空间容器时可以选择使用裸设备或文件系统,下面我们来看看两者的区别.我们知道,内存的读写效率比磁盘高近万倍,因此数据库通常会在内存中开辟一片区域,称为Buffer Pool,使数据的读 ...

最新文章

  1. JavaのFile类基础操作之问题
  2. Linux 修改SSH 默认端口 22,防止被破解密码
  3. Eclipse解决Ctrl+c很卡的方法
  4. 网络营销外包——网络营销外包专员对网站标题修改都是有原因的
  5. python 中给文件加锁——fcntl模块
  6. 对Spring IOC的理解(转)
  7. #17# SCCM管理 - 软件中心 VS 应用程序目录网站点
  8. java怎么使异常不起作用_java – @Test(expected = Exception.class)对我不起作用,我错过了什么?...
  9. 第四周Java学习总结
  10. 设计灵感|排版死板?可能是你的角度不对!
  11. mysql jdbc 驱动名称_【经验分享】常用 JDBC 驱动名字和 URL 列表
  12. Android8.0前后Camera架构对比(二十三)
  13. 从设计模式到恋爱宝典,程序员们的福利来了
  14. 三星t5 android,三星T5首测:一款秒杀SATA SSD的移动SSD
  15. badboy设置中文_badboy基本操作
  16. 泰勒级数(Taylor Series)和利用python计算自然常数
  17. 稳压器功能一览[转]
  18. int函数python_int()函数
  19. Win10连接WiFi显示无internet,安全 却可以正常上网(转)
  20. 原生js+css 实现轮播图 完整代码

热门文章

  1. windows有哪些版本
  2. 数据可视化:处理json文件
  3. EasyNVR服务里为什么会有两个easynvr程序?可以互相替换吗?
  4. 深入理解java虚拟机-第五章:虚拟机字节码执行引擎
  5. 微博舆情 之 特定话题情感分析
  6. pythonmysql数据处理_Python之MySQL数据操作
  7. Unity 3D模型展示框架篇之框架运用
  8. Cocos2d-x 3.0final手机游戏开发视频教程2014 - 自学编程 -(陆续更新中)
  9. Cisco Packet Tracer交换机间相同VLAN通信
  10. obs源码二次开发,自定义插入SEI