我正在尝试将 LUN 添加到 CentOS 6.5 下正在运行的 iSCSI 目标。iSCSI 目标来自tgtd
软件包scsi-target-utils
。我看到了一些非常奇怪的行为,我有点不知道该怎么做。
首先,看上去好像有多个tgtd
运行的实例。
[eric@<host>]~% sudo service tgtd status
tgtd (pid 8713 8712) is running...
[eric@<host>]~% sudo service tgtd reload
Updating SCSI target daemon configuration: not running [FAILED]
但是,我有几个虚拟机目前正在从该系统的 iSCSI LUN 运行,所以我知道它tgtd
至少在一定程度上正常运行。
我抓住了重新加载失败的退出状态echo $?
并且它返回了7
。
然后我把它放在set -x
初始化脚本的顶部并再次运行它以查看它返回到哪里7
。
[eric@<host>]~% sudo service tgtd reload
+-zsh:19> sudo service tgtd reload
+ case "$1" in
++ id -u
+ '[' 0 = 0 ']'
+ rh_status_q
+ rh_status
+ reload
+ '[' -f /etc/sysconfig/tgtd ']'
+ . /etc/sysconfig/tgtd
+ echo -n 'Updating SCSI target daemon configuration: '
Updating SCSI target daemon configuration: + tgt-admin --update ALL -c /etc/tgt/targets.conf
+ retval=107
+ '[' 107 -eq 107 ']'
+ echo -n 'not running'
not running+ failure
+ local rc=0
+ '[' color '!=' verbose -a -z '' ']'
+ echo_failure
+ '[' color = color ']'
+ echo -en '\033[60G'
+ echo -n '['
[+ '[' color = color ']'
+ echo -en '\033[0;31m'
+ echo -n FAILED
FAILED+ '[' color = color ']'
+ echo -en '\033[0;39m'
+ echo -n ']'
]+ echo -ne '\r'
+ return 1
+ '[' -x /bin/plymouth ']'
+ /bin/plymouth --details
+ return 0
+ echo
+ return 7
+ exit 7
看起来它的功能失败了reload
。谁会想到呢?具体来说,就是这段代码。
TGTD_CONFIG=/etc/tgt/targets.conf
...
tgt-admin --update ALL -c $TGTD_CONFIG >/dev/null 2>&1
retval=$?
if [ "$retval" -eq 107 ] ; then
echo -n $"not running"
failure
echo
return 7
然后我运行了该命令:
[eric@<host>]~% sudo tgt-admin --update ALL -c /etc/tgt/targets.conf
tgtadm: can't send the request to the tgt daemon, Transport endpoint is not connected
tgtadm: can't send the request to the tgt daemon, Transport endpoint is not connected
tgtadm: can't send the request to the tgt daemon, Transport endpoint is not connected
tgtadm: can't send the request to the tgt daemon, Transport endpoint is not connected
Command:
tgtadm -C 0 --lld iscsi --op new --mode target --tid 1 -T <redacted iqn>
exited with code: 107.
这就是我不知所措的地方。我在 Google 上搜索了这个错误,但没有成功——看起来我必须终止该进程并重新启动它。有人知道这可能表明什么吗?为什么tgtadm
找不到一个明显正在运行的进程?更好的是,有人知道我是否可以在不终止进程的情况下修复此问题以避免中断服务吗?
以下是一些其他相关信息:
[eric@<host>]~% sudo ps waux | grep tgt
root 8712 0.0 0.0 1163084 2648 ? Ssl Oct08 0:44 tgtd
root 8713 0.0 0.0 14888 500 ? S Oct08 0:03 tgtd
eric 20075 0.0 0.0 103244 900 pts/4 S+ 14:09 0:00 grep tgt
[eric@<host>]~% uname -a
Linux <host> 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
答案1
尝试更新系统上的 RPC,然后重新启动tgtd
。就我而言,这很有帮助:
yum update libtirpc