由异常掉电问题---谈xfs文件系统
由异常掉电问题---谈xfs文件系统
本文皆是作者自己的学习总结或感悟(linux环境),如有不对,欢迎提出一起探讨!!
目录结构
一.相关知识
二.问题提出
三.处理方法
四.最终结果
一、相关知识
1.xfs文件系统(概念性知识网上很多,自己去查喽)
文件系统的定义:
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
xfs文件系统:
是一个日志型文件系统
日志文件系统?加一个日志来记录文件系统的更改,即使在断电或者是操作系统崩溃的情况下也能保证文件系统一致性
怎么保持的?
要向磁盘写数据的时候,肯定要改变元数据,日志就要在这之前记录要怎么去改元数据的,当发生异常掉电或者文件系统崩溃后,进行修复时会检查文件系统的一致性,当出现不一致 时,可通过它来恢复。
(在数据下刷到磁盘之前,会先将对元数据的变动存放在日志中)
2.VM参数
1.Vm( virtual memory )是什么
1).不同的linux 内核版本,VM的参数是不一样的,本文介绍的kernel 3.4.24-v64
2).VM的相关参数位于/proc/sys/vm,用来优化虚拟内存的
3)./proc这个目录? Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而 不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程, 是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
4). /proc/sys包含了系统信息和内核参数
5). /etc/sysctl.conf所有内核配置信息,可做永久性修改
注:由于VM参数较多,感兴趣的话可参考我的另一篇随笔《vm参数简介》
3.XFS文件系统参数
1.这个网上内容比较少,我做如下几点介绍
1)xfs文件系统各个参数只有在xfs文件系统被挂载到linux系统上时,我们才能获取到。
2)xfs文件系统的参数位于/proc/sys/fs/xfs里,可以实时查看或调试各个参数
注:XFS参数较多,感兴趣的话可以参考我的另一篇随笔《XFS参数简介》
4.我的理解:VM参数和XFS参数是两套控制缓存的参数,他们应该具有以下的关系:
vm参数与xfs参数影响的阶段不同:
这里面涉及到的是linux的缓存机制,详细信息请参考《Linux 内核的文件 Cache 管理机制介绍》
与《Linux 文件系统剖析》这里我做简单的介绍:linux在具体文件系统(ext3,xfs,fat32等等)之上,存在了虚拟文件系统。虚拟文件系统对具体文件系统进行了‘封装’,这也使得linux可以挂载多种文件系统,但只使用同一套的函数或者命令。对于文件系统的缓存,这里细分了page cache和buffer cache。他们都存在于内存中,但是page cache主要用于缓存文件的内容,用于频繁的读取,buffer cache则用于将数据下刷到磁盘。通过实验可以发现,当用dd写裸设备时,buffer cache增长迅速,当像文件系统里copy数据时,page cache增长迅速。具体请参考文档
二、问题的提出
写这篇文章是因为带有xfs文件系统的机器上,在有IO的情况下出现异常掉电时,文件系统会出现损坏(不一致,数据丢失等)。当对这个xfs文件进行修复时,文件系统为十几T的情况下,修复时间非常慢,我们最终也没有解决这个问题,估计现阶段除了使用PMBUS电池或者UPS,还没有更好的方法来解决xfs文件系统异常掉电问题。
三、处理方法
我们主要针对以下变量进行了测试:
1.VM参数的dirty_radio与dirty_background_radio
2.xfs参数的age_buffer_centisecs、xfsbufd_centisecs、xfssyncd_centisecs
3.mkfs.xfs参数
4.mount参数
5.内存大小
6.cpu多线程
注:详细的测试结果和处理方法由于商业机密,不能泄露
四、最终结果
这里我给大家展示一下华为公司针对xfs修复的一个流程:

