版本: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. MySQL的keepalived高可用监控脚本

    MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...

  2. Linux如何实现开机启动程序详解(转)

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  3. 【Struts2】SSH如何返回JSON数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  4. Linux下使用Nexus搭建Maven私服

    在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的.另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新.可以通过搭建公司内部的Maven服务器,将第三方和内部的 ...

  5. 面试求职中你需要了解的Java面向对象

    从毕业到现在,笔试过好多场 也面了好多场, 一直想写一些东西给找工作的朋友,这篇文章结合个人经历讲解面试中的面向对象.里边有些实例个人以面试题的形式写出来,从程序角度去b帮助大家了解学习,最后希望大家 ...

  6. 《JAVA与模式》之装修者模式

    装饰者模式 动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 具体被装饰者和抽象装饰类都继承于抽象被装饰者类,继承的是类型,而不是行为.行为来自装饰者和基础组件,或与其他 ...

  7. Eclipse插件的安装与配置

    1.下载插件时注意要和Eclipse版本兼容. 2.安装Eclipse插件时注意是否要安装其他的插件,这一点很容易被忽视. 3.有时启动Eclipse未加载插件,解决方法很多,总结一下:     a ...

  8. nginx访问日志,错误日志参数说明

    说明: nginx日志主要有两种:访问日志.错误日志.其中访问日志记录客户端访问nginx的每一个请求,包含用户地域来源.跳转来源.使用终端.某个URL访问量等信息,访问日志格式可以自定义:错误日志则 ...

  9. 数据库查询实例(包含所有where条件例子)

    查询指定列 [例1] 查询全体学生的学号与姓名. SELECT Sno,Sname FROM Student: [例2] 查询全体学生的姓名.学号.所在系. SELECT Sname,Sno,Sdep ...

  10. CSS艺术字

    一.使用canvas自己画 1. 脚本部分 <script type="text/javascript"> function drawText() { var canv ...