ซีอาร์ยู
| ซีอาร์ยู | |
|---|---|
| นักพัฒนา | ทีมOpenVZ ที่ Virtuozzo |
| ปล่อย | 23 กรกฎาคม 2555 ( 2012-07-23 ) [ 1 ] |
| เวอร์ชันเสถียร | 4.2 ( 13 พฤศจิกายน 2025 ( 2025-11-13 ) [ 2 ] ) [ ± ] |
| เขียนเป็น | Cและการประกอบ |
| ระบบปฏิบัติการ | ลินุกซ์ |
| แพลตฟอร์ม | x86-64 , ARM , Power ISA , IBM System/390 |
| พิมพ์ | การตรวจสอบแอปพลิเคชัน |
| ใบอนุญาต | GNU GPLเวอร์ชัน 2 |
| เว็บไซต์ | criu.org |
| ที่เก็บข้อมูล |
|
Checkpoint/Restore In Userspace ( CRIU ) (อ่านว่าครี-อู / kriu/ ) เป็นเครื่องมือซอฟต์แวร์สำหรับ ระบบปฏิบัติการ ลินุกซ์โดยใช้เครื่องมือนี้ เราสามารถหยุดการทำงานของแอปพลิเคชัน (หรือบางส่วน) และสร้างจุดตรวจสอบ (checkpoint) ลงในที่จัดเก็บถาวรในรูปแบบของไฟล์ จากนั้นเราสามารถใช้ไฟล์เหล่านั้นเพื่อกู้คืนและเรียกใช้แอปพลิเคชันจากจุดที่หยุดไว้ได้ คุณลักษณะเด่นของโครงการ CRIU คือ มันถูกพัฒนาขึ้นในพื้นที่ผู้ใช้ (user space ) เป็นหลัก มากกว่าในเคอร์เนล (kernel)
ประวัติศาสตร์
Pavel Emelyanov หัวหน้าทีมเคอร์เนล OpenVZได้นำเสนอซอฟต์แวร์ CRIU เวอร์ชันเริ่มต้นแก่ชุมชนนักพัฒนา Linux เมื่อวันที่ 15 กรกฎาคม 2554 [ 3 ]
ในเดือนกันยายน พ.ศ. 2554 โครงการนี้ได้ถูกนำเสนอในการประชุม Linux Plumbers [ 4 ]โดยทั่วไป ผู้เข้าร่วมส่วนใหญ่มีมุมมองเชิงบวกต่อโครงการนี้ ซึ่งพิสูจน์ได้จากข้อเท็จจริงที่ว่าแพตช์เคอร์เนลจำนวนหนึ่งที่จำเป็นสำหรับการนำโครงการนี้ไปใช้ได้ถูกรวมอยู่ในเคอร์เนลหลักแล้ว อย่างไรก็ตาม แอนดรูว์ มอร์ตันค่อนข้างสงสัย:
หมายเหตุเกี่ยวกับเรื่องนี้: นี่เป็นโครงการของชาวรัสเซียสติเพี้ยนหลายคนเพื่อทำการคัดลอก/กู้คืนส่วนใหญ่จากพื้นที่ผู้ใช้ โดยมีการเพิ่มโค้ดช่วยเหลือแปลกๆ เข้าไปในเคอร์เนลเมื่อจำเป็น... อย่างไรก็ตาม ฉันไม่มั่นใจเท่ากับนักพัฒนาว่ามันจะใช้งานได้ทั้งหมดในที่สุด! ดังนั้นสิ่งที่ฉันขอให้พวกเขาทำคือห่อโค้ดใหม่แต่ละส่วนไว้ภายใน CONFIG_CHECKPOINT_RESTORE ดังนั้นหากในที่สุดทุกอย่างล้มเหลวและโครงการทั้งหมดล้มเหลว ก็จะเป็นเรื่องง่ายที่จะลบร่องรอยทั้งหมด[ 5 ]
— แอนดรูว์ มอร์ตัน
ใช้
เครื่องมือ CRIU กำลังได้รับการพัฒนาเป็นส่วนหนึ่งของโครงการ OpenVZ โดยมีเป้าหมายเพื่อทดแทนการตรวจสอบ/กู้คืนสถานะภายในเคอร์เนล แม้ว่าจุดเน้นหลักคือการสนับสนุนการย้ายคอนเทนเนอร์ โดยอนุญาตให้ผู้ใช้ตรวจสอบและกู้คืนสถานะปัจจุบันของกระบวนการที่กำลังทำงานและกลุ่มกระบวนการ เครื่องมือนี้สามารถใช้งานได้บน ระบบ x86-64และARM ในปัจจุบัน และรองรับคุณสมบัติดังต่อไปนี้:
- กระบวนการต่างๆ ได้แก่ ลำดับชั้นของกระบวนการ, PID , ตัวตรวจสอบสิทธิ์ผู้ใช้และกลุ่ม ( UID , GID , SIDเป็นต้น), ความสามารถของระบบ , เธรด และสถานะการทำงานและการหยุดทำงาน
- หน่วยความจำแอปพลิเคชัน: ไฟล์ ที่แมปหน่วยความจำและหน่วยความจำที่ใช้ร่วมกัน
- เปิดไฟล์
- ท่อและFIFO
- ซ็อกเก็ตโดเมน Unix
- ซ็อกเก็ตเครือข่ายรวมถึง ซ็อกเก็ต TCPที่อยู่ในสถานะ ESTABLISHED (ดูด้านล่าง)
- ระบบ IPC V
- ตัวจับเวลา
- สัญญาณ
- เทอร์มินัล
- การเรียกใช้ระบบเฉพาะเคอร์เนลของลินุกซ์:
inotify,signalfd,eventfdและepoll
ข้อมูล ณ เดือนกันยายนพ.ศ. 2556 ไม่จำเป็นต้องแก้ไขเคอร์เนลเนื่องจากฟังก์ชันที่จำเป็นทั้งหมดได้ถูกรวมเข้ากับเคอร์เนล Linux หลัก แล้ว ตั้งแต่เคอร์เนลเวอร์ชัน 3.11 ซึ่งเผยแพร่เมื่อวันที่ 2 กันยายน 2013 [ 6 ] [ 7 ]
การย้ายการเชื่อมต่อ TCP
หนึ่งในเป้าหมายเริ่มต้นของโครงการคือการสนับสนุนการย้ายการเชื่อมต่อ TCP ซึ่งความท้าทายที่ใหญ่ที่สุดคือการระงับและกู้คืนการเชื่อมต่อเพียงด้านเดียวเท่านั้น สิ่งนี้จำเป็นสำหรับการย้ายคอนเทนเนอร์แบบสด (พร้อมกับการเชื่อมต่อเครือข่ายที่ใช้งานอยู่ทั้งหมด) ระหว่างเซิร์ฟเวอร์ทางกายภาพ ซึ่งเป็นสถานการณ์หลักของการใช้คุณสมบัติการตรวจสอบ/กู้คืนใน OpenVZ เพื่อรับมือกับปัญหานี้ จึงได้มีการนำคุณสมบัติใหม่ที่เรียกว่า "โหมดซ่อมแซม TCP" มาใช้ คุณสมบัตินี้ถูกรวมอยู่ในเวอร์ชัน 3.5 ของเคอร์เนล Linux หลัก[ 8 ]และช่วยให้ผู้ใช้มีวิธีการเพิ่มเติมในการแยกส่วนและสร้างซ็อกเก็ต TCP ขึ้นใหม่โดยไม่จำเป็นต้องแลกเปลี่ยนแพ็กเก็ตเครือข่ายกับอีกด้านหนึ่งของการเชื่อมต่อ
อ่านเพิ่มเติม
- Sanidhya Kashyap. "การอัปเดตและการตรวจสอบเคอร์เนลโดยไม่ต้องรีบูต" .
- รามี โรเซน. "คอนเทนเนอร์ Linux และคลาวด์ในอนาคต" (PDF )
- ทีม CRIU. "การเปรียบเทียบกับโครงการ CR อื่นๆ "