อะไรทำให้ systemd แตกต่างจากระบบ init อื่น ๆ ?


23

มันไม่เป็นทางการมากนัก แต่ดูเหมือนว่า systemd กำลังจะมาถึง Debian และหลังจากได้อ่านการอภิปรายรายชื่อผู้รับจดหมายที่ร้อนแรงในการตัดสินใจครั้งนั้น ฉันใช้ระบบ Debian (sysvinit) และ Gentoo (OpenRC) และไม่รู้อะไรเลยเกี่ยวกับ systemd แม้ว่ามันจะดูเหมือนว่ามันกำลังเข้ามาแล้วก็ตาม

ฉันได้เห็นคำถามที่เกี่ยวข้องกับการถามข้อดีข้อเสียของ systemd vs พุ่งพรวด แต่มันเป็นเวลา 3 ปีตั้งแต่คำถามนั้นถูกโพสต์และฉันแน่ใจว่าสิ่งต่าง ๆ มีการเปลี่ยนแปลงในเวลานั้น

คำถามของฉันคือ: systemd เปรียบเทียบกับระบบ init อื่น ๆ อย่างไร

  • อะไรแยกมันออกจากกัน - มันทำอะไรได้บ้างที่ระบบ init อื่นไม่สามารถทำได้?
  • มีอะไรที่เสียไปในการเปลี่ยนจากระบบ init อื่นหรือไม่?
  • การบริหารระบบเปรียบเทียบกับคนอื่นอย่างไร?

1
ด้วย Gentoo คุณสามารถมีมือในประสบการณ์ของsystemdและมีมันทำงานได้อย่างง่ายดาย!

สิ่งหนึ่งที่ฉันสนใจเป็นพิเศษคือเซสชันผู้ใช้ พวกเขาทำงานได้ค่อนข้างดีในตอนนี้โดยมีข้อยกเว้นที่น่าสังเกต นั่นคือสิ่งที่ฉันรู้สึกว่าได้รับการเพิกเฉยจากระบบเริ่มต้นอื่น ๆ ส่วนใหญ่
Chris Down

