关于init的几点记录





Systemd简介和特点

systemd的目标是:尽可能启动更少的进程、尽可能将更多的进程并行启动


设计点1:

对于传统的SysV init,假如要启动7个服务,那么这7个启动服务是有先后顺序的,也就是串行启动,串行启动的原因可能是某些服务依赖于另一些服务,那么被的服务将会被先启动,但是并不是所有的服务都相关联,于是有些服务之间其实可以是并行启动的。

对于upstart,对于有依赖性的服务可以按先后顺序启动,而对于不存在依赖关系的服务则可以并行启动,且UpStart 采用事件驱动机制,服务可以暂不启动,当需要的时候才通过事件触发其启动。

不过systemd能够更进一步提高并发性,即使对于upstart而言存在依赖性必须先后启动的服务(难道upstart人物存在依赖儿systemd是认为不存在的?那systemd是否也存在先后执行的任务);systemd可以提供按需启动的能力,只有某个服务被真正请求时再启动,当服务结束时,systemd可以关闭它。


设计点2:

关闭一个服务比启动一个服务更难,最初启动服务可能只是exec一个程序,而对于某个服务守护进程而言,其可能派生很多的子进程去执行各个任务,例如httpd、sshd等服务。一个init程序的一个重要职责就是管理跟踪和管理服务进程的生命周期。

为了处理这些问题,Upstart通过strike来跟踪fork、exit等系统调用。

systems则使用linux内核提供的CGroup来完成跟跟踪的任务,当停止服务时,systemd会通过查询CGoups,找到所有同属于一个CGroup的相关进程,而干净利落的停止这些进程。


设计点3:

启动挂载点和自动挂载的管理

SysV init利用/etc/fstab在系统启动时挂载相应的磁盘分区,和sysV init一样,systemd也会管理这些挂载信息,并且兼容Sysv init的配置文件/etc/fstab,我们可以继续使用/etc/fstab配置文件去管理挂载。另外,我们在执行动态挂载比如NFS、或者ISO等时,在Sysv init中我们要额外的安装autofs服务;而在systemd中,这些功能都是内置的,可以直接使用systemd的自动挂载功能而无需安装其他服务。


设计点4:
事物依赖性管理
systemd能最大程度的并行依赖性的任务,但对于那些天生有先后依赖性的服务还是要按照顺序执行,对于这些任务,systemd 维护一个"事务一致性"的概念,保证所有相关的服务都可以正常启动而不会出现互相依赖,以至于死锁的情况。


设计点5:
日志服务
systemd 自带日志服务 journald,该日志服务的设计初衷是克服现有的 syslog 服务的缺点。

抄袭链接:http://www.ibm.com/developerworks/cn/linux/1407_liuming_init3/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值