Có
thể nói đây là sự thay đổi lớn trong Centos 7. Trước tiên ta tìm hiểu
các kỹ thuật cũ về hệ thống khởi động trên các phiên bản trước của
Centos:
+
init – là process đầu tiên được load và sẽ nằm ở đó cho đến khi hệ
thống (họ nhà Red Hat, Centos ) shutdown. Múc đích của nó là sử dụng các
run levels để quyết định daemons nào được start và tương tác để điều
khiển chúng. Tuy nhiên điểm cố hữu ” chết người” của init là ở chỗ nó
khởi động các process theo thứ tự lần lượt, các tác vụ chỉ được khởi
động khi tác vụ trước đó đã hoàn thành. Vì thế sẽ mất nhiều thời gian
hơn và nếu một tác vụ bị failed, quá trình khởi động sẽ dừng lại ở đó
cho đến khi nó tìm được cách xử lý.
+ Upstart – là sự thay thế cho init, chủ yếu sử dụng trên Ubuntu và dành cho mục đích khởi động các process không đồng thời, điều này làm tăng tốc độ boot và mức ổn định của hệ thống.
+ Upstart – là sự thay thế cho init, chủ yếu sử dụng trên Ubuntu và dành cho mục đích khởi động các process không đồng thời, điều này làm tăng tốc độ boot và mức ổn định của hệ thống.
Ở Centos 7 systemd cũng làm nhiệm vụ tương tự init và là tiến trình đầu tiên khi khởi động, có pid =1.
systemd không phải là một process đơn thuần mà nó còn chứa các gói, các
thư viện và các công cụ trong đó. Có thể nhìn sơ qua cấu trúc của
systemd như sau:
Khác
hoàn toàn với init, systemd khởi động các process song song, không còn
phụ thuộc vào nhau nên giảm thiểu thời gian khởi động và tăng tính ổn
định khi một process failed sẽ không ảnh hưởng đến toàn bộ quá trình
khởi động. Không chỉ khởi động các chương trình core, systemd còn khởi
động các hoạt động khác trên hệ thống như network stack, bộ cron job
scheduler, user login….
Ta sẽ xem các ví dụ về việc sử dụng systemd như sau:
File cấu hình chung của systemd nằm trong thư mục /etc/systemd
File cấu hình các service thì nằm trong /usr/lib/systemd
Các file custome config thì đặt trong /etc/systemd/system, đặc biệt đôi khi thư mục /run/systemd/system cũng đc sử dụng
Để xem phiên bản của systemd hiện tại, sử dụng lệnh:
# systemctl --version systemd 208 +PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZNhiệm vụ chính của systemd là quản lý các boot process và cung cấp thông tin về nó, ta dùng lệnh sau:
# systemd-analyze Startup finished in 422ms (kernel) + 2.722s (initrd) + 9.674s (userspace) = 12.820sĐể xem các service trong quá trình boot của nó, ta sử dụng lệnh như sau:
# systemd-analyze blame 7.029s network.service 2.241s plymouth-start.service 1.293s kdump.service 1.156s plymouth-quit-wait.service 1.048s firewalld.service 632ms postfix.service 621ms tuned.service 460ms iprupdate.service 446ms iprinit.service 344ms accounts-daemon.service ... 7ms systemd-update-utmp-runlevel.service 5ms systemd-random-seed.service 5ms sys-kernel-config.mountsystemd cho phép hiển thị những process quan trọng nhất trong khi khởi động hệ thống với tùy chọn critical chain
# systemd-analyze critical-chain The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. multi-user.target @6.167s └─mariadb.service @2.661s +3.505s └─network.target @2.649s └─network.service @2.168s +478ms └─NetworkManager.service @1.993s +174ms └─firewalld.service @826ms +1.162s └─basic.target @822ms └─sockets.target @821ms └─dbus.socket @820ms └─sysinit.target @813ms └─systemd-update-utmp.service @806ms +6ms └─auditd.service @747ms +58ms └─local-fs.target @742ms └─boot.mount @709ms +32ms └─systemd-fsck@dev-disk-by\x2duuid-497a43ab\x2d33b0\x2 └─dev-disk-by\x2duuid-497a43ab\x2d33b0\x2d4153\x2d9fhay critical chain với 1 service cụ thể
# systemd-analyze critical-chain firewalld.service The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. firewalld.service +1.162s └─basic.target @822ms └─sockets.target @821ms └─dbus.socket @820ms └─sysinit.target @813ms └─systemd-update-utmp.service @806ms +6ms └─auditd.service @747ms +58ms └─local-fs.target @742ms └─boot.mount @709ms +32ms └─systemd-fsck@dev-disk-by\x2duuid-497a43ab\x2d33b0\x2d4153\x2d9 └─dev-disk-by\x2duuid-497a43ab\x2d33b0\x2d4153\x2d9f8d\x2d7788Để xem sự phụ thuộc (dependencies) của các services
# systemctl list-dependencies default.target ├─abrt-ccpp.service ├─abrt-oops.service ... ├─tuned.service ├─basic.target │ ├─firewalld.service │ ├─microcode.service ... ├─getty.target │ ├─getty@tty1.service │ └─serial-getty@ttyS0.service └─remote-fs.targetVà xem dependencies của 1 services cụ thể:
# systemctl list-dependencies sshd.service
CÁC THÀNH PHẦN CƠ BẢN VÀ QUAN TRỌNG TRONG systemd
1. Journal Analysis
Trong Centos 7, systemd sẽ xử lý sự kiện thông qua một công cụ của nó trong systemd Utilities là Journald, đây là một tính năng rất hay và đáng giá. Chẳng hạn, để xem tất cả các sự kiện liên quan đến sshd process, ta dùng lệnh:
# journalctl /sbin/sshd
hoặc # journalctl --unit=sshdĐể hiển thị tất cả các sự kiện trong lần boot cuối cùng:
# journalctl -bhay chỉ là của ngày hôm nay:
# journalctl --since=todayhoặc các sự kiện liên quan đến lỗi
# journalctl -p err
Mặc đinh, Journald logs được lưu trong thư mục /run/log/journal và sẽ biến mất sau quá trình khởi động. Để lưu Journald logs cho mục đích xem lại ta làm như sau:
# mkdir /var/log/journal
# echo "SystemMaxUse=50M" >> /etc/systemd/journald.conf
# systemctl restart systemd-journald
2. Service Management – Quản lý các services
Để quản lý các services, systemd sử dụng systemctl thay thế cho các lệnh chkconfig và service trước đây của Centos 6.Ví dụ để active ntp services lúc khởi động thay cho chkconfig
# systemctl enable ntpd (thay vì chkconfig ntpd on)Chú ý 1: Cú pháp chuẩn phải là ntpd.service nhưng mặc định .service sẽ tự động được thêm vào.
Chú ý 2: nếu là đường dẫn, .mount sẽ được thêm vào.
Chú ý 3: Nếu là thiết bị, .device sẽ được thêm vào.
Để deactivate, start, stop một services:
# systemctl disable ntpd (thay vì chkconfig ntpd off) # systemctl start ntpd (thay vì services ntpd start) # systemctl stop ntpd (thay vì services ntpd stop)Kiểm tra NTP service có được active lúc khởi động:
# systemctl is-enabled ntpd enabledKiểm tra NTP service có hoạt động:
# systemctl is-active ntpd inactiveLấy trạng thái của sshd services :
# systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-04-17 15:39:19 ICT; 42min ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 714 (sshd) CGroup: /system.slice/sshd.service └─714 /usr/sbin/sshd -D
3. Targets/Run Levels
Systemd sử
dụng các targets. Một target là một kỹ thuật ghép nhóm cho phép
nhiều services khởi động cùng lúc. Các services này được kết hợp với một
target cụ thể và được lưu trong thư mục cùng tên với tên target. Hiểu
theo một cách nào đó, target thay thế các run levels (level 3 chế độ
dòng lệnh hay level 5 chế độ đồ họa). File /etc/inittab sẽ không còn
được sử dụng để set default run level nữa và vì thế việc thay đổi nó sẽ
không còn tác dụng trong Centos 7.
Chẳng hạn để đưa Centos 7 vào chế độ maintenance mode:
# systemctl rescueĐể chuyển sang level 3:
# systemctl isolate runlevel3.targethay
# systemctl isolate multi-user.targetĐể chuyển sang chế độ đồ họa:
# systemctl isolate graphical.targethay chế độ không dùng GUI:
# systemctl set-default multi-user.targetKiểm tra run level đang chạy của hệ thống
# systemctl get-default graphical.target
Không có nhận xét nào:
Đăng nhận xét