Linux 磁盘自检介绍
在Linux系统中,有时候重启会耗费非常长的时间,如果你进一步检查细节,就会发现绝大部分时间都耗费在磁盘自检(fsck)上了,有时候遇到时间比较紧急的情况,磁盘自检耗费的时间非常长,真的是让人心焦火急的!如下截图所示
关于磁盘自检,如果是新手,肯定都会有不少疑惑,下面从这几个方面一一讲述,希望能解答你的疑惑。下面实验版本为Red Hat Enterprise Linux Server release 5.7,请注意不同版本之间的区别。
为什么磁盘需要自检呢?
现在的文件系统已经非常可靠,极少出现问题,但是总有意外或错误出现的概率,例如断电、硬件失败等,所以Linux会使用fsck来检查和修复文件系统。fsck命令(filesystem consistency check),意思是文件系统一致性检查。fsck能够安全、自动修复下面这5类问题:
未被引用的inode;
难以置信的超大链接数
没有记录在磁盘块映射表中的未用数据块
列出的空闲数据块还在某个文中使用;
超级块中不正确的汇总信息。
通常情况下,硬盘在启动时使用fsck -p来进行检查,它将检查/etc/fstab中列出的所有本地文件系统。大多数系统设置为启动时自动运行fsck,希望任何错误在系统使用前被检测到,并得到修正。因为使用错误的文件系统可能使得问题变得更加糟糕。所以磁盘自检是有必要的,这也是为什么大多数系统将其设置为启动时自动运行fsck(有一定规律,不是每次启动都会做磁盘自检,取决于你的配置,下面阐述),所以没有特殊必要的话,最好不要取消磁盘自检。
什么时候磁盘才会自检?
上面所述,并不是每次重启都会做磁盘自检,那么磁盘自检的规律如何查看呢? 此时需要借助tune2fs命令
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -E "Maximum mount count|Check interval"
- Maximum mount count: -1
- Check interval: 604800 (1 week)
- [root@DB-Server ~]#
如上所示,Check interval表示执行磁盘自检fsck的时间间隔,Maximum mount count表示强制自检的挂载次数,即达到最大挂载次数后,再次开机时就会强制自检。上面信息告诉我们,磁盘自检的时间间隔为一周,也就是7天。Maximum mount count 值为-1表示禁用这个功能。
如何更改磁盘自检设置?
加入我要将磁盘自检的时间间隔设置为一个月,那么可以如下设置
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: -1
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 604800 (1 week)
- Next check after: Sun Jan 11 21:34:24 2015
- [root@DB-Server ~]# tune2fs -i 30 /dev/sda2
- tune2fs 1.39 (29-May-2006)
- Setting interval between checks to 2592000 seconds
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: -1
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 2592000 (1 month)
- Next check after: Tue Feb 3 21:34:24 2015
- [root@DB-Server ~]#
如果我要设置磁盘挂载2次就必须进行磁盘自检,那么可以如下设置:
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: -1
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 2592000 (1 month)
- Next check after: Tue Feb 3 21:34:24 2015
- [root@DB-Server ~]# tune2fs -c 2 /dev/sda2
- tune2fs 1.39 (29-May-2006)
- Setting maximal mount count to 2
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: 2
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 2592000 (1 month)
- Next check after: Tue Feb 3 21:34:24 2015
- [root@DB-Server ~]#
当然,你也可以一起设置,如下所示
- [root@DB-Server ~]# tune2fs -i 60 -c 10 /dev/sda2
- tune2fs 1.39 (29-May-2006)
- Setting maximal mount count to 10
- Setting interval between checks to 5184000 seconds
- You have new mail in /var/spool/mail/root
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: 10
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 5184000 (2 months)
- Next check after: Thu Mar 5 21:34:24 2015
- [root@DB-Server ~]#
如何取消磁盘自检设置?
如何取消、关闭磁盘自检呢?我们可以有下面几种方式:
1: 使用命令tune2fs -i 0 -c 0 取消磁盘自检,如下所示
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: 10
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 5184000 (2 months)
- Next check after: Thu Mar 5 21:34:24 2015
- [root@DB-Server ~]# tune2fs -i 0 -c 0 /dev/sda2
- tune2fs 1.39 (29-May-2006)
- Setting maximal mount count to -1
- Setting interval between checks to 0 seconds
- [root@DB-Server ~]#
- [root@DB-Server ~]# tune2fs -l /dev/sda2 | grep -i -E 'mount|check'
- Last mounted on: <not available>
- Default mount options: user_xattr acl
- Last mount time: Mon Jul 4 11:30:54 2016
- Mount count: 94
- Maximum mount count: -1
- Last checked: Sun Jan 4 21:34:24 2015
- Check interval: 0 (<none>)
- [root@DB-Server ~]#
2:修改/etc/fstab中第六列的值
/etc/fstab分区表中第六列(pass):指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
- [root@DB-Server ~]# more /etc/fstab
- LABEL=/ / ext3 defaults 1 1
- LABEL=/boot /boot ext3 defaults 1 2
- tmpfs /dev/shm tmpfs defaults 0 0
- /dev/mapper/VolGroup01-LogVol00 /u02 ext3 defaults 0 2
- /dev/VolGroup02/LogVol00 /u05 ext3 defaults 1 2
- #/dev/VolGroup03/LogVol00 /u06 ext3 defaults 1 1
- devpts /dev/pts devpts gid=5,mode=620 0 0
- sysfs /sys sysfs defaults 0 0
- proc /proc proc defaults 0 0
- LABEL=SWAP-sda3 swap swap defaults 0 0
- [root@DB-Server ~]# more /etc/fstab
- LABEL=/ / ext3 defaults 1 0
- LABEL=/boot /boot ext3 defaults 1 0
- tmpfs /dev/shm tmpfs defaults 0 0
- /dev/mapper/VolGroup01-LogVol00 /u02 ext3 defaults 0 0
- /dev/VolGroup02/LogVol00 /u05 ext3 defaults 1 0
- #/dev/VolGroup03/LogVol00 /u06 ext3 defaults 1 0
- devpts /dev/pts devpts gid=5,mode=620 0 0
- sysfs /sys sysfs defaults 0 0
- proc /proc proc defaults 0 0
- LABEL=SWAP-sda3 swap swap defaults 0 0
- You have new mail in /var/spool/mail/root
- [root@DB-Server ~]#
关于这两者的优先级,我测试过,即使已经满足了Maximum mount count和Check interval里面的条件,如果在/etc/fstab里面关闭了磁盘自检,那么在重启时,并不会做磁盘自检,也就是说/etc/fstab设置里面的优先级要高一些。
3:使用参数-f 跳过自检
- [root@DB-Server ~]# shutdown -rf now
这种方式是临时的,不需要修改系统配置。
4:在/boot/grub/grub.conf 中添加fastboot,如下所示
- [root@DB-Server /]# cd /boot
- [root@DB-Server boot]# ls
- config-2.6.18-274.el5 grub initrd-2.6.18-274.el5.img lost+found symvers-2.6.18-274.el5.gz System.map-2.6.18-274.el5 vmlinuz-2.6.18-274.el5
- [root@DB-Server boot]# cd grub/
- [root@DB-Server grub]# ls
- device.map fat_stage1_5 grub.conf jfs_stage1_5 minix_stage1_5 splash.xpm.gz stage2 vstafs_stage1_5
- e2fs_stage1_5 ffs_stage1_5 iso9660_stage1_5 menu.lst reiserfs_stage1_5 stage1 ufs2_stage1_5 xfs_stage1_5
- [root@DB-Server grub]# more grub.conf
- # grub.conf generated by anaconda
- #
- # Note that you do not have to rerun grub after making changes to this file
- # NOTICE: You have a /boot partition. This means that
- # all kernel and initrd paths are relative to /boot/, eg.
- # root (hd0,0)
- # kernel /vmlinuz-version ro root=/dev/sda2
- # initrd /initrd-version.img
- #boot=/dev/sda
- default=0
- timeout=5
- splashimage=(hd0,0)/grub/splash.xpm.gz
- hiddenmenu
- title Red Hat Enterprise Linux Server (2.6.18-274.el5)
- root (hd0,0)
- kernel /vmlinuz-2.6.18-274.el5 ro root=LABEL=/ rhgb quiet
- initrd /initrd-2.6.18-274.el5.img fastboot
- You have new mail in /var/spool/mail/root
- [root@DB-Server grub]#
kernel /vmlinuz-2.6.18-274.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-274.el5.img fastboot
如何强制下次重启磁盘自检?
如何强制系统下次root时,进行磁盘自检?
方法1: 使用tune2fs调整Maximum mount count和Check interval的值,使其下次重启时满足磁盘自检。
方法2:关于这个,在RHEL中,你可以在/etc/rc.sysinit 中看到如下代码(Debian or Ubuntu Linux下查看/etc/init.d/checkfs.sh)如下所示:
所以,你只需要创建一个forcefsck文件,下次重启时,就能强制其进行磁盘自检。
- [root@DB-Server /]# touch /forcefsck
- [root@DB-Server /]# reboot
- Broadcast message from root (pts/1) (Mon Jul 4 14:33:59 2016):
- The system is going down for reboot NOW!
重启过程中,你就会看到磁盘自检。重启后,你会发现刚才生成的forcefsck文件已经不见了。
方法3:使用shutdown相关参数强制磁盘自检
[root@DB-Server /]# man shutdown
# shutdown -rF now
参考资料:
http://www.cyberciti.biz/faq/linux-force-fsck-on-the-next-reboot-or-boot-sequence/
www.cyberciti.biz/faq/linux-unix-bypassing-fsck/
Linux 磁盘自检介绍的更多相关文章
- Linux磁盘分区介绍
分区?我们不是已经在BIOS界面分区好了吗?如果领导给你一块磁盘,你怎么用呢?所以就有了分区工具(fdisk和parted),fdisk工具只针对小于2T磁盘分区,且是交互式的:parted很强大,通 ...
- <实训|第七天>横扫Linux磁盘分区、软件安装障碍附制作软件仓库
期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...
- Linux磁盘的分区操作
1.Linux磁盘分区介绍 Linux磁盘分区主要有两种方式,一种是MBR,另一种是GPT.根据Linux磁盘分的大小,来选择一种分区方式. --MBR分区格式:最大支持 2 TB 的磁盘.--GPT ...
- Linux系统启动过程介绍
Linux系统启动过程介绍 学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程. 1.BIOS自检:当开机的时候 ...
- Linux 磁盘分区管理
Linux 磁盘管理进阶 磁盘分区介绍 基本分区(primary partion) 基本分区也称主分区,引导分区.每块磁盘分区主分区与扩展分区加起来不能大于四个. 基本分区创建后可以立即使用,但是有分 ...
- 【Linux开发】Linux磁盘管理
第八章 Linux磁盘管理 [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的:df常用参数有 –i -h -k ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- Linux性能工具介绍
l Linux性能工具介绍 p CPU高 p 磁盘I/O p 网络 p 内存 p 应用程序跟踪 l 操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l 应用程序的性能问题/功能问 ...
随机推荐
- Node.js 爬虫初探
前言 在学习慕课网视频和Cnode新手入门接触到爬虫,说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路 ...
- 我的runtime学习笔记
0.简介: OC方法不同于C语言函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用. 至于其他理论上的东西不必讲太多,编程讲的就 ...
- Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署
本系列演示如何使用 Rafy 领域实体框架快速转换一个传统的三层应用程序,并展示转换完成后,Rafy 带来的新功能. <福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!> ...
- 那些年用过的xUnit.net的简单用法
0x01 前言 单元测试,总是伴随着我们的开发过程,优劣自行google.当然呢,不排除有些公司是不做单元测试的, 但是呢,学多一点东西用来防身还是可以的. 0x02 简单的Demo 写个两数求和的方 ...
- xml html entity 列表
Name Character Unicode code point (decimal) Standard Description quot " U+0022 (34) XML 1.0 dou ...
- WinFrom 公共控件 Listview 的使用
Listview绑定数据库数据展示与操作使用 1.拖一个Listview控件到项目中先将视图改为Details 2.编辑列 设置列头 添加columnHeader成员 Text 是显示的名称 3. ...
- 实用的CSS3属性和使用技巧
CSS可以改进网站的设计并且开拓网站设计更多的可能性,可以令你的网页更具吸引力.对于前端开发者.网站设计师来说,掌握并熟练应用CSS是一项必不可少的技能. 下面列出了一些非常实用的CSS3属性和使用技 ...
- 解决使用Skia图形库时遇到的几个问题
Skia是一个开源的2D图形库,提供通用的API,适用于工作中遇到的各种硬件和软件平台.这是谷歌浏览器Chrome OS,Android的图形引擎,Mozilla Firefox浏览器和Firefox ...
- 使用pyinstaller打包Python应用,生成EXE执行文件
在命令行中切换到要打包的程序所在目录,或者在程序目录打开命令行,直接输入下面的指令即可pyinstaller -F xxx.py pyinstaller -F -w -i manage.ico app ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-4.设备驱动管理器的设计
目 录 第四章 设备驱动管理器的设计... 2 4.1 接口定义... 2 4.2 设备容器... 7 4.3 ...