实验环境: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