libvirt API 的C语言调用

libvirt API 的C语言调用


一、实验名称

libvirt API 的C语言调用

二、实验目的

1.完成lbvirt的安装;
2. 编写C语言程序,实现调用libvirt API

三、实验内容及步骤.

3.1创建虚拟机

下载VMware Workstation并且创建一台虚拟机

3.2 libvirt的编译和安装

可以通过多种方式安装libvirt。普通用户如果只是使用libvirt,可以直接通过yum安装,以yum的方式安装libvirt时,只需执行“yum install libvirt”命令即可。

这里用到的是已有的压缩包,使用远程登陆工具FinalShell将主机与虚拟机(#ip addr)连接。

将libvirt-1.3.5.tar压缩包上传到虚拟机root目录下的libvirt文件夹内
在这里插入图片描述

连接成功后,切换目录至刚才新建的libvirt目录下,对所上传的压缩包进行解压:

进入文件夹:# cd libvirt
解压 :# tar -xvf libvirt-1.3.5.tar.gz
查看文件 :# ls
在这里插入图片描述

进入文件夹 :# cd libvirt-1.3.5

libvirt配置

配置libvirt时,需运行libvirt安装目录下的configure脚本文件。
在配置过程中,经常会因为缺少编译所需的包而导致配置失败。在配置失败时,按照错误提示安装相应的软件包即可,在相应的软件包安装完成后继续执行“./configure”命令进行配置,直到配置成功。
#./configure
在这里插入图片描述

可以看到这里缺少gcc,下一步:#yum install gcc安装
在这里插入图片描述

#./configure
执行命令后会显示缺少对应的安装包,根据提示进行安装

在这里插入图片描述

安装yajl-devel
#yum install yajl-devel
在这里插入图片描述
在这里插入图片描述

安装libxml2-devel
#yum install libxml2-devel
在这里插入图片描述

安装device-mapper-devel
#yum install device-mapper-devel
在这里插入图片描述

安装libpciaccess-devel
#yum install libpciaccess-devel
在这里插入图片描述

安装libnl-devel.x86_64
#yum install libnl-devel.x86_64
在这里插入图片描述
在这里插入图片描述

有时,安装相应的软件包时,又会因为缺少其他的包而引起错误,那么就需关联寻找所需的包依次进行安装。

libvirt编译

virsh通过调用libvirt API来实现虚拟化的管理,是一个完全在命令行文本模式下运行的工具,系统管理员可以通过脚本程序方便地进行虚拟化的自动部署和管理。
配置./configure成功后,在libvirt安装目录下执行“make”命令编译。命令操作如下:
#make

在使用make命令时,可以使用make的“-j”参数进行多进程编译以提高编译速度,例“make -j 4”

安装libvirt

编译成功后执行“#make install”命令进行libvirt的安装,在配置和编译libvirt时都不需要超级用户(root)权限,但是在安装时需要超级用户(root)权限,如果不是root用户登录,需切换用户或使用sudo命令。
libvirt安装时会默认安装libvirtd和virsh等可执行程序,可进行以下操作查看

查看virsh命令位置:
在这里插入图片描述

查看virsh的版本号
在这里插入图片描述

查看已经安装的libvirt

需查看libvirt是否启动,实质是查看libvirt的libvirtd -d这个守护进程是否启动。
libvirtd是libvirt虚拟化管理工具的服务器端的守护程序。如果要让某个节点能够用libvirt进行管理(无论是本地还是远程管理),都需要在这个节点上运行着libvirtd这个守护进程,以便让其他上层管理工具可以连接到该节点,libvirtd负责执行其他管理工具发送给它的虚拟化管理操作指令。而libvirt的客户端工具(包括virsh、virt-manager等)可以连接到本地或远程的libvirtd进程,以便管理节点上的客户机(启动、关闭、重启、迁移等)、收集节点上的宿主机和客户机的配置和资源使用状态。

使用以下命令查看libvirtd进程是否启动
#ps -el|grep libvirt
在这里插入图片描述

由此可知,,libvirtd进程已经启动,进程号是1053.

开启libvirtd守护进程:
#systemctl start libvirtd
#service libvirt status

3.3 libvirt中域的XML配置文件

创建一个虚拟机的硬盘,将来来存放虚拟操作系统的.这个虚拟硬盘是利用文件系统来进行模拟的.
#qemu-img create -f qcow2 -o preallocation=full /var/lib/libvirt/images/test.qcow2 10G

新建一个xly.xml文件,里面存放虚拟机的配置信息,有内存、cpu、硬盘位置、光驱、VNC等配置。
在这里插入图片描述

用virsh命令查看当前节点中的情况,再编译和运行这个示例程序去查询一些域的信息
#virsh start newlinux
#virsh define create_kvm.xml

3.4使用libvirt API查询信息
写入C语言代码,文件名为:***.c
#xly.c
在这里插入图片描述
建立到Hypervisor的连接

#virsh -c qemu:///session
在这里插入图片描述

#gcc -g -Wall xly.c -o create -lvirt

.用virsh查看虚拟机的信息
#domid newlinux
在这里插入图片描述
#dominfo newlinux

四、实验结论

通过本次实验,完成了libvirt API 的C语言调用, 知道了libvirt可以支持多种不同的Hypervisor,针对不同的Hypervisor,libvirt提供了不同的驱动,通过libvirt这个中间适配层,用户空间的管理工具可以管理多种不同的Hypervisor及其上运行的虚拟客户机。
libvirt的主要功能如下:
(1) 虚拟机管理。包括对节点上的各虚拟机的生命周期的管理,比如启动、停止、暂停、保存、恢复和迁移;也包括支持对多种设备类型的热插拔操作,例如磁盘、网卡、内存和CPU等。
2) 远程节点的管理。只要物理节点上运行了libvirt daemon,那么,远程节点上的管理程序就可以连接到该节点,然后进行管理操作,所有的libvirt功能就都可以访问和使用
(3) 存储管理:任何运行了libvirt daemon的主机,都可以通过libvirt管理不同类型的存储,(4) 网络接口管理:任何运行了libvirt daemon的主机,都可以通过libvirt管理物理和逻辑的网络接口。
(5) 虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以通过libvirt管理和创建虚拟网络。
本次实验遇到的问题:解压完libvirt的安装包,进行配置时出现了缺少对应安装包的问题,问题如下:
(1)error: You must install the libyajl library & headers to compile libvirt,error: You must install device-mapper-devel/libdevmapper >= 1.0.0 to 经过上网查找将上述所缺少的安装包 #yum install yajl_devel# yum install libxml2-devel# yum install device-mapper-devel# yum install libpciaccess-devel.x86_64解决了以上问题,安装完成后执行./configure命令。
(2)新建的虚拟机内没有gcc文件,./configure时出现错误,#yum install gcc解决该问题

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙序媛★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值