近期发现几例问题,均是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的出错揭秘的更多相关文章

  1. 连续调用inet_ntoa打印出错的问题

    近日写程序,在打印信息的时候调用了inet_ntoa函数,出现了打印一直出错的情况.google了一下,是因为inet_ntoa这类函数没有保证线程安全,其实现原理是在静态内容中申请一块内存,每次调用 ...

  2. 非static成员函数通过类名::来调用,空指针调用成员方法不出错!

    首先来看这一段代码: #include <iostream> using namespace std; class A{ public: int k; void p1(){ cout< ...

  3. 项目记事【Hibernate-1】:调用 saveOrUpdate() 方法出错

    Hibernate 版本:3.3.1 背景: 后端编辑一个对象,该对象(ProductDO)下,有一个另一个自定义对象(ProductLiabilityDO)的 OneToMany 关系,如下: @O ...

  4. 水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

    用 CrystalReportViewer1 控件在asp.net的网页上显示报表,假设做报表时调用数据表数据的方式调用是能够成功的.但报表是用存储过程获取数据方式会出现下面错误: 找不到表'RptO ...

  5. c# js调用AjaxPro方法出错解析

    公司的项目的框架中有一部分用到了AjaxPro这个方法,看到这个方法的我一脸懵逼,老老实实去百度了一下. AjaxPro是.NET平台下的一个回调式AJAX框架,使用简单,功能强大.顾名思义ajax, ...

  6. 线程调用UpdateData函数出错

    在尝试线程更新界面时,在线程中调用UpdateData(FALSE)后出现如下错误: 原因: MFC对象不支持多线程操作,不能供多个线程进程使用.子线程调用pDlg-> UpdateData(F ...

  7. keras框架 反复调用model 模型 出错

    Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder_8:0", shape=(3, 3, 12 ...

  8. python调用对象属性出错:AttributeError: 'function' object has no attribute '_name_'

    出错如下图所示: 原来是因为把__name__写成_name_, 下图为正确结果:

  9. dotnetnuke 调用第三方dll出错 System.Security.Permissions.SecurityPermission,型的权限已失败。

    在dnn下调用第三方dll的微信sdk ,代码如下: WebClient wc = new WebClient();  wc.Encoding = encoding ?? Encoding.UTF8; ...

随机推荐

  1. vim 多文件编辑【超实用】

    vim 多文件编辑(偶的linux笔记) http://blog.csdn.net/lcj_cjfykx/article/details/18805721 通过vim打开的每个文件都对应着一个buff ...

  2. 远程读取URL 建议用curl代替file_get_contents

    初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了, ...

  3. [LeetCode]题解(python):044-Wildcard Matching

    题目来源: https://leetcode.com/problems/wildcard-matching/ 题意分析: 定义两个新字符规则,'?'代表任意一个字符,’*‘代表任意长度的任意字符.输入 ...

  4. js 选择器

    a>b  获取a下面的直接子元素

  5. Maven 版 JPA 最佳实践

    项目结构图 数据库环境 数据库:MySQL 版本:5.x 数据库名:jpa-demo 用户名密码:root/1234 代码清单 1:数据库脚本: /* Navicat MySQL Data Trans ...

  6. centOS下恢复win8引导

    正题(非原创): shutdown两次以后确信我的win8引导没有了 百度后找到一个修改grub.cfg文件的方法 这个文件在普通用户下是没有修改的权利的 要在sudo su之后用root权限 vi ...

  7. Linux基本配置和管理 1---- Linux网络基本配置

    1 IP编址 1 IP编址是一个双层的编址方案,一个IP编址标识一个主机(或一个网卡接口) 2 现在应用最为广泛的是ipv4,已经开始逐步香ipv6切换 3 ipv4地址为32位,ipv6为128位 ...

  8. Average(模拟)

      Average Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  9. (记录前面算过的后面仍然会用的数减小复杂度)A - AC Me

    Description Ignatius is doing his homework now. The teacher gives him some articles and asks him to ...

  10. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...