• Linux常见故障及修复方法


    一:MBR扇区故障修复

    【root@www~】#mkdir  /backup

    【root@www~】#mount  /dev/sdb1  /backup /    ##新建个硬盘分区,并挂载到新建文件夹内

    【root@www~】#dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1  ##备份MBR扇区512字节

    【root@www~】#dd if=/dev/zero of=/dev/sda bs=512 count=1   ##往MBR扇区内覆盖,模拟MBR故障

    【root@www~】#reboot            //提前设置光盘引导重启

    进入紧急救援模式

    Bash-4.1#mkdir  /backup     ##挂载点名字可以随便起名,不做要求

    Bash-4.1#mount /dev/sdb1  /backup  ##因为sda 是内核启动的地方无法读取

    Bash-4.1#ls  /backup

    Lost+found   sda.mbr.bak

    Bash-4.1#dd if=/backup/sda.mbr.bak of=/dev/sda bs=512  count=1  ##写入扇区,完成修复

    Bash-4.1#reboot

    二.GRUB引导故障

    1.MBR中的grub引导程序遭到丢失,重启显示“grub>”提示符

    方法一:尝试手动输入(不建议)

    【root@www~】#mount /dev/sdb1 /backup/

    【root@www~】# cd /boot/grub2/

    【root@www~】#cp grub.cfg  /backup/

    【root@www~】#mv grub.cfg grub.cfg.bak   ##模拟丢失

    【root@www~】#cat /boot/grub2/grub.cfg    ##查看内核版本等,并记下来

    【root@www~】#reboot

    Greb>省略

    2 MBR中的grub引导程序遭到破坏,重启显示

    方法二:进入急救模式,重建grub程序。需要提前备份MBR前446字节

    【root@www~】#dd if=/dev/zero  of=/dev/sda bs=446 count=1 ##模拟损坏

    【root@www~】#reboot

    进入紧急救援模式

    Bash-4.1#chroot /mnt/sysimage    ##切换硬盘

    Sh-4.1#mount /dev/sdb1 /backup/ 

    Sh-4.1#dd if=/backup/sda.mbr.bak of=/dev/sda bs=446 count=1

    或者Bash-4.1#cp /backup/grub.cfg    /boot/grub2/  ##直接复制

    Exit

    Exit

    方法三:若无MBR备份,进入急救模式,重新安装grub程序

    【root@www~】#dd if=/dev/zero  of=/dev/sda bs=446 count=1 ##模拟损坏

    进入紧急救援模式

    Bash-4.1#chroot /mnt/sysimage    ##切换硬盘

    Bash-4.1#grub2-install /dev/sda

    Bash-4.1#sync   同步数据

    三.遗忘root密码 并修改

    方法一。

    进入紧急救援模式

    Bash-4.1#passwd root 

    即可修改密码

    方法二

     

    按e  进入

    按下 ctrl+x  进入单用户模式

    输入  passwd root  即可修改

    exec  /sbin/init 退出单用户模式

    方法三

    进入单用户模式

    输入  vim /etc/shadow   把密文 全删了  没有  密码  登录设置

    四,误删/root目录 恢复方法

    root@www~】#rm -rf /boot/       ##模拟实况

    进入紧急救援模式

    Bash-4.1#chroot /mnt/sysimage    ##切换硬盘

    Bash-4.1#mkdir /media/

    Bash-4.1#mount /dev/sr0  /media

    Bash-4.1# rpm -ivh  /media/Packages/kernel-3.10.0.229.e17.x86 64.rpm  --force(看情况加)

    Bash-4.1#ls boot 

    Bash-4.1# grub2-install /dev/sda

    Bash-4.1# grub2-mkconfig -o /boot/grub2/grub.cfg(grub2 mkconfig>/boot/grub2/grub.cfg也可以用这个)

    Bash-4.1#sync

    Bash-4.1#reboot

    五.文件系统修复

    [root@localhost ~]# fdisk  /dev/sdb

    [root@localhost ~]# mkfs.ext4 /dev/sdb1

    [root@localhost ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4  ##模拟损坏

    [root@localhost ~]# mount /dev/sdb1 /data/

    mount: /dev/sdb1 写保护,将以只读方式挂载

    mount: 文件系统类型错误、选项错误、/dev/sdb1 上有坏超级块、

           缺少代码页或助手程序,或其他错误

           有些情况下在 syslog 中可以找到一些有用信息- 请尝试

           dmesg | tail  这样的命令看看。

    (若是没损坏则成功挂载,损坏则出现以上情况)

    [root@localhost ~]# fsck -y -t ext4 /dev/sdb1 (这是ext4文件系统恢复,若是xfs则命令:xfs_repair /dev/sdb1)

    fsck,来自 util-linux 2.23.2

    e2fsck 1.42.9 (28-Dec-2013)

    ext2fs_open2: Bad magic number in super-block

    fsck.ext4: 超级块无效, trying backup blocks...

    超级块没有needs_recovery标志,但是日志中没有数据。

    Recovery flag not set in backup 超级块, so running 日志 anyway.

    /dev/sdb1: 正在修复日志

    第一步: 检查inode,块,和大小

    第二步: 检查目录结构

    第3步: 检查目录连接性

    Pass 4: Checking reference counts

    第5步: 检查簇概要信息

    /dev/sdb1: ***** 文件系统已修改 *****

    /dev/sdb1: 11/655360 files (0.0% non-contiguous), 83137/2621440 blocks

    [root@localhost ~]# mount /dev/sdb1 /data/  ##挂载成功

    六.空间耗尽故障

    [root@localhost ~]# fdisk /dev/sdb

    [root@localhost ~]# mkfs.ext4 /dev/sdb1

    [root@localhost ~]# mkdir /disk

    [root@localhost ~]# mount /dev/sdb1  /maomao/

    [root@localhost maomao]# df -i

    文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点

    /dev/sdb1                 655360      10   655350       1% /data

    第二,创建多个文件,耗尽容量

    [root@localhost ~]# cd /maomao/

    [root@localhost maomao]# touch {1..115360} ##由于数量太大 就不创建满了

    [root@localhost maomao]# df -i

    文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点

    /dev/sdb1                 655360  115370   539990      18% /data

    第四,修复磁盘耗尽故障

    [root@localhost maomao]# sudo find /maomao -type f -size 0 -exec rm {} ;

    (遍历寻找0字节的文件,并删除)

    也可以格式化

    [root@localhost maomao]# df -i

    文件系统                   Inode 已用(I)  可用(I) 已用(I)% 挂载点

    /dev/sdb1                 655360      10   655350       1% /data

    也可以改变inode大小

    [root@localhost ~]# fdisk /dev/sdb

    [root@localhost ~]# mkfs.ext3 /dev/sdb1 -N 500000
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    501760 inodes, 4194304 blocks
    209715 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=4294967296
    128 block groups
    32768 blocks per group, 32768 fragments per group
    3920 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000

    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成

    [root@localhost ~]# mkdir /aa
    [root@localhost ~]# mount /dev/sdb1 /aa
    [root@localhost ~]# df -i
    文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点

    /dev/sdb1 501760 11 501749 1% /aa

    七.磁盘坏道故障修复

    [root@localhost ~]# badblocks -sv /dev/sdb    (检查是否有坏道)

    正在检查从 0 到 41943039的块

    Checking for bad blocks (read-only test): done                                                

    Pass completed, 0 bad blocks found. (0/0/0 errors)

    (当有硬盘坏道时,通常在dmesg输出的信息中会有 Buffer I/O error,)

    2. 逻辑坏道修复方法

    ①、badblocks -s -w /dev/sda END START (END代表需要修复的扇区末端,START代表需要修复的扇区起始端)
    ②、fsck -a /dev/sda

    修复后再用badblocks -s -v -o /root/bb.log /dev/sda监测看是否还有坏道存在,如果坏道还是存在的话说明坏道属于硬盘坏道。硬盘坏道要用隔离方法,首先记录监测出的硬盘坏道然后分区的时候把硬盘坏道所在的扇区分在一个分区(大小一般大于坏扇区大小),划分出的坏道分区不使用即可达到隔离的目的

    3. 0磁道坏道和硬盘坏道(准备换硬盘)

    0磁道坏道的修复方法是隔离0磁道,使用fdsk划分区的时候从1磁道开始划分区。

    如果是硬盘坏道的话,只能隔离不能修复

     方法二

    检查命令:

    [root@localhost ~]# badblocks -s -v -o /root/bb.log /dev/sda

    检查 /home 是否有坏道,则命令如下:

    [root@localhost ~]# badblocks -s -v -o /root/bb-home.log /dev/mapper/centos-home

    逻辑坏道修复方式

    下面是badblocks在/dev/mapper/ centos-home e分区检查出的坏道列表:

    217874591

    217874592

    217874593

    217874594

    217874595

    先备份数据

    [root@localhost ~]# dd if=/dev/mapper/centos-home 

  • 相关阅读:
    Android ble 蓝牙4.0 总结
    Java byte数据类型详解
    Cocos2d-X在SwitchControl使用
    【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大
    poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
    Akka FSM 源代码分析
    HDU 4828 (卡特兰数+逆)
    [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
    android 中国通信乱码问题
    Recall(检出率)和 Precision(准确性)
  • 原文地址:https://www.cnblogs.com/maoyanqing/p/11314891.html
Copyright © 2020-2023  润新知