linux nas目录老是掉,Linux运维:NAS存储故障案例

原标题:Linux运维:NAS存储故障案例

1、故障现象描述

NAS 操作系统 内核为 Linux ,自带的存储有16块硬盘,总共分两组,每组都做了RAID5, Linux无法正常启动,在服务启动到cups那里就停止了,按Ctrl+C组合键强制断开也没有响应,硬盘状态都是正常的,没有报警或警告现象。

2、问题判断思路

通过上面这些现象,首先判断NAS硬件应该没问题,NAS存储盘也应该正常,现在 Linux 无法启动,应该是 Linux 系统本身存在问题,因此,首先从 Linux 系统入手进行排查。

3、问题处理过程

(1)第一次处理过程

NAS系统本身就是一个 Linux 内核装载了一个文件系统管理软件。管理软件可以对系统磁盘、系统服务、文件系统等进行管理和操作。在正常情况下,基于 Linux 内核的NAS系统应该启动到init3或init5模式下,由于NAS仅用了 Linux 一个内核模块和几个简单服务,因此判断NAS下的 Linux 系统肯定是启动到init 3模式下,那么既然现在无法启动到多用户字符界面下,何不让 Linux 直接进入单用户(init 1)模式下呢?因为单用户模式下仅仅启用系统所必需的几个服务,而cpus服务是应用程序级别的,肯定不会在init 1模式下启动,这样就避开了cups无法启动的问题,所以,下面的工作就是要进入 Linux 的单用户模式下。

很多的 Linux 发行版本都可以在启动的引导界面通过相关的设置进入单用户模式下,通过查看NAS的启动过程,基本判断这个 Linux 系统与RHEL/CentOS发行版极为类似,因此,通过RHEL/CentOS进入单用户模式下试一试。

RHEL/CentOS进入单用户模式很简单,就是在系统启动到引导欢迎界面时按e键,然后编辑正确的内核引导选项,在最后面加上“single”选项,最后直接按b键即可进入单用户模式了。

接下来,重新启动NAS,然后硬件自检,接着开始启动 Linux ,一直在等待这个NAS的启动欢迎界面,但是欢迎界面一直没出现,就直接进入内核镜像开始加载内核阶段了。没有内核引导界面,如何进入单用户呢?经过简单思考,还是决定在硬件检测完毕后直接按e键,奇迹出现了,真的可以,NAS进入了内核引导界面!通过简单观察,发现第二个正是要引导的内核选项,于是移动键盘中的上下键,选择这个内核,然后按e键,进入内核引导编辑界面,在这行的最后面输入“single”,然后按回车键,返回上个界面,接着按b键开始进行单用户引导,经过1分钟的时间,系统如愿以偿地进入单用户模式下的 shell 命令行。

进入单用户模式后,能做的事情就很多了,首先要做的就是将cups服务在多用户模式下自启动关闭,执行命令如下:

chkconfig --levle 35 cups off

执行成功后,重启系统进入多用户模式下,看看系统能否正常启动。

(2)第二次处理过程

将cups服务开机自启动关闭后,重启NAS,发现问题依旧,NAS还是在启动到cups服务那里停止了,难道上面的命令没有执行成功吗?明明已经禁止了cups服务启动了,怎么还是启动了呢?于是,继续重启NAS,再次进入单用户模式下,看看问题究竟出在哪里了。

进入单用户后,再次执行chkconfig命令,依旧可以成功,难道是cups服务有问题,先看看配置文件,执行如下命令:

vi /etc/cups/cupsd.conf

在这里发现了一个问题,在通过vi命令打开cupsd.conf时,提示“Write file in swap”,文件明明真实存在,怎么说在虚拟内存中呢?经过思考,只有一种可能,NAS设备的 Linux 系统分区应该没有正确挂载,导致在进入单用户的时候,所有文件都存储在虚拟内存中,要验证这一点非常简单,执行“df”命令查看即可,如图1所示。

linux nas目录老是掉,Linux运维:NAS存储故障案例_第1张图片

图1 查看NAS挂载磁盘分区情况

从这里可以看出, Linux 的系统分区并未挂载,通过“fdisk -l”检查磁盘分区状态,输出如图2所示。

linux nas目录老是掉,Linux运维:NAS存储故障案例_第2张图片

图2 查看NAS磁盘分区情况

通过查看输出可知,NAS的系统盘是/dev/sda,仅划分了/dev/sda1和/dev/sda2两个系统分区,而数据磁盘是经过做RAID5完成的,在系统上的设备标识分别是/dev/sdb1和/dev/sdc1。由于单用户模式下默认没有挂载任何NAS磁盘,这里尝试手动挂载NAS的系统盘,执行如下命令:

[root@NASserver ~]# mount /dev/sda2 /mnt

[root@NASserver ~]# mount /dev/sda1 /opt

这里的/mnt、/opt是随意挂载的目录,也可以挂载到其他空目录下,完成挂载后分别进入这两个目录看看其中是否有内容,如图3和图4所示。

linux nas目录老是掉,Linux运维:NAS存储故障案例_第3张图片

图3 查看/dev/sda2磁盘标识下的内容

linux nas目录老是掉,Linux运维:NAS存储故障案例_第4张图片

图4 查看/dev/sda1磁盘标识下的内容

通过查看这两个内容,初步判断,/dev/sda2分区应该是 Linux 的根分区,而/dev/sda1应该是/boot分区。现在分区已经挂载上去了,再次执行df命令查看挂载情况,如图5所示。

linux nas目录老是掉,Linux运维:NAS存储故障案例_第5张图片

图5 查看NAS系统盘的磁盘空间

到这里为止,发现问题了。/dev/sda2磁盘分区已经没有可用的磁盘空间了,而这个分区刚好是NAS系统的根分区,根分区没有空间了,那么系统启动肯定就出问题了。

由于系统cups服务在启动的时候会写启动日志到根分区,而根分区没有空间了,因此也就无法写日志了,由此导致的结果就是cups服务无法启动,这就解释了此案例中NAS系统每次启动到cups服务就停止的原因。

4、解决问题

由于NAS系统只有根分区和/boot分区,因此系统产生的相关日志都会存储在根分区中,现在根分区满了,首先可以清理的就是/var目录下的系统相关日志文件,通常可以清理的目录有/var/log。执行如下命令查看/var/log日志目录占据磁盘空间大小:

[root@NASserver ~]# du -sh /var/log

50.1G /var/log

通过命令输出发现/var/log目录占据了根分区仅70%的空间,清理这个目录下的日志文件即可释放大部分根分区空间,清理完毕后重启NAS系统,发现系统cups服务能正常启动了,NAS服务也启动正常了。返回搜狐,查看更多

责任编辑:

你可能感兴趣的:(linux,nas目录老是掉)