Điều gì đặt systemd ngoài các hệ thống init khác?


23

Nó không hoàn toàn chính thức nhưng có vẻ như systemd đang đến với Debian và sau khi đọc một số thảo luận về danh sách gửi thư nóng về quyết định đó, tôi tò mò về bản chất phân cực của systemd giữa những người dùng linux. Tôi chạy các hệ thống Debian (sysvinit) và Gentoo (OpenRC) và không biết gì cụ thể về systemd, mặc dù có vẻ như nó đang đến với tôi.

Tôi đã thấy câu hỏi liên quan này hỏi những ưu và nhược điểm của systemd vs upstart, nhưng đã 3 năm kể từ khi câu hỏi đó được đăng và tôi chắc chắn mọi thứ đã thay đổi trong thời gian đó.

Câu hỏi của tôi là: Làm thế nào để systemd so với các hệ thống init khác?

  • Điều gì làm cho nó khác biệt - nó có thể làm gì mà các hệ thống init khác không thể?
  • Có bất cứ điều gì để mất khi chuyển sang nó từ một hệ thống init khác không?
  • Làm thế nào để quản trị systemd so với những người khác?

1
Với Gentoo, bạn có thể có một bàn tay trên kinh nghiệm của systemd và đã cho nó chạy khá dễ dàng!

Một điều tôi đặc biệt quan tâm là phiên người dùng. Họ làm việc khá tốt ngay bây giờ, với một số ngoại lệ đáng chú ý. Đó là điều mà tôi cảm thấy thực sự đã bị bỏ qua bởi hầu hết các hệ thống init khác.
Chris Xuống

@ChrisDown, bắt đầu / dừng hệ thống và quản lý các dịch vụ của nó là chức năng cơ bản, được tích hợp chặt chẽ hơn (do đó "cố gắng chữa bách bệnh" là một sai lầm xấu). Bên cạnh đó, không chỉ một mình Lennart, đó là những người trên tất cả các bản phân phối đang làm việc này.
vonbrand

@ChrisDown, xin đừng nực cười. systemdbây giờ không bao gồm một máy chủ web cũng sẽ không làm như vậy bao giờ, cũng không đọc QR bất kỳ trong lộ trình. Vui lòng kiểm tra xem tất cả là gì, hãy xem xét vì chúng tôi nói tất cả các bản phân phối quan trọng (trừ Ubuntu bây giờ) sử dụng nó làm mặc định (mọi người nguồn mở có xu hướng độc lập một cách điên cuồng, không có "áp lực" nào sẽ khiến họ làm điều này nếu họ không Tôi không tin đó là sự thay thế tốt nhất).
vonbrand

Ngày nay, ngay cả RHEL7 cũng đi kèm systemd. Làm cho tôi tự hỏi khi địa ngục Py3ksẽ trở thành trình thông dịch python mặc định trong distro.
yegle

Câu trả lời:


26

Có lẽ mọi thứ bạn muốn biết đều có ở đây trên các trang " Hệ thống khởi tạo tranh luận để sử dụng " mà dự án Debian đưa ra xung quanh để đưa ra quyết định nên sử dụng hệ thống inits nào. Trong trang đó là một liên kết riêng cho mỗi lựa chọn của initsystems.

Đối với một primer trên Systemd, trang này có khá nhiều thứ người ta cần biết để bắt đầu với nó, RHEL7: Cách bắt đầu với Systemd .

Các tài nguyên bổ sung mà tôi thấy hữu ích trong việc hiểu rõ hơn về 2 lựa chọn chính tôi cũng sẽ đọc các trang Wikipedia về các công nghệ tương ứng:

Dự án Gentoo cũng duy trì một so sánh tốt đẹp về một số tính năng chính trên các initsytems khác nhau:

Tôi nhận câu hỏi của bạn

Q # 1: Systemd so với các hệ thống init khác như thế nào?

Đây là một câu hỏi rất khó giải quyết trong không gian của câu trả lời SE, vì vậy tôi muốn nói đến các nguồn khác nhau mà tôi đã tham khảo ở trên. Tôi sẽ nói điều này mặc dù. Khi đọc qua nhiều bài viết về systemdcác lựa chọn thay thế, nó đang cố gắng giải quyết nhiều khía cạnh của những công cụ trước đây được sử dụng để khởi động dịch vụ trên các hệ thống Linux. Nó có một thiết kế rất chu đáo và đang cố gắng cung cấp nó theo một cách rất mô-đun.

thành phần systemd

   ss của các thành phần systemd

