概述:
CentOS 6和之前版本采用SysVinit的系统启动进程管理体系,一般用户都可通过在/etc/inittab文件的配置,来个性化自己的系统启动序列。但也经常会由于特殊环境的硬件等关系问题,造成其串行的启动进程控制流,因为可能任务的阻塞而影响启动过程。
CentOS 7开始使用Systemd,所以我们必须要了解Systemd.本章将从CentOS 7 的启动流程、Unit、服务管理,启动排错,破解口令以及修复grub2 等方面来介绍Systemd的相关内容。
CentOS6与CentOS7上对服务的管理方式对比总结
systemd:
一、启动流程
POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs(根切换)
–> /sbin/init
init:
init:CentOS 5: SysVinit;
CentOS 6: Upstart;
CentOS 7: Systemd;
Systemd:
系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程;
Systemd新特性
系统引导时实现服务并行启动;
按需启动守护进程;
自动化的服务依赖关系管理;
同时采用socket式与D-Bus总线式激活服务;
系统状态快照。
二、核心概念:unit
unit由其相关配置文件进行标识,识别和配置;文件中主要包含了系统服务,监听的socket,保存的快照
以及其他的与init相关的信息;这些配置文件主要保在/usr/lib/systemd/system,
/run/systemd/system,/etc/systemd/system
配置文件:
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似与/etc/rc.d/rcN.d/Sxx类的功能,比上
面目录优先运行
unit的常见类型:
Systemctl –t help 查看unit类型;
Service unit:文件扩展名为.service,用于定义系统服务
Target unit:文件扩展名为.target,用于模拟实现"运行级别"
Device unit:文件扩展名为.device,用于定义内核识别的设备;
Mount unit:文件扩展名.mount,用于定义文件系统挂载点;
Socket unit:文件扩展名.socket,用于标识进程间通信用到的socket文件;也可在系统启动时,
延迟启动服务,实现按需启动;
Snapshot unit:文件扩展名.snapshot:用于管理系统快照
Swap unit:文件扩展名.swap:用于标识管理swap设备
Automount unit:.automount:文件系统自动挂载点设置
Path unit:.path,用于定义文件系统的一文件或目录;常用于当文件系统变化时,延迟激活服务,
如:spool 目录
关键特性:
基于socket的激活机制:socket与程序分离;
基于bus的激活机制;
基于device的激活机制;
基于path的激活机制;
系统快照:保存个unit的当前状态信息于持久存储设备中;
向后兼容sysv init 脚本;
/etc/init.d/
不兼容:
systemctl的命令是固定不变的;
非由systemd启动的服务,systemctl无法与之通信
三、管理系统服务:
CentOS 7:service类型的unit文件
注意:能兼容早期的服务脚本
systemctl命令:
systemctl – Control the systemd system and service manager
格式为:systemctl [OPTIONS…] COMMAND [NAME…]
命令对比:
启动:service NAME