手动编译安装Libvirt之后利用systemctl管理libvirtd服务
因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用systemctl管理libvirtd服务,只能通过libvirtd -d的方式手动启动。然而,手动启动的Libvirtd服务并不符合开发规范,所以只能手动把libvirtd.service添加到systemctl管理。
这就要详解下systemctl管理程序了
一、systemctl介绍
systemctl 是一个systemd工具,主要负责控制systemd系统和服务管理器,而Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程,当前redhat系列的Linux发行版都是采用这种方式。Systemd的功能是用于集中管理和配置类UNIX系统。而我们要通过systemctl管理服务原因之一也是想让系统进程启动我们的服务,这在标签机制中涉及到标签的继承问题,这里不在深入。
二、通过systemctl管理服务
通过systemctl管理服务简单高效,本来还是想深入分析写勒,但是突然发现一个大牛的博客,这里我就不画蛇添足了,需要的可以参考:
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
重点写下通过systemctl管理libvirtd的具体步骤:
1、systemctl管理的每个单元都有一个文件与之对应,以sshd服务来讲,对应的就是sshd.service,存在于/usr/lib/systemd/system/文件夹下,而在/etc/systemd/system/文件夹下有该文件的软连接,表明这是自动启动的。为了简便,我是从别处通过rpm包安装的libvirt机器上拷贝其libvirtd.service文件到本机的/etc/systemd/system/文件夹下。
文件内容如图所示:
其中的大部分内容不需要改动,就是下面的文件的路径需要改,因为手动编译安装的libvirt安装路径在/usr/local/sbin/libvirtd
另外需要注意的是上面Unit单元里面after表示该服务以来上面的服务,这里libvirt-guest.service在手动编译安装的版本里面没有,需要我们自行安装,其具体作用不详。没有libvirt-client.service,libvirt仍然可以正常工作可以看出这个并不影响Libvirt基本功能,其所作的应该是管理类的工作。没有libvirt-client.service通过systemctl 没办法正常管理libvirtd.service
2、复制配置文件/etc/sysconfig/libvirtd文件到本机同等目录
3、安装libvirt-guests
yum install libvirt-guests
4、执行函数重新载入
systemctl damon-reload
5、测试
systemctl status libvirtd.service
systemctl start libvirtd.service
systemctl restart libvirtd.service
systemctl enable libvirtd.service
查看状态:
最新文章
- 浅入浅出dubbo
- 附加数据库失败,操作系统错误 5:";5(拒绝访问。)";的解决办法
- 如何通俗地理解 Gradle
- 我的PHP之旅--PHP的函数初步认识
- Android bitmap序列化
- dsp下基于双循环缓冲队列的视频采集和显示记录
- cli/php.ini和fpm/php.ini的区别
- VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时
- C#连接字符串
- Cookie-parser
- 杨韬的Python/Jupyter学习笔记
- c++: internal compiler error: Killed
- history 基本用法
- (转)【学习笔记】通过netstat+rmsock查找AIX端口对应进程
- Python通过ssh连接服务器并执行命令
- scala分析数据作图
- Element ui 中使用table组件实现分页记忆选中
- Maximum repetition substring POJ - 3693(重复次数最多的连续重复子串)
- VUE 数据绑定
- [bzoj3098]Hash Killer 2——哈希