09 引导过程与故障修复
- 系统引导流程
2.系统引导级别
runlevels——运行级别
0:关机状态,使用该级别时会关机
1:单用户模式,无需密码验证即可登录,用于系统维护
2:字符界面的多用户模式
3: 字符界面的完整多用户模式,大多数服务器运行在此级别
4:未分配使用
5:图形界面的多用户模式,提供了图形桌面操作环境
6:重启
3. 引导级别查看及切换
init命令 0/1/2/3/4/5/6
- MBR修复
l MBR备份:
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount /dev/sdb1 /abc
[root@localhost ~]# dd if=/dev/sda of=/abc/sda-mbr-bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000224936 秒,2.3 MB/秒
l MBR破坏
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000185039 秒,2.8 MB/秒
l MBR恢复
先挂载系统光盘,从光盘进入安全模式
按方向键进入boot
按shift键和“+”键将光盘启动移动到第一位,按F10保存退出,按yes确认
1.选择第三项Troubleshooting
2.选第二项
3.选Continue
4.
5.
- Grub修复
l 系统备份:
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount /dev/sdb1 /abc
[root@localhost ~]# dd if=/dev/sda of=/abc/sda-mbr-bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000224936 秒,2.3 MB/秒
[root@localhost ~]#cp /boot/grub2/grub.cfg /abc/grub.cfg
l Grub修复
先从光盘进入安全模式,1.2.3.4步同上
l 文件损坏
l 引导程序损坏
- /boot目录误删除
l /boot恢复
先从光盘进入安全模式,1.2.3.4步同上
5.进入硬盘
6.挂载光盘恢复boot
7.安装grub2
8.重建grub2.cfg文件
- root密码修复
l 方法一,进入单用户模式
1.进入开机界面按e
2.
按Ctrl+x执行
3.进入单用户模式
l 方法二
1.进入硬盘模式
2.编辑shadow文件
3.删除密文
10. 文件系统修复
xfs文件系统修复:
破坏:
[root@localhost ~]# mkdir /d
[root@localhost ~]# mount /dev/sdb1 /d
[root@localhost ~]# touch /d/{a..f}
[root@localhost ~]# ls /d
a b c d e f lost+found
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
记录了4+0 的读入
记录了4+0 的写出
2048字节(2.0 kB)已复制,0.000218494 秒,9.4 MB/秒
[root@localhost ~]# mount /dev/sdb1 /d
mount: /dev/sdb1 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”
修复:
[root@localhost ~]# xfs_repair /dev/sdb1
[root@localhost ~]# mount /dev/sdb1 /d
[root@localhost ~]#
ext4文件系统修复:
破坏:
[root@localhost ~]# mkdir /d
[root@localhost ~]# mount /dev/sdb1 /d
[root@localhost ~]# touch /d/{a..f}
[root@localhost ~]# ls /d
a b c d e f lost+found
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
记录了4+0 的读入
记录了4+0 的写出
2048字节(2.0 kB)已复制,0.000218494 秒,9.4 MB/秒
[root@localhost ~]# mount /dev/sdb1 /d
mount: /dev/sdb1 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”
修复:
[root@localhost ~]# fsck -y ext4 /dev/sdb1
/dev/sdb1: ***** 文件系统已修改 *****
/dev/sdb1: 25/655360 files (0.0% non-contiguous), 83137/2621440 blocks
[root@localhost ~]# mount /dev/sdb1 /d
[root@localhost ~]# ls /d
a b c d e f g h i j k l lost+found m n
11. 空间耗尽故障
1.添加一块硬盘,分区格式化,挂载
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkdir /disk
[root@localhost ~]# mount /dev/sdb1 /disk/
[root@localhost ~]# df –I
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 65536 10 65526 1% /disk
第二,创建多个文件,耗尽容量
[root@localhost ~]# cd /disk/
[root@localhost disk]# touch {1..65526}
第三,验证文件占用情况
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 65536 65536 0 100% /disk
3>尝试创建文件
[root@localhost disk]# touch q
touch: 无法创建"q": 设备上没有空间
4>查看磁盘剩余空间
[root@localhost ~]# df -hT /disk/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb1 ext4 976M 4.3M 905M 1% /disk
第四,修复磁盘耗尽故障
[root@localhost ~]# mv 重要数据 /root
[root@localhost ~]#umount /dev/sdb1
[root@localhost ~]#mkfs.ext4 /dev/sdb1
[root@localhost ~]# df -i /dev/sdb1
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1 65536 11 65525 1% /disk
[root@localhost ~]# mount /dev/sdb1 /disk/
[root@localhost ~]# mv重要数据 /disk
12. 磁盘坏道故障
dmesg
当有硬盘坏道时,通常在dmesg输出的信息中会有 Buffer I/O Error,所以经常检查dmesg的输出可以及时发现是否存在硬盘问题。
badblocks
adblocks 可以用来检查硬盘是否有坏道,也可以修复坏道,但仅限于逻辑坏道,物理坏道只能更换硬盘。
检查命令:
[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 skip=217874591 of=/tmp/217874591-217874595.dat count=5
修复
[root@localhost ~]# umount /dev/mapper/ centos-home(umount可能出现"Device busy"的错误, 解决方法fuser -m /home //列出使用/home的进程ID fuser -m -v -i -k /home //列出PID并kill掉进程)
修复命令:
[root@localhost ~]# badblocks -s -w /dev/mapper/ centos-home 217874595 217874591
修复后检查
[root@localhost ~]# badblocks -s -v /dev/mapper/ centos-home 217874595 217874591
恢复数据(可选)
[root@localhost ~]# dd if=/tmp/217874591-217874595.dat of=/dev/mapper/ centos-home
重新分区检查
[root@localhost ~]# badblocks -s -v -o /root/bb-home.log /dev/mapper/ centos-home
若没有坏道说明修复已完成,若有坏道可以尝试重复以上方法。
完成后重新mount分区
[root@localhost ~]# mount /dev/mapper/ centos-home