Vì vậy, IMO, tôi sẽ nói rằng nó so sánh rất thuận lợi cả về nỗ lực trong thiết kế, thực hiện thiết kế đó và việc áp dụng nó bởi một số bản phân phối Linux lớn hơn.

Q # 2: Điều gì làm nó khác biệt - nó có thể làm gì mà các hệ thống init khác không thể?

Có rất nhiều điều sytemdcó thể làm mà các hệ thống khác không thể làm được. Có lẽ 3 tính năng mạnh nhất của nó là:

  1. Ghi nhật ký
  2. Giới hạn tài nguyên
  3. Xử lý daemon mà ngã ba

1. đăng nhập

Về mặt đăng nhập, systemdđã thiết lập một hệ thống ghi nhật ký mới gọi là "Nhật ký", dịch vụ được gọi systemd-journald.service. Đây là chủ đề riêng của nó, bạn có thể đọc thêm về nó ở đây trong bài viết này có tiêu đề: Giới thiệu Tạp chí . Đây là một ví dụ về người dùng, "harald", đăng nhập.

_SERVICE=systemd-logind.service
MESSAGE=User harald logged in
MESSAGE_ID=422bc3d271414bc8bc9570f222f24a9
_EXE=/lib/systemd/systemd-logind
_COMM=systemd-logind
_CMDLINE=/lib/systemd/systemd-logind
_PID=4711
_UID=0
_GID=0
_SYSTEMD_CGROUP=/system/systemd-logind.service
_CGROUPS=cpu:/system/systemd-logind.service
PRIORITY=6
_BOOT_ID=422bc3d271414bc8bc95870f222f24a9
_MACHINE_ID=c686f3b205dd48e0b43ceb6eda479721
_HOSTNAME=waldi
LOGIN_USER=500

2 & 3. Giới hạn tài nguyên & daemon ngã ba

systemdsử dụng một cách tiếp cận mới ở đây là sử dụng cgroupsđể chứa và giới hạn tài nguyên cho bất kỳ dịch vụ nào yêu cầu giả mạo hoặc giới hạn quyền truy cập vào tài nguyên.

đoạn trích

Systemd có một giải pháp rất thông minh cho vấn đề theo dõi daemon mà ngã ba, tình cờ xảy ra để xử lý giới hạn tài nguyên cùng một lúc. Trong đó Upstart sử dụng ptrace để xem forking, systemd chạy từng daemon trong một nhóm điều khiển (yêu cầu Linux 2.6.24 trở lên) mà từ đó nó không thể thoát được với bất kỳ số lượng forking nào. Điều này cho phép giới hạn tài nguyên dễ dàng, cả cho da và không giả da, vì các nhóm kiểm soát được tạo ra cho loại điều này.

Nguồn: Daemon Showdown: Upstart vs. Runit vs. Systemd vs. Circus vs. God

Q # 3: Có gì để mất khi chuyển sang hệ thống init khác không?

Có lẽ sự cảnh báo lớn nhất để chuyển sang systemd qua Upstart hoặc sysV init là phải nắm lấy rất nhiều phức tạp mới. Systemd có rất nhiều bộ phận chuyển động và cực kỳ giàu tính năng và với các khả năng được thêm vào đó, bạn có thể sẽ dành một lượng thời gian hợp lý để hiểu được cách thức hoạt động của tất cả.

Q # 4: Làm thế nào để quản trị systemd so với những người khác?

Như đã nêu trong câu trả lời trên của tôi cho Q # 3. Tôi xin nhắc lại ở đây một lần nữa. Khi sysV init khá đơn giản để học cách quản lý và điều hướng trong vài giờ đến vài ngày, Upstart có thể sẽ khiến bạn mất một tuần hoặc hơn để tăng tốc, trong khi systemd có thể sẽ khiến bạn mất nhiều thời gian hơn, tôi dự đoán sẽ mất nhiều thời gian vài tuần để có đủ kiến ​​thức đáng chú ý về nó, nơi tôi có thể vừa tạo ra .servicecác tệp của riêng mình , vừa dừng / bắt đầu dịch vụ một cách dễ dàng như bây giờ tôi thích với sysV init.

Tài liệu tham khảo


@Caleb, vấn đề rất phức tạp, và hơn nữa là một vấn đề cảm động đối với nhiều người. Tôi tin rằng câu trả lời là OK vì nó đứng
vonbrand

@Caleb - yup, bạn khá hoan nghênh, cảm ơn vì đã phản hồi.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.