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 的过程中,碰到这样的错误:
[root@localhost ~]# 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目录,从里面加载一些缓存的偏好设置。
[root@localhost ~]# vim /usr/lib/python2.7/site-packages/configshell/shell.py +167
为此,直接进入目录,[root@localhost ~]# ls -arlt ~/.targetcli,检查下它到底有什么东西:
[root@localhost .targetcli]# pwd
/root/.targetcli
[root@localhost .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:
[root@localhost ~]# 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,只有好好利用出错的输出和具体执行的脚本,仔细分析照样可以找到蛛丝马迹并解决问题。
转载于:https://blog.51cto.com/xiamachao/1967263
targetcli读取prefs.bin出错的问题的解决方法相关推荐
- usr/bin/ld: cannot find 错误解决方法和 /etc/ld.so.conf
usr/bin/ld: cannot find 错误解决方法和 /etc/ld.so.conf 参考文章: (1)usr/bin/ld: cannot find 错误解决方法和 /etc/ld.so. ...
- Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法
Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法 参考文章: (1)Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法 (2)https: ...
- 共享打印机出错,错误代码0x00000bcb解决方法汇总
共享打印机出错,错误代码0x00000bcb解决方法汇总 参考文章: (1)共享打印机出错,错误代码0x00000bcb解决方法汇总 (2)https://www.cnblogs.com/xknigh ...
- mysql errno : 1146_MySQL_MySQL复制出错 Last_SQL_Errno:1146的解决方法,背景:我们在做数据迁移或者 - phpStudy...
MySQL复制出错 Last_SQL_Errno:1146的解决方法 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制 ...
- 尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...
Hyper-V尝试连接到服务器出错无效类的解决方法 Windows10安装Hyper-V后没有自动连接到本地计算机,手工连接失败,提示: 引用内容 尝试连接到服务器"DESKTOP-6P9L ...
- musicstore edit方法出错的原因和解决方法
musicstore edit方法出错的原因和解决方法 参考文章: (1)musicstore edit方法出错的原因和解决方法 (2)https://www.cnblogs.com/wusong/a ...
- mysql errno 1146_Mysql学习MySQL复制出错 Last_SQL_Errno:1146的解决方法
<MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法>要点: 本文介绍了MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法, ...
- mysql导出数据库1146_MySQL复制出错 Last_SQL_Errno:1146的解决方法
这篇文章主要介绍了MySQL复制出错 Last_SQL_Errno:1146的解决方法,需要的朋友可以参考下 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这 ...
- 上传word文档显示服务器出错,打开office出错的几种解决方法
打开office出错的几种解决方法 互联网 发布时间:2008-10-04 19:36:44 作者:佚名 我要评论 打开Office出错,比如无法打开Office文件.无法打开有密码保护的 ...
最新文章
- html中Marquee属性详解
- python四十三:静态属性,类方法
- 电脑内部,小贴士:电脑内部连接标准
- Google 的 C++ 代码规范
- springboot listener_看完这份springboot 全套面试提升宝典,面试不带怕的
- 怎样挑选最健康的酸奶?
- I.MX6 android 获取framebuffer信息
- zabbix 自动发现
- zk 加载 html 标签,HTML字符实体——ZK支持字符
- mysql按条件提取数据库_UIPath中级系列一之读取MySQL记录集
- r语言列表添加元素_技术贴 | R语言:geom_smooth在散点图中添加多条回归直线
- Crontab 实例
- myline java线段类,MyLine 编写一个线段类 MyLine 联合开发网 - pudn.com
- 计算机log是代表什么,Log是什么文件?Log文件可以删除吗?
- word 在试图打开时遇到错误 以及word文档的修复
- 深入探讨PageRank(四):PageRank的危机及搜索引擎的未来
- android 倒水动画,Android 模拟圆形水杯倒水的效果
- 2016依然会给我惊喜,谢谢
- 《酬乐天扬州初逢席上见赠》
- Safari安装使用JsonView插件