targetcli读取prefs.bin出错的问题的解决方法

targetcli是建立起LIO用来把后台的存储资源映射给initiator的重要工具,它下面通过python
rtslib实现和iscsi(linux下对应iscsi_target_mod.ko驱动)和HBA卡(linux下对应tcm_qlax2xxx.ko驱动)等介质的交互,进而向initiator

展现逻辑卷(LUN)。为此,熟悉掌握targetcli工具对于我们搭建SAN/NAS环境,非常有必要。在实际项目当中,由于各种原因,可能导致targetcli命令执行失败。可以阅读targetcli的python代码调用过程,分析问题并解决问题。

笔者最近在使用targetcli 的过程中,碰到这样的错误:

[[email protected] ~]# targetcli

Traceback (most recent call last):

File "/usr/bin/targetcli", line 122, in <module>

main()

File "/usr/bin/targetcli", line 77, in main

shell = TargetCLI(‘~/.targetcli‘)

File "/usr/lib/python2.7/site-packages/configshell/shell.py", line 167, in __init__

self.prefs.load()

File "/usr/lib/python2.7/site-packages/configshell/prefs.py", line 147, in load

self._prefs = cPickle.load(fsock)

EOFError

刚开始怀疑版本问题,从正常运行的机器上重新拷贝了targetcli及其依赖的python库,问题依旧;重启机器和服务,现象还是没有得到解决。试图通过网上去搜索,也没有找到类似的现象。正在一筹莫展之际,突然注意到了错误提示中的一句话:

File "/usr/bin/targetcli", line 122, in <module>

main()

File "/usr/bin/targetcli", line 77, in main

shell = TargetCLI(‘~/.targetcli‘)

根据错误提示和下面的python源码,它好像是去访问./.targetcli目录,从里面加载一些缓存的偏好设置。

[[email protected] ~]# vim /usr/lib/python2.7/site-packages/configshell/shell.py +167

为此,直接进入目录,[[email protected] ~]# ls -arlt ~/.targetcli,检查下它到底有什么东西:

[[email protected] .targetcli]# pwd

/root/.targetcli

[[email protected] .targetcli]# ls -alrt

total 20

drwxr-xr-x.  2 root root   54 Aug  1 21:51 .

-rw-r--r--.  1 root root  503 Aug  1 21:51 prefs.bin

-rw-r--r--.  1 root root    8 Aug 11 06:57 history.txt

-rw-r--r--.  1 root root 7933 Sep  8 03:47 log.txt

dr-xr-x---. 41 root root 4096 Sep 20 07:32 ..

一看没有实际关键的内容,果断删除,然后重新运行targetcli:

[[email protected] ~]# targetcli

Warning: Could not load preferences file /root/.targetcli/prefs.bin.

targetcli shell version 2.1.fb37

Copyright 2011-2013 by Datera, Inc and others.

For help on commands, type ‘help‘.

/> ls

o-
/
......................................................................................................................
[...]

o- backstores
...........................................................................................................
[...]

| o- block
...............................................................................................
[Storage Objects: 0]

| o- fileio
..............................................................................................
[Storage Objects: 0]

| o- pscsi
...............................................................................................
[Storage Objects: 0]

| o- ramdisk
.............................................................................................
[Storage Objects: 0]

o- iscsi
.........................................................................................................
[Targets: 0]

o- loopback
......................................................................................................
[Targets: 0]

o- qla2xxx
.......................................................................................................
[Targets: 0]

/> exit

Global pref auto_save_on_exit=true

Last 10 configs saved in /etc/target/backup.

Configuration saved to /etc/target/saveconfig.json

好了,问题搞定! 这个问题,结合上面"EOFError ”来看,很可能是最近机器异常掉电导致prefs.bin文件损坏所致。

这个问题的解决给我的一个启迪是,了解了targetcli的后台实现层次之后,碰到问题,即便对不太熟悉的python,只有好好利用出错的输出和具体执行的脚本,仔细分析照样可以找到蛛丝马迹并解决问题。

时间: 2024-10-11 15:22:14

targetcli读取prefs.bin出错的问题的解决方法的相关文章

Physics 碰撞检测回调方法出错或者没有效果解决方法

