版本:0.9.13

libvirt库可真是大,先看看该版本里面都有哪些类和方法,验证过的方法我会用O开头,|开头的标示还没亲自验证过。

  1. <span style="font-size:18px;">CLASSES
  2. virConnect
  3. virDomain
  4. virDomainSnapshot
  5. virInterface
  6. virNWFilter
  7. virNetwork
  8. virNodeDevice
  9. virSecret
  10. virStoragePool
  11. virStorageVol
  12. virStream
  13. class virConnect
  14. |  __del__(self)
  15. |  __init__(self, _obj=None)
  16. |  baselineCPU(self, xmlCPUs, flags)
  17. |  changeBegin(self, flags)
  18. |  changeCommit(self, flags)
  19. |  changeRollback(self, flags)
  20. |  close(self)
  21. |  compareCPU(self, xmlDesc, flags)
  22. |  createLinux(self, xmlDesc, flags)
  23. |  createXML(self, xmlDesc, flags)
  24. |  defineXML(self, xml)
  25. |  dispatchDomainEventBlockPullCallback(self, dom, path, type, status, cbData)
  26. |  domainEventDeregister(self, cb)
  27. |  domainEventDeregisterAny(self, callbackID)
  28. |  domainEventRegister(self, cb, opaque)
  29. |  domainEventRegisterAny(self, dom, eventID, cb, opaque)
  30. |  domainXMLFromNative(self, nativeFormat, nativeConfig, flags)
  31. |  domainXMLToNative(self, nativeFormat, domainXml, flags)
  32. |  findStoragePoolSources(self, type, srcSpec, flags)
  33. |  getCPUStats(self, cpuNum, flags)
  34. o  getCapabilities(self)
  35. |  getCellsFreeMemory(self, startCell, maxCells)
  36. o  getFreeMemory(self)    6663041024 bytes
  37. o  getHostname(self)     client
  38. o  getInfo(self)        ['x86_64', 7846, 4, 2394, 1, 1, 4, 1]
  39. o  getLibVersion(self)    9013 ------0.9.13-0ubuntu12.2
  40. |  getMaxVcpus(self, type)   160----type是xml配置文件中domain参数的值
  41. |  getMemoryStats(self, cellNum, flags)
  42. o  getSysinfo(self, flags)
  43. o  getType(self)          QEMU
  44. o  getURI(self)          qemu:///system
  45. o  getVersion(self)      1002000
  46. |  interfaceDefineXML(self, xml, flags)
  47. |  interfaceLookupByMACString(self, macstr)
  48. |  interfaceLookupByName(self, name)
  49. o  isAlive(self)        1
  50. o  isEncrypted(self)     0
  51. o  isSecure(self)        1
  52. o  listAllDomains(self, flags)
  53. o  listDefinedDomains(self)    ['kvm-t1']   列出offline的domains
  54. o  listDefinedInterfaces(self)   []
  55. o  listDefinedNetworks(self)     ['default']
  56. o  listDefinedStoragePools(self)   []
  57. |  listDevices(self, cap, flags)
  58. o  listDomainsID(self)    [2, 3]
  59. o  listInterfaces(self)   ['br0', 'lo']
  60. o  listNWFilters(self)
  61. o  listNetworks(self)
  62. o  listSecrets(self)
  63. o  listStoragePools(self)
  64. o  lookupByID(self, id)
  65. o  lookupByName(self, name)
  66. |  lookupByUUID(self, uuid)
  67. o  lookupByUUIDString(self, uuidstr)
  68. |  migrate(self, domain, flags, dname, uri, bandwidth)
  69. |  migrate2(self, domain, dxml, flags, dname, uri, bandwidth)
  70. |  networkCreateXML(self, xmlDesc)
  71. |  networkDefineXML(self, xml)
  72. |  networkLookupByName(self, name)
  73. |  networkLookupByUUID(self, uuid)
  74. |  networkLookupByUUIDString(self, uuidstr)
  75. |  newStream(self, flags)
  76. |  nodeDeviceCreateXML(self, xmlDesc, flags)
  77. |  nodeDeviceLookupByName(self, name)
  78. |  numOfDefinedDomains(self)
  79. |  numOfDefinedInterfaces(self)
  80. |  numOfDefinedNetworks(self)
  81. |  numOfDefinedStoragePools(self)
  82. |  numOfDevices(self, cap, flags)
  83. |  numOfDomains(self)
  84. |  numOfInterfaces(self)
  85. |  numOfNWFilters(self)
  86. |  numOfNetworks(self)
  87. |  numOfSecrets(self)
  88. |  numOfStoragePools(self)
  89. |  nwfilterDefineXML(self, xmlDesc)
  90. |  nwfilterLookupByName(self, name)
  91. |  nwfilterLookupByUUID(self, uuid)
  92. |  nwfilterLookupByUUIDString(self, uuidstr)
  93. |  restore(self, frm)
  94. |  restoreFlags(self, frm, dxml, flags)
  95. |  saveImageDefineXML(self, file, dxml, flags)
  96. |  saveImageGetXMLDesc(self, file, flags)
  97. |  secretDefineXML(self, xml, flags)
  98. |  secretLookupByUUID(self, uuid)
  99. |  secretLookupByUUIDString(self, uuidstr)
  100. |  secretLookupByUsage(self, usageType, usageID)
  101. |  setKeepAlive(self, interval, count)
  102. |  storagePoolCreateXML(self, xmlDesc, flags)
  103. |  storagePoolDefineXML(self, xml, flags)
  104. |  storagePoolLookupByName(self, name)
  105. |  storagePoolLookupByUUID(self, uuid)
  106. |  storagePoolLookupByUUIDString(self, uuidstr)
  107. |  storageVolLookupByKey(self, key)
  108. |  storageVolLookupByPath(self, path)
  109. |  suspendForDuration(self, target, duration, flags)
  110. |  virConnGetLastError(self)
  111. |  virConnResetLastError(self)
  112. class virDomain
  113. o  ID(self)
  114. 获取domainID
  115. o  OSType(self)
  116. 获取domain的type
  117. o  UUID(self)
  118. 获取domain的UUID
  119. o  UUIDString(self)
  120. 以字符串的形式获取domian的UUID
  121. o  XMLDesc(self, flags)
  122. 提供一个描述domian的xml文件,该文件会在后面用来relanuch domain
  123. |  __del__(self)
  124. |  __init__(self, conn, _obj=None)
  125. |  abortJob(self)
  126. 快速的终止在后台运行的任务,
  127. |  attachDevice(self, xml)
  128. 创建一个虚拟设备,挂载到后端,类似于热插拔技术,只被允许在活跃的domian上面
  129. |  attachDeviceFlags(self, xml, flags)
  130. 挂载一个虚拟设备到domian上面,flags标志控制挂载的方式。
  131. o  autostart(self)
  132. 获取domian的自启动标志
  133. |  blkioParameters(self, flags)
  134. 获取blkio参数
  135. |  blockInfo(self, path, flags)
  136. 获取domian的块设备大小的信息
  137. |  blockIoTune(self, disk, flags)
  138. |  blockJobAbort(self, disk, flags)
  139. 取消一个活跃的块设备....
  140. |  blockJobInfo(self, path, flags)
  141. 针对一个块任务获取process信息
  142. |  blockJobSetSpeed(self, disk, bandwidth, flags)
  143. |  blockPeek(self, disk, offset, size, flags)
  144. 读取domian的disk设备的内容
  145. |  blockPull(self, disk, bandwidth, flags)
  146. |  blockRebase(self, disk, base, bandwidth, flags)
  147. |  blockResize(self, disk, size, flags)
  148. resize一个domian的块设备大小,在domian运行时。
  149. |  blockStats(self, path)
  150. 获取一个domain的块设备的统计信息
  151. |  blockStatsFlags(self, path, flags)
  152. 在domain运行时获取块设备的统计参数
  153. o  controlInfo(self, flags)
  154. 获取一个domain控制接口的详细信息
  155. |  coreDump(self, to, flags)
  156. o  create(self)
  157. 创建一个domian,如果成功,则会把domian移动到运行domian池中。
  158. o  createWithFlags(self, flags)
  159. o  destroy(self)
  160. o  destroyFlags(self, flags)
  161. |  detachDevice(self, xml)
  162. |  detachDeviceFlags(self, xml, flags)
  163. |  diskErrors(self, flags)
  164. 获取disk设备的错误信息
  165. |  getCPUStats(self, total, flags)
  166. 获取运行domian的cpu的统计信息
  167. |  hasCurrentSnapshot(self, flags)
  168. 决定domian是否做一个snapshot
  169. |  hasManagedSaveImage(self, flags)
  170. o  info(self)      [1, 2097152L, 2097152L, 1, 459250000000L]
  171. 获取一个domian的信息
  172. |  injectNMI(self, flags)
  173. |  interfaceParameters(self, device, flags)
  174. 获取接口设备的带宽
  175. o  interfaceStats(self, path)     (119092654L, 1179917L, 0L, 0L, 723682L, 9669L, 0L, 0L)---interfaceStats('vnet0') vnet0通过XMLDesc获取
  176. 获取一个domian的接口设备的统计信息
  177. o  isActive(self)
  178. 判断一个domian是否在运行
  179. o  isPersistent(self)
  180. 判断一个domian是否和配置文件是强联系的,也就是在shutdown之后他仍旧存在
  181. o  isUpdated(self)
  182. o  jobInfo(self)     [0, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]
  183. o  listAllSnapshots(self, flags)
  184. 列出所有的快照
  185. |  managedSave(self, flags)
  186. 该函数会suspend一个domian并且保存他在内存中的东西到磁盘上。
  187. |  managedSaveRemove(self, flags)
  188. o  maxMemory(self)
  189. 检索分配给该domian的最大物理内存
  190. o  maxVcpus(self)
  191. 给guest vm提供的最大vcpu数目
  192. o  memoryParameters(self, flags)    {'swap_hard_limit': 9007199254740991L, 'hard_limit': 9007199254740991L, 'soft_limit': 9007199254740991L}
  193. 获取内存参数
  194. |  memoryPeek(self, start, size, flags)
  195. 读取domain的内存中的数据
  196. o  memoryStats(self)     {'actual': 2097152L, 'rss': 375248L}
  197. 获取一个domain的内存统计信息
  198. |  metadata(self, type, uri, flags)
  199. |  migrate(self, dconn, flags, dname, uri, bandwidth)
  200. 迁移一个domian从一台host到另一台host
  201. |  migrate2(self, dconn, dxml, flags, dname, uri, bandwidth)
  202. |  migrateGetMaxSpeed(self, flags)
  203. 获取一个domian当前配置的最大迁移速度
  204. |  migrateSetMaxDowntime(self, downtime, flags)
  205. |  migrateSetMaxSpeed(self, bandwidth, flags)
  206. |  migrateToURI(self, duri, flags, dname, bandwidth)
  207. |  migrateToURI2(self, dconnuri, miguri, dxml, flags, dname, bandwidth)
  208. o  name(self)
  209. 获取一个domian的公共名称
  210. |  numaParameters(self, flags)
  211. 获取NUMA参数
  212. |  openConsole(self, dev_name, st, flags)
  213. |  openGraphics(self, idx, fd, flags)
  214. |  pMSuspendForDuration(self, target, duration, flags)
  215. |  pMWakeup(self, flags)
  216. |  pinVcpu(self, vcpu, cpumap)
  217. |  pinVcpuFlags(self, vcpu, cpumap, flags)
  218. o  reboot(self, flags)
  219. reboot一个domian
  220. o  reset(self, flags)
  221. 立即reset一个domian
  222. o  resume(self)
  223. |  revertToSnapshot(self, snap, flags)
  224. o  save(self, to)
  225. |  saveFlags(self, to, dxml, flags)
  226. o  schedulerParameters(self)    {'vcpu_quota': -1L, 'vcpu_period': 100000L, 'cpu_shares': 1024L}
  227. 获取调度参数
  228. o  schedulerParametersFlags(self, flags)
  229. o  schedulerType(self)
  230. 获取调度类型
  231. |  screenshot(self, stream, screen, flags)
  232. |  sendKey(self, codeset, holdtime, keycodes, nkeycodes, flags)
  233. o  setAutostart(self, autostart)
  234. 配置domian是否在宿主机启动后自启动
  235. |  setBlkioParameters(self, params, flags)
  236. |  setBlockIoTune(self, disk, params, flags)
  237. |  setInterfaceParameters(self, device, params, flags)
  238. |  setMaxMemory(self, memory)
  239. 动态改变一个domian的最大物理内存
  240. o  setMemory(self, memory)
  241. 动态改变分配给一个domian的物理内存
  242. o  setMemoryFlags(self, memory, flags)
  243. |  setMemoryParameters(self, params, flags)
  244. |  setMetadata(self, type, metadata, key, uri, flags)
  245. |  setNumaParameters(self, params, flags)
  246. |  setSchedulerParameters(self, params)
  247. |  setSchedulerParametersFlags(self, params, flags)
  248. |  setVcpus(self, nvcpus)
  249. 动态改变一个domian的vcpus
  250. |  setVcpusFlags(self, nvcpus, flags)
  251. o  shutdown(self)
  252. 关闭一个domian
  253. o  shutdownFlags(self, flags)
  254. |  snapshotCreateXML(self, xmlDesc, flags)
  255. |  snapshotCurrent(self, flags)
  256. |  snapshotListNames(self, flags)
  257. |  snapshotLookupByName(self, name, flags)
  258. |  snapshotNum(self, flags)
  259. o  state(self, flags)
  260. 检查一个domian的状态
  261. o  suspend(self)
  262. suspends一个活跃的domian
  263. o  undefine(self)
  264. undefine一个domian
  265. o  undefineFlags(self, flags)
  266. |  updateDeviceFlags(self, xml, flags)
  267. o  vcpuPinInfo(self, flags)
  268. 获取cpu到vcpu的亲和性
  269. o  vcpus(self)
  270. 获取vcpus的信息
  271. |  vcpusFlags(self, flags)
  272. 查询一个domian使用了多少个vcpus
  273. class virDomainSnapshot
  274. |  __del__(self)
  275. |  __init__(self, dom, _obj=None)
  276. |  delete(self, flags)
  277. 删除一个快照
  278. |  domain(self)
  279. |  getConnect(self)
  280. |  getDomain(self)
  281. |  getName(self)
  282. |  getParent(self, flags)
  283. |  getXMLDesc(self, flags)
  284. 提供一个描述domian snapshot的xml文件
  285. |  hasMetadata(self, flags)
  286. |  isCurrent(self, flags)
  287. |  listAllChildren(self, flags)
  288. |  listChildrenNames(self, flags)
  289. |  numChildren(self, flags)
  290. |  ref(self)
  291. class virInterface
  292. |  MACString(self)
  293. |  XMLDesc(self, flags)
  294. |  __del__(self)
  295. |  __init__(self, conn, _obj=None)
  296. |  connect(self)
  297. |  create(self, flags)
  298. |  destroy(self, flags)
  299. |  isActive(self)
  300. |  name(self)
  301. |  undefine(self)
  302. class virNWFilter
  303. |  UUID(self)
  304. |  UUIDString(self)
  305. |  XMLDesc(self, flags)
  306. |  __del__(self)
  307. |  __init__(self, conn, _obj=None)
  308. |  connect(self)
  309. |  name(self)
  310. |  undefine(self)
  311. class virNetwork
  312. |  UUID(self)
  313. |  UUIDString(self)
  314. |  XMLDesc(self, flags)
  315. |  __del__(self)
  316. |  __init__(self, conn, _obj=None)
  317. |  autostart(self)
  318. |  bridgeName(self)
  319. |  connect(self)
  320. |  create(self)
  321. |  destroy(self)
  322. |  isActive(self)
  323. |  isPersistent(self)
  324. |  name(self)
  325. |  setAutostart(self, autostart)
  326. |  undefine(self)
  327. class virNodeDevice
  328. |  XMLDesc(self, flags)
  329. 获取描述device各个方面信息的xml文件
  330. |  __del__(self)
  331. |  __init__(self, conn, _obj=None)
  332. |  connect(self)
  333. |  destroy(self)
  334. 破坏device对象,虚拟device会在host的系统中被移除
  335. |  dettach(self)
  336. |  listCaps(self)
  337. 列出node设备的能力
  338. |  name(self)
  339. 返回device的名称
  340. |  numOfCaps(self)
  341. |  parent(self)
  342. |  reAttach(self)
  343. |  reset(self)
  344. class virSecret
  345. |  UUID(self)
  346. 获取一个secret的UUID
  347. |  UUIDString(self)
  348. 以字符串的形式获取一个secret的UUID
  349. |  XMLDesc(self, flags)
  350. 获取一个描述secret的xml文件
  351. |  __del__(self)
  352. |  __init__(self, conn, _obj=None)
  353. |  connect(self)
  354. |  setValue(self, value, flags)
  355. 使用secret联合一个值
  356. |  undefine(self)
  357. 删除一个特定的secret
  358. |  usageID(self)
  359. |  usageType(self)
  360. |  value(self, flags)
  361. 使用secret获取联合的值
  362. class virStoragePool
  363. |  UUID(self)
  364. 获取存储池唯一的UUID
  365. |  UUIDString(self)
  366. 以字符串的形式获取存储池的UUID
  367. |  XMLDesc(self, flags)
  368. 获取一个描述存储池各个方面信息的xml文件,
  369. |  __del__(self)
  370. |  __init__(self, conn, _obj=None)
  371. |  autostart(self)
  372. 获取一个存储池的自启动标志
  373. |  build(self, flags)
  374. 目前只有文件系统池可以接受VIR_STORAGE_POOL_BUILD_OVERWRITE和VIR_STORAGE_POOL_BUILD_NO_OVERWRITE.
  375. |  connect(self)
  376. |  create(self, flags)
  377. 创建一个不活跃的存储池
  378. |  createXML(self, xmldesc, flags)
  379. 用xml文件中描述的存储池创建一个存储卷,不是所有的池都支持创建卷
  380. |  createXMLFrom(self, xmldesc, clonevol, flags)
  381. 在父存储池中创建一个存储卷,
  382. |  delete(self, flags)
  383. 删除底层资源,该操作时不可恢复的,
  384. |  destroy(self)
  385. 破坏一个活跃的存储池,他会使host上的池无效,但是会保持配置文件的联系,
  386. |  info(self)
  387. 获取存储池的信息,
  388. |  isActive(self)
  389. 探测一个存储池是否在运行
  390. |  isPersistent(self)
  391. 判断一个存储池是否是配置文件强联系的,就是在shutdown之后仍旧存在。
  392. |  listVolumes(self)
  393. 列出存储卷
  394. |  name(self)
  395. 获取存储池本地唯一的名称
  396. |  numOfVolumes(self)
  397. 获取池中有多少个存储卷
  398. |  refresh(self, flags)
  399. 请求存储池更新它包含的存储卷
  400. |  setAutostart(self, autostart)
  401. 设置自启动标志
  402. |  storageVolLookupByName(self, name)
  403. 在一个存储池中获取一个指向存储卷的指针
  404. |  undefine(self)
  405. 取消一个不活跃的存储池
  406. class virStorageVol
  407. |  XMLDesc(self, flags)
  408. 获取一个描述各个卷存储的xml文件
  409. |  __del__(self)
  410. |  __init__(self, conn, _obj=None)
  411. |  connect(self)
  412. |  delete(self, flags)
  413. 在存储池中删除卷存储。
  414. |  download(self, stream, offset, length, flags)
  415. 以流的形式下载卷中的内容,如果length是0,则在offset后面的内容都会被下载。这个调用是异步的
  416. |  info(self)
  417. 获得关于卷存储的信息,
  418. |  key(self)
  419. 获取卷存储的key,这个值是全局唯一的,所以相同的卷的值相同。
  420. |  name(self)
  421. 获取存储卷的名称,该名称在存储池中是唯一的。
  422. |  path(self)
  423. 获取存储卷的路径,取决于池的配置。既可以固定分配给host也可以动态的分配。
  424. |  resize(self, capacity, flags)
  425. 改变存储卷vol的容量到capacity,如果新的容量需求超过了空闲的池容量,则会失败。
  426. |  storagePoolLookupByVolume(self)
  427. 查找一个指定的卷包含在那个存储池中
  428. |  upload(self, stream, offset, length, flags)
  429. 把一个流的内容上传到卷中。如果offset+length的大小超过了卷的容量,则会失败。
  430. |  wipe(self, flags)
  431. |  wipePattern(self, algorithm, flags)
  432. 和virStorageVolWipe类似, 但是可以选择不同的wiping 算法。
  433. class virStream
  434. |  __del__(self)
  435. |  __init__(self, conn, _obj=None)
  436. |  abort(self)
  437. |  connect(self)
  438. |  download(self, vol, offset, length, flags)
  439. |  eventAddCallback(self, events, cb, opaque)
  440. |  eventRemoveCallback(self)
  441. |  eventUpdateCallback(self, events)
  442. |  finish(self)
  443. |  recv(self, nbytes)
  444. |  recvAll(self, handler, opaque)
  445. |  screenshot(self, domain, screen, flags)
  446. |  send(self, data)
  447. |  sendAll(self, handler, opaque)
  448. |  upload(self, vol, offset, length, flags)
  449. FUNCTIONS
  450. getVersion(name=None)   如果没有name参数,或者name参数的值是None,则会返回libvirt的version,如果name参数的值是libvirt的lib库中的一个连接,则会返回一个元祖(library version,driver version)。如果name参数传入的是一个不存在的驱动,则会返回'no support for hypervisor'.
  451. open(name)
  452. 这个函数应该在建立到Hypervisor和xen store的连接时首先被调用。
  453. openAuth(uri, auth, flags)
  454. openReadOnly(name)
  455. 该函数建立一个到lib库函数的受限制的连接,The set of APIs usable are then restricted
  456. on the available methods to control the domains。查看virConnectOpen了解环境变量,他们可以影响opening 驱动。
  457. registerErrorHandler(f, ctx)
  458. 注册一个python函数用来报告error
  459. virEventAddHandle(fd, events, cb, opaque)
  460. 注册一个回调函数,用来监控文件句柄
  461. @fd: file handle to monitor for events
  462. @events: bitset of events to watch from virEventHandleType constants
  463. @cb: callback to invoke when an event occurs
  464. @opaque: user data to pass to callback
  465. virEventAddTimeout(timeout, cb, opaque)
  466. 为时间事件注册一个回调函数
  467. @timeout: time between events in milliseconds
  468. @cb: callback to invoke when an event occurs
  469. @opaque: user data to pass to callback
  470. virEventRegisterDefaultImpl()
  471. virEventRegisterImpl(addHandle, updateHandle, removeHandle, addTimeout, updateTimeout, removeTimeout)
  472. virEventRemoveHandle(watch)
  473. virEventRemoveTimeout(timer)
  474. virEventRunDefaultImpl()
  475. 运行一个迭代的循环事件,
  476. virEventUpdateHandle(watch, events)
  477. virEventUpdateTimeout(timer, timeout)
  478. virGetLastError()
  479. 提供一个获得最近发生在lib库级别的错误信息的指针
  480. virInitialize()
  481. 初始化lib库,调用该函数是强制的,除非你在第一次API调用时,使用的是virconnectopen*
  482. virResetLastError()
  483. 重置最后一次在lib库级别获得的错误日志,该错误对象保存在本地的线程中</span>

