Linux故障处理更改root密码和修复文件系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux故障处理更改root密码和修复文件系统相关的知识,希望对你有一定的参考价值。
Linux故障处理(二)更改root密码和修复文件系统
一、遗忘root用户的密码
大多数时候Linux主机中具有root权限的用户只有一个,因此需要通过其他途径来重设root账号密码。最简单的途径是在开机时通过修改GRUB引导参数进入单用户模式,另一个途径是使用系统光盘进入急救模式。
1、通过单用户模式重设root账户的密码
步骤如下
1)、重新启动主机,在出现GRUB菜单时按“↑”、“↓”箭头键取消倒计时,并定位到要进入的操作系统选择项,按e键进入编辑模式。
2)、定位到以kernel开头的一行并按e键,在行尾添加“single”的启动参数,其中“single”也可以换成字母“s”或数字“1”,也可以表示进入到单用户模式。
3)、输完之后按Enter键确认,按b键将系统引导进入单用户模式,直接进入Shell环境(不需要任何密码验证)。
4)、在单用户模式的Shell环境中,可以执行“passwd ”命令重新设置root用户的密码。设置完毕重新启动系统。
二、排除文件系统类故障
1、修复文件系统
当文件系统的超级块数据损坏时,Linux将无法识别该文件系统,挂载时会出现“you must specify the filesystem type”的提示而不能正常使用。
例如,执行以下操作可以破坏/dev/sdb1文件系统的超级块数据库,尝试挂载时将不能成功。
[[email protected] ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4 记录了4+0 的读入 记录了4+0 的写出 2048字节(2.0 kB)已复制,0.024955 秒,82.1 kB/秒 [[email protected] ~]# mount /dev/sdb1 /tmp/ mount: you must specify the filesystem type
对于通过/etc/fstab文件自动挂载且设置了fsck参数(第6列的非0)的文件系统,若超级块出现错误,则Linux系统在启动时会报错,并提示“Give root password for maintenance”,
出现这种情况时,根据提示输入root用户密码,即可进入到一个临时的Shell环境,在这里用户可以对出现错误的文件系统进行修复。修复完毕后执行“exit”命令即可退出并重启系统。
修复一般的文件系统错误可以使用“fsck”命令进行,结合“-t”选项指定文件系统类型,结合“-y”选项对发现的问题自动回答“yes”。
重新挂载时,即可成功挂载!
2、磁盘资源耗尽故障
当一个文件系统的磁盘空间耗尽以后,将无法继续在该分区中创建新的文件数据,从而导致故障的出现。例如执行“dd if=/dev/zero of=/somefile bs=1M count=999999”命令。当根分区磁盘空间不足而无法启动进入Linux系统时,可以通过系统的安装光盘进入急救模式,转移或清理掉根分区中占用大量空间的文件。
在每一个ext3文件系统中,能够使用的文件数量(对应i节点数量)也是有限的。当一个文件系统被格式化以后,其i节点数也即文件数量就已经固定下来了。如果用户在该分区中创建了巨量的细小文件(耗尽i节点),将可能出现这种情况:虽然分区中仍然有大量的剩余磁盘空间,但是却无法再建立新的文件。
模拟i节点耗尽故障
2.1)、新建一个约1G大小的EXT4文件系统,挂载到/temp目录下。使用“df –i”命令确认该文件系统中i节点的使用情况。
[[email protected] ~]# mkdir /temp [[email protected] ~]# mount /dev/sdb1 /temp/ [[email protected] ~]# df -i /temp/ Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 66384 11 66373 1% /temp ■ Filesystem:文件系统 ■ Inode: i节点总数 ■ IUsed:(I)已用 ■ IFree:(I)可用 ■ IUse%:已用% ■ Mounted on: 挂载点
2.2)、写一个测试程序脚本,模拟i节点耗尽
[[email protected] ~]# vim mkfile.sh #!/bin/bash i=1 while [ $i -le 66384 ] do touch /temp/file$i let i++ done [[email protected] ~]# sh mkfile.sh [[email protected] ~]# df -i /temp/ Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 66384 66384 0 100% /temp
可以看到i节点的数量已经占满,再使用df –hT命令查看一下磁盘空间。并且创建一个文件查看信息。
2.3)、查看结果
[[email protected] ~]# df -hT /temp/ Filesystem Type Size Used Avail Use% Mounted on /dev/sdb1 ext2 1020M 2.8M 965M 1% /temp 可以看到,/temp还有很多磁盘空间 [[email protected] ~]# touch /temp/123456 touch: 无法创建"/temp/123456": 设备上没有空间
创建一个文件提示设备上没有,这种情况一般就属于i节点耗尽
2.4)、修复i节点耗尽故障
理解i节点故障的根结以后,问题就比较好解决了。只需要找出分区中占用大量i节点的细小文件,并进行转移或者删除即可。对于许多用户公用的文件系统,建议为相关用户设置磁盘配额限制(包括磁盘空间和文件数量两方面)。
[[email protected] ~]# rm -rf /temp/file* [[email protected] ~]# df -i /temp Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 66384 10 66374 1% /temp
3、检测硬盘坏道
磁盘坏道分为逻辑坏道和物理坏道两种,前者主要由于软件操作不当造成,可以使用软件修复;后者则是物理性损坏,只能通过更改磁盘分区或扇区的占用位置来进行改善,排除掉包含有坏块的磁盘空间。当磁盘出现以下现象时,磁盘设备发出异常声响。
■ 读取磁盘中的数据时,磁盘设备发出异常声响。
■ 访问磁盘中的某个文件时,反复读取且出错,提示文件损坏。
■ 对于新建立的分区无法完成格式化。
■ 系统使用该磁盘时频繁死机。
硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并可能造成频繁死机和数据丢失的后果。所以必要时应该对磁盘进行定期检测,检查是否存在坏道。
在linux系统中,检测磁盘的坏道情况可以使用badblocks命令进行,结合“-s”选项用于显示进度信息,“-v”选项用于显示详情。
[[email protected] ~]# badblocks -sv /dev/sdb 正在检查从 0 到 20971519的块 Checking for bad blocks (read-only test): 完成 Pass completed, 0 bad blocks found.
在长期使用计算机的过程中,文件系统和磁盘类的故障现象很难完全避免,对于此类故障的修复处理需要十分谨慎,如果操作不慎可能会加中数据破坏的程度。
以上是关于Linux故障处理更改root密码和修复文件系统的主要内容,如果未能解决你的问题,请参考以下文章