libguestfs实现原理
来源:互联网 发布:液压原理图软件 编辑:程序博客网 时间:2024/06/06 04:20
libguestfs实现原理:
libguestfs主要有三个大的部分:guestfsd,guestfs-lib,guestfish。
其中,guestfsd是一个daemon,libguestfs是一个lib,guestfish是一个命令行的工具。
guestfsd是一个daemon,但是它不是运行在host上的daemon,它运行在guest上,
libguestfs首先用febootstrap和febootstrap-supermin-helper两个工具
将host中的kernel,用得到的一些modules,配置文件和一些工具的rpm package重新组合到一起,
接着在后台启动一个qemu进程读取这个由febootstrap工具链生成的image。在用qemu启动的
这个guest里运行guestfsd这个daemon。guestfsd通过socket和host进行通信,之间建立了
一个通信的协议,它可以通过socket接受来自host端guestfs-lib写到socket的数据。guestfsd
通过分析接受到的数据,进而执行相应的do_*操作,do_*操作实际上是对guest端普通命令的一些
封装,如果想实现一个NEW API,只要在guestfsd里用相应的do_*对普通命令进行封装即可,但是
一定要将这个普通命令程序通过febootstrap打包到qemu启动时读取的image中。
guestfs-lib是一个库,它实现了一些libguestfs的库函数——guestfs_*。这些库函数向socket
发送相应的数据,数据就会被guest端的guestfsd接收到,进而分析所要执行的操作。
guestfish是对guestfs-lib接口函数的一些应用,guestfish的命令都是通过调用guestfs-lib
的库函数来实现的。
因此在使用libguestfs的时候,可以使用guestfish这样的命令行工具,也可以直接在程序(包括C,java
以及libguestfs支持的一些script language)中调用guestfs-lib实现的库函数。
如下图所示:
+--------------------------------+---------------------------------------+
| Host | Qemu Guest |
| +---------+ +----------+ +---+----+ +---------+ +------------+ |
| | gustfish|->|gustfs-lib|->| socket |->|guestfsd |->| command | |
| +---------+ +-----^----+ +---+----+ +---------| +------------+ |
| | | |Example: | |Example: | |
+ +-----------+ | + |md-stop()|->|mdadm --stop| |
| | my prog |-----+ | +---------+ +------------+ |
+--+-----------+-----------------+---------------------------------------+
libguestfs主要有三个大的部分:guestfsd,guestfs-lib,guestfish。
其中,guestfsd是一个daemon,libguestfs是一个lib,guestfish是一个命令行的工具。
guestfsd是一个daemon,但是它不是运行在host上的daemon,它运行在guest上,
libguestfs首先用febootstrap和febootstrap-supermin-helper两个工具
将host中的kernel,用得到的一些modules,配置文件和一些工具的rpm package重新组合到一起,
接着在后台启动一个qemu进程读取这个由febootstrap工具链生成的image。在用qemu启动的
这个guest里运行guestfsd这个daemon。guestfsd通过socket和host进行通信,之间建立了
一个通信的协议,它可以通过socket接受来自host端guestfs-lib写到socket的数据。guestfsd
通过分析接受到的数据,进而执行相应的do_*操作,do_*操作实际上是对guest端普通命令的一些
封装,如果想实现一个NEW API,只要在guestfsd里用相应的do_*对普通命令进行封装即可,但是
一定要将这个普通命令程序通过febootstrap打包到qemu启动时读取的image中。
guestfs-lib是一个库,它实现了一些libguestfs的库函数——guestfs_*。这些库函数向socket
发送相应的数据,数据就会被guest端的guestfsd接收到,进而分析所要执行的操作。
guestfish是对guestfs-lib接口函数的一些应用,guestfish的命令都是通过调用guestfs-lib
的库函数来实现的。
因此在使用libguestfs的时候,可以使用guestfish这样的命令行工具,也可以直接在程序(包括C,java
以及libguestfs支持的一些script language)中调用guestfs-lib实现的库函数。
如下图所示:
+--------------------------------+---------------------------------------+
| Host | Qemu Guest |
| +---------+ +----------+ +---+----+ +---------+ +------------+ |
| | gustfish|->|gustfs-lib|->| socket |->|guestfsd |->| command | |
| +---------+ +-----^----+ +---+----+ +---------| +------------+ |
| | | |Example: | |Example: | |
+ +-----------+ | + |md-stop()|->|mdadm --stop| |
| | my prog |-----+ | +---------+ +------------+ |
+--+-----------+-----------------+---------------------------------------+
- libguestfs实现原理
- libguestfs的几个小工具
- Stderr: "libguestfs: error: guestfs_launch failed.
- libguestfs 1.24 发布,虚拟机磁盘映像文件API
- 研究openstack中libguestfs密码不能注入到lvm分区镜像中问题
- CentOS7.1 KVM虚拟化之libguestfs-tools工具常用命令介绍(7)
- CentOS7.1 KVM虚拟化之libguestfs-tools工具常用命令介绍
- gzip原理与实现
- Taglib原理和实现
- Taglib原理和实现
- Portal实现原理
- RMI原理及实现
- CRC原理与实现
- WM_COPYDATA的实现原理
- JBPM的实现原理
- XIo的实现原理
- Webgis 打印实现原理
- session功能实现原理
- 《windows核心编程系列》十七谈谈dll
- repeater
- 杂谈二
- 一道SQL SERVER DateTime的试题
- 使用微软的junction!
- libguestfs实现原理
- 纪念一下Redmine 和 Git Server 的 搭建(非技术)
- Visual paradigm中的需求管理功能
- Highcharts将曲线图改为折线图
- 推荐Hadoop Stack的Slides
- 总结一下java里的Collections
- Failed to load class org.slf4j.impl.StaticLoggerBinder
- Managing Statistics part2
- 在线踢人的操作