使用Linux系统自带多路径时路径故障恢复后无法自动回切

发布时间:  2015-09-22 浏览次数:  1988 下载次数:  0
问题描述

主机和存储系统之间建立FC多路径组网。

主机操作系统为Neokylin 6.0,配置了DM-Multipath多路径。配置参数如下:

devices {

device {

                vendor                  "HUAWEI"

                product                 "XSG1"

                path_grouping_policy      multibus

                getuid_callout            "/lib/udev/scsi_id --whitelisted --device=/dev/%n"

                path_checker             tur

                path_selector             "round-robin 0"

                failback                  immediate

        }

}

阵列映射数个LUN给主机,主机上对其中一个LUN进行读写,读写过程中拔掉其中一个线缆,模拟路径故障场景,发现IO可以切换到另外一条路径上。

等待5分钟后,将拔掉的线路重新插入,阵列上可以看到启动器重新online,但是主机上查看IO没有回切。

处理过程

 

 

首先,在主机上查看多路径配置是否生效,执行下面的命令:

[root@NKlocalhost ~]# multipathd -k"show config"

ux_socket_connect: No such file or directory

[root@NKlocalhost ~]# multipathd -k

ux_socket_connect: No such file or directory

[root@NKlocalhost ~]#

发现命令没法执行成功。执行命令“multipath -l”和“multipath -v3”均可以正常执行成功,没有报错。

查看DM-Multipath的状态,发现进程已经死掉。

[root@NKlocalhost ~]# /etc/init.d/multipathd reload

Reloading multipathd: [失败]

[root@NKlocalhost ~]# /etc/init.d/multipathd restart

正在关闭multipathd 端口监控程序:[失败]

正在启动守护进程multipathd[确定]

[root@NKlocalhost ~]# /etc/init.d/multipathd status

multipathd 已死,但 pid 文件仍存

[root@NKlocalhost ~]#

由于手动启动多路径失败,尝试重启主机恢复该进程。

重启主机后发现情况依旧是一样的,DM-multipath的进程死掉。怀疑是多路径软件包安装异常,查看系统安装的多路径软件包信息,如下所示。

[root@NKlocalhost ~]# rpm -qa|grep mul

rpmdb: write: 0x2395a30, 8192: 设备上没有空间

[root@NKlocalhost ~]# df -h

文件系统        容量  已用  可用 已用%% 挂载点

/dev/mapper/vg_nklocalhost-lv_root

                       32G   32G     0 100% /

tmpfs                  16G     0   16G   0% /dev/shm

/dev/sda1             485M   48M  413M  11% /boot

/dev/mapper/vg_nklocalhost-lv_home

                      3.2G   70M  2.9G   3% /home

[root@NKlocalhost ~]#

检查过程中,发现根目录的空间被耗光了,导致查看命令失败。

依次对根目录下的目录执行“du -sk”命令查看目录占用的空间。

[root@NKlocalhost ~]# cd /

[root@NKlocalhost /]# ls

bin  boot  cgroup  dev  etc  home  lib  lib64  logs  lost+found  media  misc  mnt  mt  net  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var

[root@NKlocalhost /]# df -h

文件系统        容量  已用  可用 已用%% 挂载点

/dev/mapper/vg_nklocalhost-lv_root

                       32G   32G     0 100% /

tmpfs                  16G     0   16G   0% /dev/shm

/dev/sda1             485M   48M  413M  11% /boot

/dev/mapper/vg_nklocalhost-lv_home

                      3.2G   70M  2.9G   3% /home

[root@NKlocalhost /]# du -sk /logs/

68  /logs/

[root@NKlocalhost /]# du -sk /bin

8928    /bin

[root@NKlocalhost /]# du -sk /cgroup/

4   /cgroup/

[root@NKlocalhost /]# du -sk /etc

36704   /etc

[root@NKlocalhost /]# du -sk /mnt

28713976    /mnt

[root@NKlocalhost /]# du -sk /mt

20  /mt

[root@NKlocalhost /]# ls /mnt/

dir1  dir2  dir3  dir4

[root@NKlocalhost /]# rm -rf /mnt/

[root@NKlocalhost /]#

[root@NKlocalhost /]#

[root@NKlocalhost /]# df -h

文件系统        容量  已用  可用 已用%% 挂载点

/dev/mapper/vg_nklocalhost-lv_root

                       32G  4.5G   26G  15% /

tmpfs                  16G     0   16G   0% /dev/shm

/dev/sda1             485M   48M  413M  11% /boot

/dev/mapper/vg_nklocalhost-lv_home

                      3.2G   70M  2.9G   3% /home

[root@NKlocalhost /]#

[root@NKlocalhost /]#

[root@NKlocalhost /]# rpm -qa|grep mul

rpmdb: unable to join the environment

error: db3 error(11) from dbenv->open: 资源暂时不可用

error: cannot open Packages index using db3 - 资源暂时不可用 (11)

error: cannot open Packages database in /var/lib/rpm

rpmdb: unable to join the environment

error: db3 error(11) from dbenv->open: 资源暂时不可用

error: cannot open Packages database in /var/lib/rpm

[root@NKlocalhost /]#

这里发现占用空间最大的是“/mnt”目录,确认该目录下面的文件无用后将其删除。

此时发现rpm命令依旧无法执行,提示“资源暂时不可用”,怀疑是由于还存在其他进程没有正常启动。再次重启主机。

主机重启后,多路径状态正常,路径可以正常切换和回切。

根因

根目录的空间被耗光,导致多路径进程异常。

 

解决方案

将无用的文件删除后,重启主机。可以使得多路径程序恢复正常。

 

END