@ChrisDown การเริ่ม / หยุดระบบและการจัดการบริการของมันเป็นฟังก์ชั่นพื้นฐานที่ดีกว่าที่จะรวมแน่น (ดังนั้น "ยาครอบจักรวาลพยายาม" เป็นตัวละครที่ไม่ดี นอกจากนี้มันไม่ได้เป็นเพียงเลนนาร์ทเพียงอย่างเดียว แต่เป็นคนในทุกดิสทริบิวชันที่ทำงานเกี่ยวกับเรื่องนี้
vonbrand

@ ChrisDown โปรดอย่าไร้สาระ systemdไม่รวมเว็บเซิร์ฟเวอร์และจะไม่ทำเช่นนี้และจะไม่อ่าน QR ใด ๆ ที่อยู่ในแผนงาน โปรดไปตรวจสอบว่ามันคืออะไรเกี่ยวกับพิจารณาว่าในขณะที่เราพูดการแจกแจงที่สำคัญทั้งหมด (ยกเว้น Ubuntu สำหรับตอนนี้) ใช้มันเป็นค่าเริ่มต้น (คนโอเพนซอร์สมีแนวโน้มที่จะเป็นอิสระอย่างบ้าคลั่งไม่มี "แรงกดดัน" ไม่เชื่อว่าเป็นทางเลือกที่ดีที่สุด)
vonbrand

ปัจจุบันแม้ RHEL7 systemdมาพร้อมกับ ทำให้ฉันสงสัยว่าเมื่อไหร่นรกPy3kจะกลายเป็นล่ามไพ ธ อนเริ่มต้นใน distros
yegle

คำตอบ:


26

อาจเป็นทุกสิ่งที่คุณต้องการทราบอยู่ที่นี่ในหน้า " อภิปรายเริ่มต้นระบบการใช้งาน " ที่โครงการ Debian รวบรวมรอบการตัดสินใจของที่ initsystem ไปด้วย ภายในหน้านั้นเป็นการเชื่อมโยงแยกต่างหากไปยังตัวเลือกของ initsystems แต่ละตัว

สำหรับไพรเมอร์ใน Systemd หน้านี้มีทุกอย่างที่เราต้องรู้เพื่อเริ่มต้นใช้งานRHEL7: วิธีเริ่มต้นกับ SystemdSystemd

แหล่งข้อมูลเพิ่มเติมที่ฉันพบว่ามีประโยชน์ในการทำความเข้าใจกับตัวเลือกหลัก 2 ตัวฉันจะอ่านหน้า Wikipedia บนเทคโนโลยีที่เกี่ยวข้อง:

โครงการ Gentoo ยังคงทำการเปรียบเทียบคุณสมบัติหลักบางอย่างของ initsytems ที่หลากหลาย:

ฉันใช้เวลากับคำถามของคุณ

Q # 1: systemd เปรียบเทียบกับระบบ init อื่น ๆ อย่างไร

นี่เป็นคำถามที่ยากมากที่จะตอบคำถามในพื้นที่ของคำตอบ SE ดังนั้นฉันจึงควรที่จะอ้างอิงไปยังแหล่งข้อมูลต่าง ๆ ที่ฉันได้อ้างถึงข้างต้น ฉันจะพูดแบบนี้ ในการอ่านบทความมากมายเกี่ยวกับsystemdทางเลือกมันพยายามพูดถึงหลาย ๆ ด้านเกี่ยวกับสิ่งที่บกพร่องในเครื่องมือก่อนหน้านี้ที่ใช้สำหรับการเริ่มบริการบนระบบ Linux มันมีการออกแบบที่ดีมากและพยายามที่จะให้มันในลักษณะโมดูลาร์

ส่วนประกอบ systemd

   เอสเอสของส่วนประกอบ systemd

ดังนั้น IMO ฉันจะบอกว่ามันเปรียบเทียบได้ดีมากทั้งในแง่ของความพยายามในการออกแบบการดำเนินการของการออกแบบนั้นและการยอมรับโดย distros Linux ขนาดใหญ่หลายแห่ง

คำถามที่ 2:อะไรที่ทำให้มันแตกต่าง - มันสามารถทำอะไรได้บ้างกับระบบ init อื่น ๆ ที่ไม่สามารถทำได้?

มีหลายสิ่งที่sytemdสามารถทำได้ที่ระบบอื่นไม่สามารถทำได้ คุณสมบัติที่แข็งแกร่งที่สุด 3 ประการคือ:

  1. เข้าสู่ระบบ
  2. การ จำกัด ทรัพยากร
  3. การจัดการกับดีมอนที่แยก

1. การบันทึก

ด้านหน้าการเข้าสู่ระบบsystemdได้จัดให้มีระบบการเข้าสู่ระบบใหม่ที่เรียกว่า "วารสาร" systemd-journald.serviceการบริการที่เรียกว่า นี่คือหัวข้อของตัวเองคุณสามารถอ่านเพิ่มเติมได้ที่นี่ในบทความนี้หัวข้อ: แนะนำวารสาร นี่คือตัวอย่างของผู้ใช้ "harald", การเข้าสู่ระบบ

_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. การ จำกัด ทรัพยากร & daemons นั้นจะแยก

systemdใช้วิธีการใหม่ในการใช้cgroupsทั้ง จำกัด และทรัพยากรที่ จำกัด บริการใด ๆ ที่ต้องการการฟอร์กหรือ จำกัด การเข้าถึงทรัพยากร

สิ่งที่สกัดมา

Systemd มีวิธีแก้ปัญหาที่ชาญฉลาดมากสำหรับปัญหาการติดตาม daemons ที่แยกซึ่งบังเอิญเกิดขึ้นเพื่อจัดการกับการ จำกัด ทรัพยากรในเวลาเดียวกัน ที่ Upstart ใช้ ptrace เพื่อดูการฟอร์ก systemd รันแต่ละ daemon ในกลุ่มควบคุม (ต้องการ Linux 2.6.24 หรือใหม่กว่า) ซึ่งมันไม่สามารถหลบหนีได้ด้วยการฟอร์กจำนวนเท่าใดก็ได้ สิ่งนี้อนุญาตให้ จำกัด ทรัพยากรได้ง่ายทั้ง forking และ non-forking daemons เนื่องจากกลุ่มควบคุมถูกสร้างขึ้นเพื่อสิ่งนี้

ที่มา: Daemon Showdown: พุ่งพรวด vs. Runit vs. Systemd vs. Circus vs. God

คำถาม # 3:มีอะไรจะเสียในการเปลี่ยนไปใช้กับระบบ init อื่นหรือไม่?

น่าจะเป็นข้อแม้ที่ใหญ่ที่สุดในการเปลี่ยนเป็น systemd ผ่าน Upstart หรือ sysV init นั้นต้องยอมรับความซับซ้อนใหม่ ๆ มากมาย Systemd มีชิ้นส่วนที่เคลื่อนไหวได้จำนวนมากและมีคุณสมบัติที่หลากหลายและด้วยความสามารถที่เพิ่มเข้ามาคุณอาจต้องใช้เวลาพอสมควรในการทำความเข้าใจเกี่ยวกับการทำงานของมัน

Q # 4:การบริหารระบบเปรียบเทียบกับคนอื่นอย่างไร?

ตามที่ระบุไว้ในคำตอบของฉันไป Q # 3 ฉันขอย้ำอีกครั้งที่นี่ ในกรณีที่ sysV init นั้นเป็นเรื่องเล็กน้อยที่จะเรียนรู้วิธีการจัดการและนำทางในเวลาไม่กี่ชั่วโมงต่อวันการพุ่งพรวดอาจจะพาคุณไปหนึ่งสัปดาห์หรือมากกว่านั้นเพื่อให้ได้ความเร็วสูงสุดในขณะที่ systemd จะทำให้คุณนานขึ้น สัปดาห์ที่จะได้รับความรู้คร่าวๆพอเกี่ยวกับมันที่ฉันจะสามารถผลิต.serviceไฟล์ของตัวเองเพื่อหยุด / เริ่มบริการได้อย่างง่ายดายเช่นเดียวกับตอนนี้ที่ฉันเพลิดเพลินกับ sysV init

อ้างอิง


@Caleb ปัญหามีความซับซ้อนมากและยิ่งไปกว่านั้นปัญหาเรื่องความเขลาสำหรับคนจำนวนมาก ฉันเชื่อว่าคำตอบคือตกลงตามที่
vonbrand

@Caleb - yup คุณยินดีต้อนรับขอบคุณสำหรับความคิดเห็น
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.