•  notreh-light

อัลไพน์

ไพน์, อัลไพน์ลินุกซ์ตาม OSTree

เลือกอะไร OS ทำงานบนเซิร์ฟเวอร์ของคุณเป็นเรื่องของความสะดวกและความคุ้นเคย ความสะดวกสบายหมายถึงคุณต้องการบางสิ่งบางอย่างที่ทำให้คุณมีปัญหาน้อยที่สุด ความคุ้นเคยหมายความว่าคุณต้องการ ไม่ เพื่อเรียนรู้เพิ่มเติมหากไม่จำเป็น

เซิร์ฟเวอร์ของฉันคือ สัตว์เลี้ยงดังนั้นฉันจึงสามารถออกคำสั่งสองสามคำสั่งด้วยตนเองเป็นระยะ ๆ และไม่ต้องการระบบอัตโนมัติที่สมบูรณ์

หลังจากได้ลอง CoreOS เป็นเวลาหนึ่งปีที่ฉันเปลี่ยนมาใช้ตัวย่อของฉันเอง distro ขึ้นอยู่กับเทือกเขาแอลป์และ ostree.

เป้าหมาย

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

เป้าหมาย

ระบบจะทำงานในสภาพแวดล้อมใดบ้าง ฉันตั้งเป้า OVZ และ [KVM] แต่โดยทั่วไปคุณสามารถพูดได้ ตู้คอนเทนเนอร์ และ เครื่องเสมือน ด้วยข้อแตกต่างที่สำคัญคือคอนเทนเนอร์ไม่ได้รันเคอร์เนลของตัวเอง โดยเฉพาะอย่างยิ่งพวกเขาไม่มีกระบวนการบู๊ต พวกเขาเรียกโดยตรงไปยัง ในนั้น ระบบ (เช่นใน aDockerfile มันจะถูกกำหนดโดยCMD หรือENTRYPOINT คำสั่ง) ซึ่งมีหน้าที่จัดการแผนผังของ prcesses ที่จะทำให้คอนเทนเนอร์ทำงานต่อไป (เช่นเดียวกับเซสชันปกติ หากกระบวนการเริ่มต้นตาย คอนเทนเนอร์จะสิ้นสุดลง) นอกจากนี้ คอนเทนเนอร์ยังกำหนดค่าลูกบิดระบบไม่ได้ และสามารถมีข้อจำกัดเพิ่มเติมเกี่ยวกับความสามารถได้

แบ่งครึ่งกระบวนการสร้าง

ภาพถูกสร้างขึ้นอย่างไร?

การพึ่งพา

NSprepare.sh สคริปต์จัดการการพึ่งพาซึ่งส่วนใหญ่เป็นแพ็คเกจเพื่อเสนอเครื่องมือ cli ทั่วไปเช่นcoreutils, util-linux, binutils , ยูทิลิตี้ที่จะทำงานกับอุปกรณ์บล็อกเช่นblkid, sfdisk, multipath-tools และระบบไฟล์ด้วยxfsprogs และe2fsprogs . NSsquashfs-tools แพ็คเกจถูกใช้ในตอนท้ายเพื่อบีบอัดระบบไฟล์รูทที่สร้างขึ้น NSglib แพ็คเกจความเข้ากันได้ยังถูกติดตั้งตามค่าเริ่มต้นเพราะอัลไพน์นั้นอิงตามmusl, แพ็คเกจความเข้ากันได้ทำงานโดยจัดเตรียมไลบรารีบางตัวที่สร้างขึ้นจาก .

ต้นไม้

โครงสร้างไฟล์สำหรับทั้ง VM และคอนเทนเนอร์ถูกสร้างด้วยตามลำดับmake.sh และmake_ovz.sh . นี่คือคำอธิบายอย่างง่ายของขั้นตอน

สำหรับคอนเทนเนอร์ ลำดับจะเหมือนกัน แต่การกำหนดค่าเปลี่ยนแปลง เนื่องจากระบบไม่ได้บูตจาก a bootloader ostree มีปัญหาในการตรวจสอบสภาพแวดล้อม เราต้องสมัครบ้าง วิธีแก้ปัญหา และตั้งค่าอุปกรณ์บางอย่างซึ่งมักจะจัดการโดย initramfs ขั้นตอน อย่างนี้นี่เอง OVZ หรือ LXC มีการกำหนดค่าเทมเพลต

บรรจุภัณฑ์

เมื่อเรามีต้นไม้ไฟล์ที่คอมมิต ostree แล้วbuild.sh หรือbuild-update.sh ดูแลการผลิตสิ่งประดิษฐ์ที่จะแจกจ่าย ความแตกต่างระหว่างสคริปต์คือเวอร์ชันการอัพเดทเริ่มต้นจากที่เก็บ ostree ก่อนหน้าและ อีกด้วย สร้างสิ่งประดิษฐ์เดลต้าที่ระบบที่ทำงานอยู่สามารถนำไปใช้กับอินสแตนซ์ ostree เพื่อทำการอัปเกรด นี่คือคำอธิบายอย่างง่ายของขั้นตอนการสร้าง

การกำหนดค่าพาร์ติชันใช้กับfdisklayout.cfg ไฟล์ที่กำหนดขนาดพาร์ติชั่น เรามีหนึ่งพาร์ติชั่นสำหรับ rootfs (~430M ) พาร์ติชันสำหรับเริ่มระบบ (~40M ) และพาร์ติชั่นสว็อป (~40M ). ด้วยคอนเทนเนอร์ที่เพียงแค่ข้ามการติดตั้งบิลด์ก่อนหน้าบนอุปกรณ์วนซ้ำ และเพียงแค่ดึง ostree คอมมิทใหม่บนที่เก็บ ostree เก่า (แยก)

การปรับแต่ง

ฉันกำลังรวมกลุ่มอะไรในรูปภาพนี้ (นอกเหนือจากแพ็คเกจที่ติดตั้ง)

สิ่งที่เคยเป็นและไม่ใช่อีกต่อไป

การติดตั้ง

ในการติดตั้งอิมเมจ คุณสามารถอัปโหลดไปยังผู้ให้บริการโฮสต์และติดตั้งจาก VNC ในกรณีของเวอร์ชวลแมชชีน แต่ฉันมักจะจี้การติดตั้งที่มีอยู่ เพราะมันเป็นไปได้เสมอ และตราบใดที่ฉันได้ทดสอบสคริปต์การตั้งค่ากับเวอร์ชันของ การกระจาย linux โดยทั่วไปฉันใช้ debian-8 หรือ ubuntu-14 ยังไม่ได้ทดสอบอันอื่นเนื่องจากฉันพบว่าสิ่งเหล่านี้พร้อมใช้งานเสมอ ขั้นตอนการตั้งค่ามีดังนี้

บทสรุป

ฉันทำ ต้นสน 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on แนท เซิร์ฟเวอร์ที่มักจะมีทรัพยากรต่ำมาก จริง ๆ แล้วฉันมีกล่องที่ทำงานด้วยเพียง64M ของ RAM และยังมีคุณสมบัติทั้งหมดที่ฉันต้องการ

[1]ระบบไฟล์รูท

โพสต์แท็ก: