linux运维工作常见问题及处理方法(如何快速解决Linux文件系统中的常见故障)

linux运维工作常见问题及处理方法(如何快速解决Linux文件系统中的常见故障)(1)

— 不定时重启故障排查 —

事件基本描述:笔者之前工作过的互联网公司,曾经生产环境的服务器,底层使用KVM做了虚拟化,物理机为IBM的M4和M5,具体型号还需要去IBM官方网站查询,内存为256GB,硬盘采用SATA7200,RAID10级别。

事件表现:服务器的物理机会不定时重启,每次重启都会影响其上面的所有虚拟机的运行,进而影响业务。

追踪和排查:笔者入职不久后便开始对此故障进行追踪和排查,在3~6个月的时间里,从各个方面进行排查,排查方式和思路如下图所示。

linux运维工作常见问题及处理方法(如何快速解决Linux文件系统中的常见故障)(2)

排查结果:最终使用dmesg指令找到如下的一条报错记录。

End of file while reading data:

Input/output error

解决方案:

(1)升级IBM服务器网卡驱动

(2)引入DELL服务器测试(DELL服务器均未出现服务器不定时重启现象,直到现在)

— 文件系统只读解决方案 —

生产服务器经常会遇到系统文件变为只读的事件,那么该如何进行修复呢?

1.重启系统看是否可以自动修复。重新启动操作系统,让系统自动修复受损的文件系统,看是否可以自动修复。

2.使用如下指令进行自动修复。

fsck -y /dev/sda1

用”-y”选项来执行该命令对硬盘进行检查和修复。使用如下指令添加参数:

fsck -y -C -t ext3 /dev/sda1

一般情况下修复完成后,所有文件移动到 lost found目录,文件名会被改变,-C 显示进度条 -t 指定文件系统类型 -y 默认自动yes修复。

如果fsck修复完成后,启动系统依然报错,可以使用如下指令查看分区结构:查看ro挂载的分区,如果发现有ro,就重新mount。

umount /dev/sda1

mount /dev/sda1 /mnt

如果发现有提示“device is busy”,找到是什么进程使得他busy。

fuser -m /boot

##将会显示使用这个模块的pid

fuser -mk /boot

##将会直接kill那个pid

然后重新使用mount指令挂载即可。直接remount。

注意事项:手动使用fsck修复文件系统时,要将分区卸载,然后备份重要数据,以免在修复过程中造成数据丢失和损坏。

— 非正常断电导致数据损坏 —

先查看服务器基础环境信息,如下代码查看服务器有几块磁盘。

[root@disk-test ~]#cat /proc/partitions major minor #blocks name 8 0 10485760 sda 8 1 512000 sda1 8 2 9972736 sda2 8 16 2097152 sdb 253 0 8921088 dm-0 253 1 1048576 dm-1

然后,模拟超级块损坏。用dd命令将sdb磁盘第一个block的内容抹除。

[root@disk-test ~]#dd if=/dev/zero of=/dev/sdb bs=1 count=8192 8192 0 records in 8192 0 records out 8192 bytes (8.2 kB) copied, 0.042161 s, 194 kB/s [root@disk-test ~]#dumpe2fs /dev/sdb dumpe2fs 1.41.12 (17-May-2010) dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb Couldn't find valid filesystem superblock.

当尝试打开 /dev/sdb 时找不到有效的文件系统超级块。

[root@disk-test ~]#tune2fs -l /dev/sdb tune2fs 1.41.12 (17-May-2010) tune2fs: Bad magic number in super-block while trying to open /dev/sdb Couldn't find valid filesystem superblock.

和上面代码拨错一模一样,系统找不到磁盘超级块信息。

这时候我们根本无法从dumpe2fs和tune2fs看到Backup superblock的位置,都找不到superblock备份的位置该怎么恢复主superblock呢 注意下面的命令都是针对ext类文件系统的,其它文件系统不适用 先要找到superblock备份的几个位置,这需要利用mke2fs这个命令 mke2fs:create an ext2/ext3/ext4 filesystem mke2fs这个命令 mke2fs -n 设备名 -n 选项 ,mke2fs 不是真的在设备上创建文件系统,它只是模拟这个过程并显示。

最后,修复损坏数据。利用下面的命令就可以找到超级块的备份位置了。然后我们就可以再利用系统提供的另一个磁盘命令e2fsck命令进行恢复,它有一个-b选项。

由于我的操作系统是ext4格式的,也可以用fsck.ext4 -b 32768 /dev/sdb,效果一样。

[root@disk-test ~]#mke2fs -n /dev/sdb mke2fs 1.41.12 (17-May-2010) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912

— 文件被删除磁盘没释放空间 —

某研发人员:能帮忙看一下这台机器的空间为什么没有了吗 。??原来是applog这个目录是日志文件太多,现在日志清楚了 这个文件没有了现在还是这样。

笔者的回答:文件被清除后,还有进程在维持,需重启相关进程才可生效,如下图所示。

linux运维工作常见问题及处理方法(如何快速解决Linux文件系统中的常见故障)(3)

— 解决运维问题的两大能力 —

1.打下扎实的基础。学习要掌握Linux操作系统分区最佳经验分享、日常运维中磁盘和文件管理的方方面面,如,文件系统故障如何处理?服务器运行过程中如何对硬件进行监控,一旦遇到问题,如何排查?

2.形成资源圈。学习的过程,是提高的过程,更是提高自我认知的过程,此时,若有兴趣爱好者一同学习和探讨,岂不快哉?

关注安徽思恒信息科技有限公司,了解更多技术内容……

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页