结束:希望提出更多关于xfs文件系统修复相关的建议,谢谢!
由异常掉电问题---谈xfs文件系统的更多相关文章
- android recovery升级过程中掉电处理
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度. 但是 ...
- 【转】巧用CAT706做掉电检测
相信大家都会遇到这样的情况,当你正在敲一份文档或一段代码时,啪的一下停电啦,我擦……,我的代码……,我的图纸……,我刚写好的文章…….但是在嵌入式系统中也会遇到类似的情况,通常会导致嵌入式系统数据,程 ...
- Linux高级运维 第四章 文件的基本管理和XFS文件系统备份恢复
4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在windows系统中,查看文件先进入相应的盘符,然后进入文件目录 在windows中,它是多根 c:\ d:\ e ...
- 文件的基本管理和XFS文件系统备份恢复
4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录 在WIN中,它是多根 c:\ d:\ e:\ Linux ...
- 第四章 文件的基本管理和XFS文件系统备份恢复 随堂笔记
第四章 文件的基本管理和XFS文件系统备份恢复 本节所讲内容: 4.1 Linux系统目录结构和相对/绝对路径. 4.2 创建/复制/删除文件,rm -rf / 意外事故 4.3 查看文件内容的命令 ...
- Linux掉电处理
在嵌入式设备中,掉电处理一直是一项比较麻烦的工作,在具有Linux系统的设备中,系统的种种数据的处理更是增加掉电处理的难度.现在做以下几点总结,再遇到类似问题可以做个参考. 1,系统启动的处理 在系统 ...
- 实战:xfs文件系统的备份和恢复
概述 XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据.xfsdump 按inode顺序备份一个XFS文件系统. centos7选择xfs格式作为默认文件系统 ...
- USB设备(移动硬盘、鼠标)掉电掉驱动的两种解决方案
症状: 当你发现"移动硬盘图标"经常无故消失,又自己出现时. 你可以把这个现象称之为"掉电" or "掉驱动". 遇到这种情况,相当不爽. ...
- xfs文件系统
引用http://blog.chinaunix.net/uid-522675-id-4665059.html xfs文件系统使用总结 1.3 xfs相关常用命令xfs_admin: 调整 xfs 文件 ...
随机推荐
- BZOJ1226或洛谷2157 [SDOI2009]学校食堂
BZOJ原题链接 洛谷原题链接 注意到\(B[i]\)很小,考虑状压\(DP\). 设\(f[i][j][k]\)表示前\(i - 1\)个人已经拿到菜,第\(i\)个人及其后面\(7\)个人是否拿到 ...
- BZOJ 1977[BeiJing2010组队]次小生成树 Tree - 生成树
描述: 就是求一个次小生成树的边权和 传送门 题解 我们先构造一个最小生成树, 把树上的边记录下来. 然后再枚举每条非树边(u, v, val),在树上找出u 到v 路径上的最小边$g_0$ 和 严格 ...
- Zookeeper 修改heap size
对应原文出处: https://support.pivotal.io/hc/en-us/articles/201861286-Zookeeper-service-heapsize-is-10GB-or ...
- qt 5.2.1类和模块的关系图
QT│ ├─ActiveQt│ │ ActiveQt│ │ ActiveQtDepends│ │ ActiveQtVersion│ │ QAxAggregated│ │ QAxB ...
- PS制作纸质复古野外露营插画分享
经常有人说一些复古风,就觉得蛮难,其实制作过程其实没有想象中复杂,从1850年到2017年,通过这160多年里的平面设计,给我们的作品添加上一些新鲜的灵感和活力,本次教程就来教大家用PS做出耐看的纸质 ...
- &和&&的区别是什么
1)&是按位与操作符,a&b是把a和b都转换成二进制数后,然后再进行按位与的运算.&&是逻辑与运算符,a&&b就是当且仅当两个操作数都为true时,其结 ...
- gunicorn配置文件
最近使用gunicorn部署,感觉用命令参数方式启动比较繁琐,而且有时候就忘了以前怎么设置的了.一笑... 上stackoverflow查了查,找到了一个官方示例,在这里. 官方解释在这里. 记在这里 ...
- render函数的简单使用
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Svn项目管理工具
1 svn介绍 1.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解 ...
- 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)
传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码