Giới Thiệu Về Init System Và Run Level

Bài viết này sẽ Giới Thiệu Về Init System Và Run Level. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

Đối với các SysAdmin, SysEngineer, DevOps thì việc quản trị các dịch vụ như web, mail, application, database… là những công việc quen thuộc. Mối quan tâm chính của người quản trị khi làm việc với các dịch vụ này là:

  • Đảm bảo các dịch vụ này luôn chạy.
  • Cần phải có một cách để tự động start các dịch vụ này lên khi bị crash hoặc khi reboot server.

Có khá nhiều cách để làm được việc này, chẳng hạn như viết script check services còn sống hay không. Hoặc sử dụng một phần mềm monitor trạng thái các dịch vụ là monit, supervisor…

Init System Và Run Level

Trong bài viết này, mình sẽ hướng dẫn các bạn sử dụng các init system sẵn có của Linux để quản lý các dịch vụ, tiến trình tự động reboot khi gặp sự cố.

Giới thiệu một số Init System

Trên các hệ điều hành Linux, tùy thuộc vào phiên bản, distro mà sử dụng các init system khác nhau, bạn có thể tham khảo một số init system mặc định được các hệ điều hành linux sử dụng bên dưới:

System V

System V (đọc là System Five) được phát triển bởi AT&T và được ra mắt lần đầu tiên vào năm 1983, do khá cổ và còn nhiều điểm không hoàn thiện nên SysV đang dần được thay thế bởi các Init System khác

Một số Linux OS sử dụng System V:

  • Debian 6 và trước nữa
  • Ubuntu 9.04 và trước đó nữa
  • CentOS 5 trở về trước

Upstart

Upstart là một init system được phát triển bởi những người đã tạo nên Ubuntu nhằm thay thế cho SysV trên các distro Ubuntu. Upstart có nhiệm vụ khởi chạy các tiến trình và tác vụ khác nhau, kiểm tra các process đang hoạt động và stop những process này khi shutdown hệ thống.

Homepage: http://upstart.ubuntu.com/index.html

Một số distro hỗ trợ Upstart (đa phần là Ubuntu vì Upstart vốn được phát triển cho riêng Ubuntu)

  • Từ Ubuntu 9.10 tới Ubuntu 14.04, 14.10
  • CentOS 6

Systemd

Systemd là init system tiêu chuẩn (de facto) cho các distro được release gần đây như CentOS 7, Ubuntu 16, 18…

Systemd là một init system quản lý các tiến trình trên Linux, chữ ‘d’ ở cuối có nghĩa là trình daemon. Tương tự như init, systemd là process của tất cả các process khác trong một hệ thống Linux, systemd là process đầu tiên được start lên khi boot và có PID là 1.

Systemd được thiết kế khắc phục những khuyết điểm của init. Ví dụ như một tiến trình của init sẽ khởi động tuần tự, từng tiến trình một sẽ được start lên và đưa vô bộ nhớ. Do hoạt động theo cơ chế này nên thời gian boot hệ thống sẽ rất lâu. Trái ngược với init, systemd được thiết kế để khởi động tác tác vụ song song, vì vậy giảm thiểu được boot time và tài nguyên tính toán. Ngoài ra, systemd còn có nhiều tính năng hơn so với init, cụ thể như:

  • Khả năng xử lý các tiến trình song song.
  • Dùng socker và D-Bus để khởi chạy các dịch vụ.
  • Khởi tạo các trình daemon theo nhu cầu, quản lý các process sử dụng Linux cgroups.
  • Hỗ trợ snapshot và restore trạng thái của hệ thống.
  • Có khả năng giữ các mount point và auto mount point.
  • Có cơ chế kiểm soát dependency của service chặt chẽ.

Lệnh systemctl là công cụ chính dùng để quản lý systemd. Lệnh này kết hợp cả 2 lệnh servicechkconfig thành 1 tool duy nhất để có thể quản lý hiệu quả các dịch vụ trên hệ thống.

Hướng dẫn kiểm tra init system của hệ thống

Để biết hệ thống của mình hiện đang hỗ trợ những init system nào, ta có 2 cách:

Cách 1

Kiểm tra xem các folder sau có tồn tại không:

  • Nếu có /usr/lib/systemd thì hệ thống có hỗ trợ Systemd
  • Nếu có /usr/share/upstart thì hệ thống có hỗ trợ Upstart
  • Nếu có /etc/init.d thì hệ thống có hỗ trợ System V

Cách 2

Vì init process luôn có PID là 1, ta có thể dùng lệnh sau để kiểm tra hệ thống của mình đang dùng init system nào chính:

# ps -p 1

Đây là những init system cho phép hệ thống theo dõi và auto-start lại các dịch vụ bị crash.

Giới thiệu về Runlevel

Để hiểu một chút về cơ chế hoạt động của chúng thì ta cần phải nắm được kiến thức về các runlevel cơ bản trong Linux.

Runlevel là biểu thị một trạng thái trong Linux, mỗi runlevel sẽ biểu thị cho một trạng thái riêng của Linux server như shutdown, single-user mode, restart mode, mỗi một con số sẽ biểu thị một runlevel riêng

Các số runlevel này chạy từ 0 tới 6 và có ý nghĩa như sau:

  • Runlevel 0: Shutdown hệ thống
  • Runlevel 1: Chế độ rescue mode, 1 user
  • Runlevels 2, 3, 4: Chế độ nhiều user, có kết nối mạng, giao diện CLI
  • Runlevel 5: Chế độ nhiều user, có kết nối mạng, giao diện đồ họa GUI.
  • Runlevel 6: Reboot hệ thống

Để kiểm tra runlevel đang chạy, ta dùng lệnh runlevel hoặc # who -r

Còn đối với những hệ thống có hỗ trợ systemd thì ta có thể dùng lệnh # systemctl get-default

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST:

>> SERVERCOLOCATION – CDN

>> CLOUDVPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

>> SSL

Was this article helpful?