1.碰撞检测回调方法编译出错; auto *listener = EventListenerPhysicsContact::create(); listener->onContactBegin = CC_CALLBACK_1(HelloWorld::onContactBegin,this); 在3.0rc版本中回调函数的参数变为一个,不能使用原来的两个参数; bool HelloWorld::onContactBegin(PhysicsContact& contact) { auto spr

php读取mssql日期出现中文字符的解决方法

php读取mssql日期出现中文字符的解决方法 在php代码开头处加下以下代码 ini_set ("mssql.datetimeconvert","0");//关闭mssql默认的日期格式转换 php读取mssql日期出现中文字符的解决方法,布布扣,bubuko.com

MVC自我学起之MVCMusic开发中遇到问题:musicstore edit方法出错的原因和解决方法

错误提示: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectStateManager 项. 解决案: 1.在view中或model中增加隐藏id 1.1 修改model [HiddenInput()]public int AlbumId { get; set; } 1.2在视图中增加:(一般 若是用自动新建的curd中会自带) 加@Html.HiddenFor(model => model.AlbumId) 2.得到id也有两种方法一种是修改m

IIS启动网站出错的几个解决方法

在ASP.NET项目中使用了IIS服务器,由于系统是XP的,而在装系统的时候IIS没有一起装,所以从网上下载的IIS5.0版本(其它版本XP是用不了的).但是在使用的过程中老是出问题,每次调试好后,过几天再打开就运行不了.然后又去调试.安装,因此把我遇到的几次问题和解决方法总结如下.1.本地网址访问不了,启动本地网站报错:服务没有及时响应启动或控制请求.或者启动World Wide Web Publishing提示"错误127:找不到指定的程序.   这种情况遇到的最多,可能也和IIS的版本有关

Java读取properties配置文件时,中文乱码解决方法

碰到了用java.util.Properties读取中文内容(UTF-8格式)的配置文件,发生中文乱码的现象 Properties prop=new Properties(); prop.load(Client.class.getClassLoader().getResourceAsStream("config.properties")); 由于使用这样的加载方式使用了系统默认的编码格式,不是UTF-8格式的读取模式,就会发生乱码情况. 正确解决方法 Properties prop=n

JCIFS读取远程服务器文件过慢的解决方法

发表于3年前(2013-07-12 11:23)   阅读(1174) | 评论(0) 0人收藏此文章, 我要收藏 赞0 jcifs smb 与windows explorer打开相同的文件相比,JCIFS默认情况下要慢太多了.我找了大半天,总算找出了解决方法,增加如下配置,则读取速度会有质的飞跃,我这边从7s提升至0.2s: ? 1 System.setProperty("jcifs.smb.client.dfs.disabled", "true"); 至于原因嘛

FileSystemWatcher 读取文件时出现被占用的解决方法

今天做一个小程序监控目录并序列化XML时遇到第一次正常,第二个新文件加入时出现文件被占用的错误,记录下解决方法. 1 FileSystemWatcher watcher = new FileSystemWatcher{ 2 Path = path, 3 Filter = filter, 4 EnableRaisingEvents = true, 5 IncludeSubdirectories = true, 6 NotifyFilter = NotifyFilters.Attributes |

入坑Intel OpenVINO:记录一个示例出错的原因和解决方法

今天试用OpenVINO的例子,在过程中发现了一些其他人没有经历的坑特别记录一下. 出错时候:执行Intel OpenVINO示例的是时候,出错的提示代码: 用于 .NET Framework 的 Microsoft (R) 生成引擎版本 15.9.21+g9802d43bc3 版权所有(C) Microsoft Corporation.保留所有权利. 8>C:\Intel\computer_vision_sdk_2018.5.445\deployment_tools\inference_eng

编译 wxWidgets-3.0.2 on Mac OS X Yosemite 出错?!的解决方法

tar -zxf wxWidgets-3.0.2.tar.bz2   //解压 //三部走 ./configure ./make 提示webKit出错 原因:有人偷懒,没试编译就发布了. 解决:找到../src/osx/webview_webkit.mm 第31行改为 #include <WebKit/WebKitLegacy.h> 因为新的Yosemite 系统修改了webkit 的头文件 sudo make install make clean