通过python-libvirt管理KVM虚拟机 源码的更多相关文章

  1. Python内存管理机制-《源码解析》

    Python内存管理机制 Python 内存管理分层架构 /* An object allocator for Python. Here is an introduction to the layer ...

  2. 使用 libvirt创建和管理KVM虚拟机

      1. libvirt介绍    Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等.Libvirt概括起来包括一个API库.一个 daemon(libv ...

  3. 管理KVM虚拟机(二)

    管理KVM虚拟机 工具:libvirt 官网:http://libvirt.org/ 介绍:Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 ...

  4. 『学了就忘』Linux服务管理 — 79、源码包安装的服务管理

    目录 1.源码包服务的启动管理 2.源码包服务的自启动管理 3.让源码包服务被服务管理命令识别 1.源码包服务的启动管理 # 通过源码包的安装路径,找到该服务的启动脚本, # 也就是获得该服务的启动脚 ...

  5. 使用libvirt管理KVM(一)

    一. 安装和配置libvirt,源码下载http://www.qemu-project.org/download/#source. 二. 从包和源码包进行安装libvirt. 1. 在ubuntu系统 ...

  6. Linux 中使用 virsh 管理 KVM 虚拟机 (转)

    术语 虚拟化指的是:在相同的物理(硬件)系统上,同时运行多个操作系统,且这几个系统相互隔离的可能性,而那个硬件在虚拟化架构中被称作宿主机(host).虚拟机监视器(也被称为虚拟机管理程序(hyperv ...

  7. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  8. nova创建虚拟机源码分析系列之五 nova源码分发实现

    前面讲了很多nova restful的功能,无非是为本篇博文分析做铺垫.本节说明nova创建虚拟机的请求发送到openstack之后,nova是如何处理该条URL的请求,分析到处理的类. nova对于 ...

  9. 13行代码实现:Python实时视频采集(附源码)

    一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...

随机推荐

  1. 转载:librdkafka问题总结

    使用librdkafka过程中,遇到的一些问题,解决办法! 暂时先转载:form:http://blog.csdn.net/lybingo/article/details/52808192?locat ...

  2. linux下网络配置小节[from 老男孩的linux运维笔记]

    对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太多的初学者徘徊在门外就不奇怪了, 这里,老男孩老师花了一些时间总结了这个文档小结,也还不够完善,欢迎大家补充,交流. ...

  3. WebDriver基本操作入门及UI自动化练手页面

    在这里集中了我们在做UI自动化时常见的一些控件操作.希望能对新手有帮助. 下载地址:http://files.cnblogs.com/zhangfei/demo.rar package com.tes ...

  4. IT系统故障引起的一个事故的思考

    记得几年前在我以前工作过的一个公司,因为系统的一个审批流突然中断,而且也没有在系统中触发邮件和短信等提示消息,而且我们的相关的审批人员和发 起人也没有在意.直到流程发起的同事在采购物品即将要使用的前2 ...

  5. C++题目一道: 重载`->': 您真的懂成员访问运算符的重载吗?

    原题目在这里: http://hi.baidu.com/shilyx/item/672736e14a14a90c64db003a 要求: //给出类Test的定义和实现,使程序编译通过, //并且ma ...

  6. 【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  7. vs 2017打包安装包(印象深刻)

    Visual Studio Install 打包安装项目2017 以下是具体步骤 一.安装环境 1.下载:链接地址 2.安装vs2017的时候需要安装依赖 .NET framework 4.6 .下载 ...

  8. Oracle多表关联如何更新多个字段

    注意点:1.被update主表一定要加上过滤条件.2.查询出来更新结果集,同时也要作为被更新主表的条件,作为同步大家都是更新这部分数据.update student stu set (stu.name ...

  9. spring(三) spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  10. 【Unity】7.5 移动设备输入

    分类:Unity.C#.VS2015 创建日期:2016-04-21 一.简介 在iOS和Android系统中,操作都是通过触摸来完成的.Input类中对触摸操作的方法或变量如下图所示: 通过GetT ...