Linux 磁盘自检介绍

本文发布时间: 2019-Mar-22
在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: -1Check 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: -1Last checked: Sun Jan 4 21:34:24 2015Check interval: 604800 (1 week)Next check after: Sun Jan 11 21:34:24 2015[root@DB-Server ~]# tune2fs -i 30 /dev/sda2tune2fs 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: -1Last checked: Sun Jan 4 21:34:24 2015Check 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: -1Last checked: Sun Jan 4 21:34:24 2015Check interval: 2592000 (1 month)Next check after: Tue Feb 3 21:34:24 2015[root@DB-Server ~]# tune2fs -c 2 /dev/sda2tune2fs 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: 2Last checked: Sun Jan 4 21:34:24 2015Check 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/sda2tune2fs 1.39 (29-May-2006)Setting maximal mount count to 10Setting interval between checks to 5184000 secondsYou 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: 10Last checked: Sun Jan 4 21:34:24 2015Check 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: 10Last checked: Sun Jan 4 21:34:24 2015Check interval: 5184000 (2 months)Next check after: Thu Mar 5 21:34:24 2015[root@DB-Server ~]# tune2fs -i 0 -c 0 /dev/sda2tune2fs 1.39 (29-May-2006)Setting maximal mount count to -1Setting 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 aclLast mount time: Mon Jul 4 11:30:54 2016Mount count: 94Maximum mount count: -1Last checked: Sun Jan 4 21:34:24 2015Check 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 1LABEL=/boot /boot ext3 defaults 1 2tmpfs /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 1devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0LABEL=SWAP-sda3 swap swap defaults 0 0[root@DB-Server ~]# more /etc/fstab LABEL=/ / ext3 defaults 1 0LABEL=/boot /boot ext3 defaults 1 0tmpfs /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 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0LABEL=SWAP-sda3 swap swap defaults 0 0You 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]# lsconfig-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]# lsdevice.map fat_stage1_5 grub.conf jfs_stage1_5 minix_stage1_5 splash.xpm.gz stage2 vstafs_stage1_5e2fs_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/sdadefault=0timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Red Hat Enterprise Linux Server (2.6.18-274.el5) root (hd0,0)


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表