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

大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性。它保护数据不被写入日记。但是,在许多情况下,我们并不清楚这些barrier是否有用。本文就为什么要在你的Linux系统上启用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=ordered0 0/dev/mapper/luks-3e67401f-44c6-4a27-a1bf-cdf0dcf45f65 /home ext4rw,seclabel,noatime,barrier=1,data=ordered 0 0

文件系统barrier何时不工作?

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

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

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

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

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

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/336110.html

更多阅读

linux根文件系统的制作 制作linux系统镜像img

1.创建根文件目录mkdir rootfs(名字是随便取的)2.创建子目录cd rootfsmkdir bin dev etc lib proc sbin sys usr mnt tmp varmkdir usr/bin usr/lib usr/sbin lib/modules3.创建设备文件cd devmknod -m 666 console c 5 1mknod -m 6

Linux端口的关闭和启用 linux查看端口启用

Linux端口的关闭和启用Coaku:Linux下面貌似没有什么直接开启或者关闭端口的命令,因为若仅仅只是开启了端口而不把它与进程相联系的话,端口的开启与关闭就显得毫无意义了(开了端口却没有程序处理进来的数据)。也就是说,Linux里面端口的

Linux文件系统权限 callback什么意思

主题列表:1.默认权限:umask2.隐藏权限:chattr, lsattr3.特殊权限:SUID/SGID/Sticky Bit4.文件类型:file系统环境:Redhat Fedora Core 6文章作者:wuzhaikof文件与(或)目录是文件系统的具体表现形式,在Linux系统管理部分,文件与目录管理映射了Linux文

Linux文件系统—源代码导读 文件管理系统源代码

文件系统众所周知,文件系统是Unix系统最基本的资源。最初的Unix系统一般都只支持一种单一类型的文件系统,在这种情况下,文件系统的结构深入到整个系统内核中。而现在的系统大多都在系统内核和文件系统之间提供一个标准的接口,这样不同文

声明:《Linux文件系统的barrier:启用还是禁用》为网友衬他孤独分享!如侵犯到您的合法权益请联系我们删除