Linux常见系统故障及修复

实验环境:RHEL 6.5

一、修复MBR扇区故障

1、关机挂载一块新硬盘,采用默认值完成安装

2、开机进入Linux系统,对新硬盘分区

fdisk  -l(查看硬盘设备分区列表,是否存在/dev/sdb设备信息)

fdisk  /dev/sdb  (对新硬盘sdb进行分区)

3、建立新硬盘的文件系统(格式化文件系统)

3.1 查看sdb分区列表信息

fdisk  -l  /dev/sdb

3.2 格式化分区

mkfs -t ext4 /dev/sdb1  或  mkfs.ext4 /dev/sdb1

3.3 挂载sdb1分区

   mkdir  /sdb1       //创建挂载点

   mount  /dev/sdb1  /sdb1

3.4 备份MBR扇区数据

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

3.5 模拟MBR被破坏的故障

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

3.6 断开与光盘的连接,重启虚拟机。没有光盘引导,系统一直处于如下状态,不能启动

4、连接光盘,RHEL6.5光盘引导,进入急救模式

4.1 从备份文件中恢复MBR扇区

fdisk  -l   (能看到sdb1分区,看不到sda设备,因为sda设备的MBR被破坏)

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

mount  /dev/sdb1  /sdb1

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

4.2 重启虚拟机,系统正常启动。

二、修复GRUB引导故障

        当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。

查看grub配置文件

注:建议保存红色方框内的内容,手动修复时需要输入该内容(root... .img)

本次实验是模拟修复GRUB引导故障的过程。所以需先备份grub.conf文件,再模拟破坏grub.conf文件,最后进行修复。

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

mkdir  /sdb1

mount  /dev/sdb1  /sdb1

cp  /boot/grub/grub.conf  /sdb1/grub.conf.bak

2、模拟破环grub.conf文件

rm  -rf  /boot/grub/grub.conf

3、修复grub引导故障的方式主要有两种

方法一:进入急救模式,从备份文件中恢复grub.conf文件

方法二:手动将grub配置内容输入上去

方法一

1)RHEL6.5光盘引导,进入急救模式

2)从备份文件中恢复grub.conf文件

fdisk  -l (可看到sda、sdb设备)

由于 grub.conf 在boot分区下,所以我们需要查询 boot 分区在哪个分区下。

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

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

mount  /dev/sdb1  /sdb1

mount  /dev/sda1  /sda1

cp  / sdb1/grub.conf.bak  /sda1/grub/grub.conf

3)关闭客户机,进入BIOS界面

方法二

 1)手动将前面建议保存的内容敲上去

grub> root  (hd0,0)                                                          //指定引导分区/boot,(hd0,0) 对应为 /dev/sda1

grub> kernel  /vmlinuz... ro root=/dev/... rhgb quiet        //指定内核文件所在的路径、根分区所在的设备位置

grub> initrd  /initrd-...                                                      //指定引导过程中使用的缓存盘镜像文件位置

grub> boot                                                                      //启动进入系统

2)进入系统后,从备份文件中恢复grub.conf文件

mkdir /sdb1

cp  /sdb1/grub.conf.bak  /boot/grub/grub.conf

三、/etc/inittab文件丢失

1、备份/etc/inittab文件

cp  /etc/inittab  /root/inittab.bak

2、模拟inittab文件丢失

rm   -rf  /etc/inittab

3、重启系统进入文本命令模式,恢复inittab文件

cp  /root/inittab.bak  /etc/inittab

四、遗忘root用户密码

1、引导进入单用户模式,然后重设密码

在引导界面按 'e' 键 — 选子菜单第2项,按 'e' 键 — 敲空格,输入 '1' ,回车 — 输入 'b'  — 执行passwd命令,修改root用户密码

五、修复文件系统

故障原因:

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

       文件系统的超级块(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、检查是否能挂载该分区

mkdir  /sdb1

mount  /dev/sdb1  /sdb1

3、对/dev/sdb1分区进行修复

fsck –y -t ext4 /dev/sdb1

4、再次挂载该分区

mount  /dev/sdb1  /sdb1       //无错误提示,修复成功

六、磁盘资源耗尽故障

故障原因:

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

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

故障现象:

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

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

解决思路:

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

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

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

       为用户设置磁盘配额

七、磁盘配额

实现磁盘限额的条件:

       需要Linux内核支持

       安装quota软件包

Linux磁盘限额的特点:

       作用范围:针对指定的文件系统(分区)

       限制对象:用户帐号、组帐号

限制类型:

           磁盘容量(默认单位为KB)

           文件数量

限制方法:软限制、硬限制

应用示例:对新加磁盘做配额限制

1、安装quota软件包

2、创建挂载目录 ,并且修改权限777,让普通用户对设置配额的分区(挂载目录)具有写入权限

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

vi /etc/fstab

添加 /dev/sdb1   /sdb1   ext4   defaults,usrquota,grpquota   0  0

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

4、查看是否挂载成功

mount | grep /dev/sdb1 (只要括号里面显示"usrquota,grpquota",说明可以使用磁盘配额了)
或者
ls  /public(看到目录下有lost+found这个目录也算是挂载成功了)

5、检测磁盘配额并创建配额文件

使用quotacheck命令生成配置磁盘配置的数据库文件

格式:quotacheck -ugv 文件系统

    -a:检测所有可用的分区

    -u:检测用户配额

    -g:检测组配额

    -c:创建配额数据文件

    -v:显示执行过程信息

#若selinux开启的话会提示权限不够,通过setenforce 0临时关掉selinux就可以

例如:

quotacheck  -ugv  /dev/sdb1

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

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

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

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

edquota -u cqq       //编辑用户cqq配额

第2列:此处不填写(系统自动检测的已使用配额值)

第3列:磁盘容量软限制

第4列:磁盘容量硬限制

第5列:此处不填写(系统自动检测的已使用配额值)

第6列:文件个数软限制

第7列:文件个数硬限制

edquota -g Students     //编辑组Students配额

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

quotaon  -ugv /sdb1

8、验证磁盘配额功能

8.1 切换到启用配额的用户身份

su  -  cqq

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

cd  /sdb1

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

touch  1.txt  2.txt...16.txt    (是否有提示)

ls                                         (查看有多少文件,是否超出配额限制)

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

先删除上面所建的文件:rm  -rf  *.txt

dd if=/dev/zero of=myfile bs=1M count=120     (是否有超出限制提示)        

ls -lh myfile                                                      (查看文件大小是否超出配额限制)

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

quotaoff -ugv /sdb1

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/88931301