Linux 系统服务管理和控制程序(初始化系统/Init System) -- systemd 介绍
文章目錄
- systemd 簡介
- systemd 啟動過程概述
- Systemd的爭議
systemd 簡介
開發systemd的主要目的就是減少系統引導時間和計算開銷。systemd(系統管理守護進程),最開始以GNU GPL協議授權開發,現在已轉為使用GNU LGPL協議,它是如今討論最熱烈的引導和服務管理程序。如果你的Linux系統配置為使用systemd引導程序,它取替傳統的SysV init,啟動過程將交給systemd處理。systemd的一個核心功能是它同時支持SysV init的后開機啟動腳本。
systemd引入了并行啟動的概念,它會為每個需要啟動的守護進程建立一個套接字,這些套接字對于使用它們的進程來說是抽象的,這樣它們可以允許不同守護進程之間進行交互。systemd會創建新進程并為每個進程分配一個控制組(cgroup)。處于不同控制組的進程之間可以通過內核來互相通信。systemd處理開機啟動進程的方式非常漂亮,和傳統基于init的系統比起來優化了太多。讓我們看下systemd的一些核心亮點。
systemd同時也清晰地處理了系統關機過程。它在/usr/lib/systemd/目錄下有三個腳本,分別叫systemd-halt.service,systemd-poweroff.service,systemd-reboot.service。這幾個腳本會在用戶選擇關機,重啟或待機時執行。在接收到關機事件時,systemd首先卸載所有文件系統并停止所有內存交換設備,斷開存儲設備,之后停止所有剩下的進程。
systemd 啟動過程概述
讓我們看一下Linux系統在使用systemd作為引導程序時的開機啟動過程的結構性細節。為了簡單,我們將在下面按步驟列出來這個過程:
當你打開電源后電腦所做的第一件事情就是BIOS初始化。BIOS會讀取引導設備設定,定位并傳遞系統控制權給MBR(假設硬盤是第一引導設備)。
MBR從Grub或LILO引導程序讀取相關信息并初始化內核。接下來將由Grub或LILO繼續引導系統。如果你在grub配置文件里指定了systemd作為引導管理程序,之后的引導過程將由systemd完成。systemd使用“target”來處理引導和服務管理過程。這些systemd里的“target”文件被用于分組不同的引導單元以及啟動同步進程。
systemd執行的第一個目標是default.target。但實際上default.target是指向graphical.target的軟鏈接。Linux里的軟鏈接用起來和Windows下的快捷方式一樣。文件Graphical.target的實際位置是/usr/lib/systemd/system/graphical.target。在下面的截圖里顯示了graphical.target文件的內容。
"multi-user.target"會將控制權交給另一層“basic.target”。
系統引導性能分析
systemd 提供了工具用于識別和定位引導相關的問題或性能影響。systemd-analyze是一個內建的命令,可以用來檢測引導過程。你可以找出在啟動過程中出錯的單元,然后跟蹤并改正引導組件的問題。在下面列出一些常用的systemd-analyze命令。
systemd-analyze time 用于顯示內核和普通用戶空間啟動時所花的時間。
$ systemd-analyze time Startup finished in 1440ms (kernel) + 3444ms (userspace)systemd-analyze blame 會列出所有正在運行的單元,按從初始化開始到當前所花的時間排序,通過這種方式你就知道哪些服務在引導過程中要花較長時間來啟動。
$ systemd-analyze blame 2001ms mysqld.service 234ms httpd.service 191ms vmms.servicesystemd-analyze verify 顯示在所有系統單元中是否有語法錯誤。
systemd-analyze plot 可以用來把整個引導過程寫入一個SVG格式文件里。整個引導過程非常長不方便閱讀,所以通過這個命令我們可以把輸出寫入一個文件,之后再查看和分析。下面這個命令就是做這個。
systemd-analyze plot > boot.svgSystemd的爭議
Systemd并沒有幸運地獲得所有人的青睞,一些專家和管理員對于它的工作方式和開發有不同意見。根據對于Systemd的批評,它不是“類Unix”方式因為它試著替換一些系統服務。一些專家也不喜歡使用二進制配置文件的想法。據說編輯systemd配置非常困難而且沒有一個可用的圖形工具。
總結
以上是生活随笔為你收集整理的Linux 系统服务管理和控制程序(初始化系统/Init System) -- systemd 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。