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.

在长期使用计算机的过程中,文件系统和磁盘类的故障现象很难完全避免,对于此类故障的修复处理需要十分谨慎,如果操作不慎可能会加中数据破坏的程度。

原文地址:http://blog.51cto.com/houliangjin/2062648

时间: 2025-01-13 16:02:57

Linux故障处理(二)更改root密码和修复文件系统的相关文章

五十二、设置更改root密码、连接MySQL、MYSQL常用命令

一.设置更改root密码 root用户是MySQL的超级管理员用户,这个root和系统的root并不是一个用户,需要区分开,也可以创建普通用户来连接MySQL. 默认的MySQL的root用户密码是空的,可以直接连接上. # ps aux |grep mysql          先检查mysql有没有打开 # /etc/init.d/mysqld start # mysql -uroot -bash: mysql: 未找到命令 因为mysql这个命令没有在环境变量中,所以这个命令不能直接使用.

Linux centosVMware MySQL常用操作设置更改root密码、连接mysql、mysql常用命令

一.设置更改root密码 启动mysql /usr/local/mysql/bin/mysql -uroot 报错 vi my.cnf里面socket路径改成/tmp/mysql.sock,并做了一个软链接:ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 后才正常 更改环境变量PATH,增加mysql绝对路径 mysqladmin -uroot password 'mimA123' mysql -uroot -pmimA123 使用-p命令加密码就

CentOS7单用户及救援模式下更改root密码

一. 单用户模式 1.单用户介绍 单用户方式下,系统并没有完全运行进来,只是部分程序运行,这时也不能进行远程登录到Linux系统.在系统发生故障无法启动.或者用户名或密码错误等情况,可以使用单用户模式进行维护,使系统恢复正常.这时的ROOT用户对系统有完全的操作权限,可以修复系统的同时,也能随时的对系统进行破坏. 重启命令:reboot.init 6.shutdown -r now 关机命令:poweroff.init 0.shutdown -h now.halt 2.重启linux系统引导.

Linux下如何修改root密码以及找回root密码

Linux下修改root密码方法 以root身份登陆,执行: passwd 用户名 然后根据提示,输入新密码,再次输入新密码,系统会提示成功修改密码. 具体示例如下: [[email protected] ~]# passwd root Changing password for user root. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd

52.mysql命令:设置更改root密码、连接mysql、mysql常用命令

一.设置更改root密码 ps -ef |grep mysql //查看mysql是否启动,如果没有启动就执行下面命令启动 /etc/init.d/mysqld start 登陆mysql需要执行下面的命令 /usr/local/mysql/bin/mysql -uroot exit 或者quit退出mysql 为了方便使用更改环境变量PATH,增加mysql绝对路径 export PATH=$PATH:/usr/local/mysql/bin/ 若需要修改永久环境变量则修改文件: vim /e

十三周四次课 更改root密码、mysql连接、常用命令

设置更改root密码 这里我们需要注意的是mysql的root用户和系统的root用户不是一回事.默认情况下mysql的root用户是空的,这样很不安全,所以我们要给他设置一个密码.要想更改mysql的root密码,首先我们输入一条命令[[email protected] ~]# mysql -uroot-bash: mysql: 未找到命令但是系统提示我们没有找到这条命令,这是因为这条命令要在/usr/local/mysql/bin/下才能生效,所以,我们要先将/usr/local/mysql

设置更改root密码 连接mysql mysql常用命令

一.设置更改root密码#/etc/init.d/mysqld start#ps aux |grep mysql#mysql -uroot //提示-bash: mysql : 未找到命令#ls /usr/local/mysql/bin/mysl //mysql实际启动路径#echo $PATH //查看PATH环境变量/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#export PATH=$PATH:/usr/local/

linux下mysql忘记root密码怎么办

Linux下MySQL忘记root密码怎么办? Linux下MySQL忘记root密码怎么办? 1. 修改MySQL配置文件 默认MySQL的配置文件为/etc/my.cnf,在[mysqld]下面添加一行 1.skip-grant-tables 2. 保存配置文件,重启MySQL服务 1.service mysqld restart 3. 再次进入MySQL 1.[[email protected] mysql]$ mysql -u root -p2.Enter password: #此处直接

13.1 设置更改root密码;13.2 连接MySQL;13.3 MySQL常用命令

扩展 : mysql5.7 root密码更改 http://www.apelearn.com/bbs/thread-7289-1-1.html myisam 和innodb引擎对比 http://www.pureweber.com/article/myisam-vs-innodb/ mysql 配置详解: http://blog.linuxeye.com/379.html mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html 同学