iT邦幫忙

2023 iThome 鐵人賽

DAY 28
1

systemd 開機機制

systemd 是 Enterprise Linux 第 7 版開始正式引進使用,有許多較以往不同的特點,下表整理了傳統 init 與 systemd 的主要差異:

功能/特性 systemd init
啟動速度 使用平行處理,啟動速度更快 依順序啟動,可能較慢
服務相依性管理 自動處理服務相依性 需要手動設定 Script 以管理相依問題
日誌系統 內建 journald, 提供日誌功能 依賴於獨立的 syslog 服務
設定與管理 使用 systemctl 和 Unit 檔,更易於管理 使用不同層級的 init 指令稿 (Script)
擴展性 可以自定義 Unit 檔 通常需要修改或增加 Script

我們可以從表上看到幾個明顯的差異,尤其是系統開機的程序改善了以往依順序啟動服務的流程,這減低了系統開機時間,同時也可以充份利用現代多 CPU 核心的資源。

下圖展示了部份 systemd 開機時間軸表現:

systemd 啟動時間軸

對於系統管理員來說,systemd 的主要特性與影響情境如下整理:

  • 平行啟動
    systemd 利用平行處理來快速啟動服務。例如,若有一個 Web 服務和一個資料庫服務,而 Web 服務依賴於資料庫,則 systemd 會首先啟動數據庫服務,並且在資料庫服務成功啟動後再啟動 Web 服務,而不會等待其他不相關的服務。

  • 相依性管理
    在維護過程中,我們經常需要停止或啟動某些依賴於其他服務的服務。使用 systemd 的單位檔,我們可以清晰的定義這些相依關係,使管理更為簡單。比如,當我們需要進行資料庫升級時,可以方便地停止相依於它的所有其他服務,進行升級,然後再啟動所有相關服務。

  • 內建日誌系統
    journaldsystemd 的一部分,它不僅收集核心日誌,還收集用戶空間的日誌,這對於故障排除非常有用。假如一個服務無法啟動,使用 journalctl 可以迅速找出失敗的原因。

  • 設定和管理方便
    systemd 中,管理服務只需要簡單的 systemctl 指令。比如,要停止一個名為 httpd 的 Web 服務,你只需執行 systemctl stop httpd。這遠比編輯 init 腳本來得直接和簡單。在配置新服務時,只需要添加或修改單位檔,然後重新載入設定即可。

從以上的幾個重點項目來看,systemd 提供了一個更現代、更高效的方法來管理 Linux 服務和資源,對於系統管理員來說,掌握 systemd 會使工作更為便捷。


上一篇
Day 27: 使用 dnf 管理套件
下一篇
Day 29: systemctl 與服務管理
系列文
Linux 升華:初學者的探索到專家的洞察30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言