1. 修复 MBR 扇区故障
2. 修复 GRUB 引导故障
3./etc/inittab 文件丢失
4. 遗忘 root 用户密码
5. 修复文件系统
6. 磁盘资源耗尽故障
一, 修复 MBR 扇区故障
1. 关机添加一块硬盘, 开机查看硬盘设备分区列表, 是否存在 / dev/sdb 设备信息
2. 对新硬盘分区
2.1 新建一个主分区
2.2 新建一个扩展分区
2.3 新建两个逻辑分区, 然后保存
3. 查看 sdb 中分区列表信息
fdisk -l /dev/sdb
4. 格式化文件系统, 这里暂时只格式化 / dev/sdb1
mkfs -t ext4 /dev/sdb1
5. 创建一个挂载点, 挂载 sdb1 分区
- mkdir /sdb1
- mount /dev/sdb1 /sdb1
6. 备份 MBR 扇区数据
dd if=/dev/sda of=/sdb1/sda.mbr.bak bs=512 count=1
7. 模拟 MBR 被破坏的故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
8. 然后重启系统, 发现系统无法重启
9. 从备份文件中恢复 MBR 扇区
添加虚拟机与光盘的连接, 重启系统, 自动进入如下界面, 现在第三个(救援模式)
10. 系统加载后, 一直下一步, 直到出现如下图, 选择第一个
11. 执行 fdisk -l 能看到 sdb1 分区, 看不到 sda 设备, 因为 sda 设备的 MBR 被破坏(Linux 系统的分区记录存放在 mbr 中)
12. 在急救模式下的虚拟磁盘中建立 sdb1 分区的挂载点目录
- mkdir /sdb1
- mount /dev/sdb1 /sdb1
- dd if=/sdb1/sda.mbr.bak of=/dev/sda bs=512 count=1
13. 重启系统, 然后系统就能正常工作了
二, 修复 GRUB 引导故障
1. 备份 grub.conf 文件(建议备份到第 2 块磁盘中)
- mkdir /backup
- mount /dev/sdb1 /backup
- cp /boot/grub/grub.conf /backup/grub.conf.bak
2. 模拟破环 grub.conf 文件
rm -rf /boot/grub/grub.conf
3. 重启系统, 发现系统无法正常加载
4. 进入救援模式, 此时只能进入 bios 设置 boot 启动顺序, 把光盘引导调整到前面, 然后保存, 此时系统会加载光盘
5. 查看硬盘分区情况, 此时可以看到两个硬盘, 因为 grup 配置文件损坏, 但还是会成功加载分区记录
6. 在急救模式下的虚拟磁盘中建立 sdb1 分区的挂载点目录, 此时需要创建两个挂载点, 以及挂载 sda1(grup 文件所在分区)和 sdb1(备份 grup 配置文件所在分区)
- mkdir /backup(在急救模式下的虚拟磁盘中建立 sdb1 分区的挂载点目录)
- mkdir /sda1(创建 sda1 分区的挂载点目录)
- mount /dev/sdb1 /backup
- mount /dev/sda1 /sda1
- cp /backup/grub.conf.bak /sda1/grub/grub.conf
7.. 重启系统, 然后系统就能正常工作了
三,/etc/inittab 文件丢失
1. 备份 / etc/inittab 文件
cp /etc/inittab /root/inittab.bak
2. 模拟 inittab 文件丢失
rm -rf /etc/inittab
3. 重启系统进入文本命令模式, 恢复 inittab 文件 #重新系统后, 系统进入文本命令模式, 因为运行级别配置文件 (inittab) 丢失
cp /root/inittab.bak /etc/inittab
4. 重启系统, 然后系统就能正常进入图形界面了
四, 遗忘 root 用户密码
解决方法: 引导进入单用户模式, 然后重设密码
1. 重启系统, 在引导界面按 e 键
2. 在按 e, 进入然后选第二项
3. 再按 e 进入, 敲空格, 输入 1, 然后回车 #1 代表单用户模式
4. 上一步, 回车后又返回以前, 按 b, 重新引导, 然后就进入单用户模式了, 然后修改 root 用户密码
5. 重启系统, 用修改过的密码登录
五, 修复文件系统
故障原因:
非正常关机, 突然断电, 设备读写失误等
文件系统的超级块 (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. 检查是否能挂载该分区
3. 上图提示报错, 没有指定文件类型, 那我们就添加文件类型, 但是添加文件类型还是报错, 从下图的报错信息中可以看出, 真正的原因是因为 superblock(超级块出现问题)
4. 对 / dev/sdb1 分区进行修复
fsck -y -t ext4 /dev/sdb1
5. 再次挂载该分区 无错误提示, 修复成功
六, 磁盘资源耗尽故障
故障原因:
磁盘空间已被大量的数据占满, 空间耗尽
虽然还有可用空间, 但文件数 i 节点耗尽
故障现象:
无法写入新的文件, 提示 "... : 设备上没有空间"
部分程序无法运行, 甚至系统无法启动
解决思路:
清理磁盘空间, 删除无用, 冗余的文件
转移或删除占用大量 i 节点的琐碎文件
进入单用户模式, 急救模式进行修复
为用户设置磁盘配额
1. 这里只测试文件节点耗尽
2. 写一个 while 死循环, 一直创建空文件, 这里以 / boot/test 为例
- i=1
- while [ 1 ]
- do
- cd /boot/test
- touch "$i".txt
- let "i++"
- done
3. 没有运行脚本之前的 / boot/test 目录下的节点数
4. 运行完脚本之后 / boot/test 目录下的节点数已经用完, 但是磁盘还有剩余空间
5. 此时在向 / boot/test 写入数据, 会提示失败, 虽然还有空间剩余, 这是因为 Linux 的安全存储机制, 只要节点数或者空间任何一个使用完, 都不能再进行写入数据
6. 解决办法, 删除占用大量 i 节点的琐碎文件
这里删除 / boot/test 目录下的所有文件, 然后在写入数据测试
rm -fr /boot/test/*
7. 磁盘配额
7.1. 磁盘限额需要安装 quota 软件包 yum install -y quota
7.2. 启用文件系统的配额支持(添加 usrquota,grpquota 挂载参数)
- mkdir /sdb1
- chmod 777 /sdb1(为 / sdb1 授权)
注: 第一个字段为被挂载的分区, 第二个字段为挂载的目录, 第三个字段是被挂载的分区的文件系统类型, 后面的几个字段是支持 quota 的参数. 各字段用空格分隔
reboot 重启系统(或 mount -a 读取 / etc/fstab 文件, 使重新挂载生效), 重启进入文本编辑界面按回车
- 7.3
- mount | tail -1(查看是否挂载成功)mount(查看是否挂载成功)
- mount | grep /dev/sdb1
- /dev/sdb1 on /sdb1 type ext4 (rw,usrquota,grpquota)
- ls /sdb1
- lost+found
7.4 检测磁盘配额并创建配额文件
- quotacheck -ugcv /dev/sdb1
- ls -l /sdb1/aquota.*(查看是否生成配额文件)
7.5 编辑用户和组帐号的配额设置(edquota 命令)
edquota -u 用户名(编辑用户配额)
edquota -g 组名(编辑组配额)
例如: 新建用户和组
edquota -u zhangsan 编辑用户配额
edquota -g students 编辑组配额
启用, 关闭文件系统的配额功能(quotaon,quotaoff 命令)
quotaon -ugv /sdb1
普通用户对设置配额的分区 (挂载目录) 具有写入权限
chmod 777 /sdb1
切换到启用配额的用户身份 su - zhangsan
切换到设置配额的分区(挂载目录)cd /sdb1
创建指定数量的文件: 使用 touch 命令, 或 cp 命令
创建指定容量的文件: 使用 dd 命令, 或 cp 命令
rm -rf *.txt
关闭文件系统配额功能
来源: https://www.cnblogs.com/yuzly/p/10646007.html