xend调用xenstore的出错揭秘
来源:互联网 发布:unity3d 2d游戏教程 编辑:程序博客网 时间:2024/06/05 19:03
近期发现几例问题,均是xend里面报了同一个错误
File "/usr/lib64/python2.4/site-packages/xen/xend/xenstore/xstransact.py", line 29, in __init__
self.transaction = xshandle().transaction_start()
Error: (2, 'No such file or directory')
好吧,可能有人会觉得我们太土了,怎么还在用xend,我也很鄙视自己。不管怎样,既然有问题,就得解决。刚好xenstore的实现之前也不是非常了解,借此好好学习下。
根据xend报错的路径,可以发现xshandle这个方法,里面的一个实例,只在xend start初始化一次即可。那么可以排除xshandle()这个方法出错。
transaction_start这个方法是python调用xenstore的c库方法。
xenstore一般大家都理解成一个小型db,里面存了各种domain有用的信息,我们用的还是c版的,社区已有一个ocalm写的,不过还没试用过。还好是c的,还能看懂,换了ocalm的,又要多花点一点时间了。
具体代码逻辑也就不多说了,看了应该都能明白。大致流程简单说下,就是打开xenstore的时候,建立一个连接,有对应的connection的数据结构,还有一个全局的context的东西,它里面的保存着最新数据的文件fd,及相关数据信息。所以有时候,读xenstore,可以直接内存返回,有的时候,需要重新读文件,写文件,这个就是transaction做的事情。
一个transaction_start,就是会用原来的fd读取所有数据,然后把它写到一个新的文件, transaction_end的时候,会rename成原来的文件,这就是事务的实现方法。
所以看到这里,结合errorcode,就很容易怀疑是文件操作出错之类,然后翻看系统的message日志,果然,在xend出错的时间点都对应有磁盘出错的日志。
谜底揭晓:系统盘出错导致xend调用xenstore出错
解决方案:可以临时把/var/lib/xenstored/ 软连接到/dev/shm, 再把tdb考到/dev/shm下。中间最好xend stop,避免信息出现不一致问题。
- xend调用xenstore的出错揭秘
- Xend的调试方法
- xend的安装路径
- xend的调试方法
- xenstore
- XenStore
- Xenstore简介及Xenstore读写机制的研究与实现
- Xen的配置和xend服务器的相关命令
- XenStore: 使用,结构和原理(2. XenStore的结构和通信流程)
- webservice调用出错的问题
- 学习xenstore
- 揭秘CMD中调用不支持鼠标的原因
- 调用母板页出错的解决办法
- pb调用SHFileOperation出错的问题
- 调用外部JS文件出错的解决方案
- vs2008下Cublas调用出错的解决办法
- 调用STL的sort,出错提示invalid <
- java调用带有括号的路径出错
- μC/OS-II实验:实验四 消息队列
- could not initialize proxy - no Session
- SDJZ 计算圆的周长
- μC/OS-II实验:实验五 内存管理
- Tarjan离线算法求最近公共祖先(LCA)
- xend调用xenstore的出错揭秘
- code style
- BIRT使用2:安装、一般使用顺序
- Paxos算法证明
- Android 四大组件理解.
- Android Camera系列开发 (二)通过Intent录制视频
- UML软件
- 二分图必须边--poj1486
- SDJZ 1784Digital Roots