Linux常见故障及修复方法
Posted l1-5551
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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引导程序遭到破坏,重启显示
三.遗忘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
以上是关于Linux常见故障及修复方法的主要内容,如果未能解决你的问题,请参考以下文章