• Linux常见系统故障


    Linux常见系统故障

    1.修复MBR扇区故障

    2.修复GRUB引导故障

    3./etc/inittab文件丢失

    4.遗忘root用户密码

    5.修复文件系统

    6.磁盘资源耗尽故障

    一、修复MBR扇区故障

    1.关机添加一块硬盘,开机查看硬盘设备分区列表,是否存在/dev/sdb设备信息

      

    2.对新硬盘分区

    2.1新建一个主分区

      

    2.2新建一个扩展分区

      

    2.3新建两个逻辑分区,然后保存

      

    3.查看sdb中分区列表信息

    fdisk -l /dev/sdb

      

    4.格式化文件系统,这里暂时只格式化/dev/sdb1

    mkfs -t ext4 /dev/sdb1

     

    5.创建一个挂载点,挂载sdb1分区

    mkdir /sdb1

    mount /dev/sdb1 /sdb1

     

    6.备份MBR扇区数据

    dd if=/dev/sda of=/sdb1/sda.mbr.bak bs=512 count=1

      

    7.模拟MBR被破坏的故障

    dd if=/dev/zero of=/dev/sda bs=512 count=1

      

    8.然后重启系统,发现系统无法重启

     

    9.从备份文件中恢复MBR扇区

    添加虚拟机与光盘的连接,重启系统,自动进入如下界面,现在第三个(救援模式)

      

    10.系统加载后,一直下一步,直到出现如下图,选择第一个

      

    11.执行fdisk -l 能看到sdb1分区,看不到sda设备,因为sda设备的MBR被破坏(linux 系统的分区记录存放在mbr中)

      

    12.在急救模式下的虚拟磁盘中建立sdb1分区的挂载点目录

    mkdir  /sdb1

    mount /dev/sdb1  /sdb1

    dd if=/sdb1/sda.mbr.bak  of=/dev/sda bs=512 count=1

      

    13.重启系统,然后系统就能正常工作了

    二、修复GRUB引导故障

    1.备份grub.conf文件(建议备份到第2块磁盘中)

    mkdir  /backup

    mount  /dev/sdb1  /backup

    cp  /boot/grub/grub.conf  /backup/grub.conf.bak

      

    2.模拟破环grub.conf文件

    rm  -rf  /boot/grub/grub.conf

      

    3.重启系统,发现系统无法正常加载

      

    4.进入救援模式,此时只能进入bios设置boot启动顺序,把光盘引导调整到前面,然后保存,此时系统会加载光盘

      

    5.查看硬盘分区情况,此时可以看到两个硬盘,因为grup配置文件损坏,但还是会成功加载分区记录

      

    6.在急救模式下的虚拟磁盘中建立sdb1分区的挂载点目录,此时需要创建两个挂载点,以及挂载sda1(grup文件所在分区)和sdb1(备份grup配置文件所在分区)

    mkdir /backup(在急救模式下的虚拟磁盘中建立sdb1分区的挂载点目录)

    mkdir  /sda1(创建sda1分区的挂载点目录)

    mount  /dev/sdb1  /backup

    mount  /dev/sda1  /sda1

    cp  /backup/grub.conf.bak  /sda1/grub/grub.conf

      

    7..重启系统,然后系统就能正常工作了

    三、/etc/inittab文件丢失

    1.备份/etc/inittab文件

    cp  /etc/inittab  /root/inittab.bak

      

    2.模拟inittab文件丢失

    rm  -rf  /etc/inittab

      

    3.重启系统进入文本命令模式,恢复inittab文件  #重新系统后,系统进入文本命令模式,因为运行级别配置文件(inittab)丢失

    cp  /root/inittab.bak  /etc/inittab

       

    4.重启系统,然后系统就能正常进入图形界面了

      

    四、遗忘root用户密码

    解决方法:引导进入单用户模式,然后重设密码

    1.重启系统,在引导界面按e键

      

    2.在按e,进入然后选第二项

      

    3.再按e进入,敲空格,输入1,然后回车   #1代表单用户模式

      

    4.上一步,回车后又返回以前,按b,重新引导,然后就进入单用户模式了,然后修改root用户密码

      

    5.重启系统,用修改过的密码登录

    五、修复文件系统

    故障原因:

                  非正常关机、突然断电、设备读写失误等

                  文件系统的超级块(super-block)信息被破坏

    故障现象

                  无法向分区中读取或写入数据

                  启动后提示“Give root password for maintenance” (启动硬盘super-block被破坏)

    解决办法:

    根据提示输入root口令,进入修复状态

    使用fsck命令进行修复

    1. 模拟对/dev/sdb1分区的破坏操作

     dd if=/dev/zero of=/dev/sdb1 bs=512 count=4

       

    2. 检查是否能挂载该分区

      

    3.上图提示报错,没有指定文件类型,那我们就添加文件类型,但是添加文件类型还是报错,从下图的报错信息中可以看出,真正的原因是因为superblock(超级块出现问题)

      

    4. 对/dev/sdb1分区进行修复

    fsck –y -t ext4 /dev/sdb1

      

    5.再次挂载该分区 无错误提示,修复成功

      

    六、磁盘资源耗尽故障

    故障原因:

    磁盘空间已被大量的数据占满,空间耗尽

    虽然还有可用空间,但文件数i节点耗尽

    故障现象:

    无法写入新的文件,提示“… : 设备上没有空间”

    部分程序无法运行,甚至系统无法启动

    解决思路:

    清理磁盘空间,删除无用、冗余的文件

    转移或删除占用大量i节点的琐碎文件

    进入单用户模式、急救模式进行修复

    为用户设置磁盘配额

    1.这里只测试文件节点耗尽

    2.写一个while 死循环,一直创建空文件,这里以/boot/test为例

    i=1

    while [ 1 ]

    do

     cd /boot/test

     touch "$i".txt

     let "i++"

    done

    3.没有运行脚本之前的/boot/test目录下的节点数

      

    4.运行完脚本之后/boot/test目录下的节点数已经用完,但是磁盘还有剩余空间

      

    5.此时在向/boot/test写入数据,会提示失败,虽然还有空间剩余,这是因为Linux的安全存储机制,只要节点数或者空间任何一个使用完,都不能再进行写入数据

      

    6.解决办法,删除占用大量i节点的琐碎文件

    这里删除/boot/test目录下的所有文件,然后在写入数据测试

    rm -fr   /boot/test/*

      

    7.磁盘配额

    7.1. 磁盘限额需要安装quota软件包 yum install -y quota

    7.2. 启用文件系统的配额支持(添加usrquota、grpquota挂载参数)

    mkdir /sdb1

    chmod 777 /sdb1(为/sdb1授权) 

      

      

    注:第一个字段为被挂载的分区,第二个字段为挂载的目录,第三个字段是被挂载的分区的文件系统类型,后面的几个字段是支持quota的参数。各字段用空格分隔

    reboot重启系统(或mount -a读取/etc/fstab文件,使重新挂载生效),重启进入文本编辑界面按回车

    7.3

    mount  | tail -1(查看是否挂载成功)mount(查看是否挂载成功)

    mount | grep /dev/sdb1

    /dev/sdb1 on /sdb1 type ext4 (rw,usrquota,grpquota)

    ls  /sdb1

    lost+found

       

    7.4检测磁盘配额并创建配额文件 

    quotacheck  -ugcv  /dev/sdb1

    ls -l /sdb1/aquota.*(查看是否生成配额文件)

      

    7.5编辑用户和组帐号的配额设置(edquota命令)

    edquota -u 用户名(编辑用户配额)

    edquota -g 组名(编辑组配额)

    例如:新建用户和组

      

    edquota -u zhangsan  编辑用户配额

    edquota -g students   编辑组配额

      

      

    启用、关闭文件系统的配额功能(quotaon、quotaoff命令)

    quotaon  -ugv /sdb1

      

    普通用户对设置配额的分区(挂载目录)具有写入权限

    chmod  777  /sdb1

    切换到启用配额的用户身份su  -  zhangsan

    切换到设置配额的分区(挂载目录)cd  /sdb1

     

    创建指定数量的文件:使用touch命令,或cp命令

      

    创建指定容量的文件:使用dd命令,或cp命令

    rm  -rf  *.txt

      

    关闭文件系统配额功能

      

  • 相关阅读:
    C/S 随思录
    3dTiles 最后一块拼图:几何误差与屏幕空间误差
    aps.net cannot connect to runtime process
    asp.net web api swagger使用总结
    asp.net webaip 跨域
    LightGBM算法实践
    Zabbix 机器 CPU 飙高 和 时区相差8个小时
    【vue踩坑记录】3、“Error in render: "TypeError: Cannot read property '0' of undefined"”渲染错误问题
    1-关于补码的理解
    vscode快捷键
  • 原文地址:https://www.cnblogs.com/yuzly/p/10646007.html
Copyright © 2020-2023  润新知