გადასვლა შიგთავსზე
Kmorph მიზნად ისახავს Linux-ის ბირთვის ავარიისგან გადატვირთვის გარეშე აღდგენას
LinuxSoftware2 წთ

Kmorph მიზნად ისახავს Linux-ის ბირთვის ავარიისგან გადატვირთვის გარეშე აღდგენას

Kmorph მიზნად ისახავს Linux-ის სისტემებისთვის ბირთვის ავარიული გათიშვისგან გადატვირთვის გარეშე აღდგენის უზრუნველყოფას და ბირთვის ავარიის შემთხვევაში Nginx ვებ-სერვერის ან სხვა მნიშვნელოვანი სერვისების აღსადგენად სულ რაღაც ~2-წამიანი უმოქმედობის დროის (downtime) მიღწევა შეუძლია. ღია კოდის პროექტი…

გაზიარება

Kmorph მიზნად ისახავს Linux-ის სისტემებისთვის ბირთვის ავარიული გათიშვისგან გადატვირთვის გარეშე აღდგენის უზრუნველყოფას და ბირთვის ავარიის შემთხვევაში Nginx ვებ-სერვერის ან სხვა მნიშვნელოვანი სერვისების აღსადგენად სულ რაღაც ~2-წამიანი უმოქმედობის დროის (downtime) მიღწევა შეუძლია.

ღია კოდის პროექტი Kmorph პარასკევს დაანონსდა ბირთვის ავარიისგან გადატვირთვის გარეშე აღდგენისთვის და იგი აგებულია Multikernel-ზე მუშაობის გარშემო, რაც ბოლო ერთი წლის განმავლობაში ძირითადი ხის მიღმა (out-of-tree) მიმდინარეობდა. ასე რომ, ჯერჯერობით მაინც, Kmorph არ იმუშავებს Linux-ის ძირითად (mainline) ბირთვზე და ჯერ კიდევ გასარკვევია, მოხვდება თუ არა და როდის მოხვდება multikernel-ის კოდი ძირითად ბირთვში.

ვინაიდან Multikernel უზრუნველყოფს ბირთვის რამდენიმე დამოუკიდებელი ეგზემპლარის თანაარსებობას ერთსა და იმავე ფიზიკურ სისტემაზე, ამით შექმნილი ერთ-ერთი გამოყენების შემთხვევა არის საკმაოდ სწრაფი აღდგენა ერთი ბირთვის ავარიისას და ალტერნატიულ ბირთვზე სწრაფად გადართვის შესაძლებლობა. Kmorph-ის მეშვეობით სისტემას შეუძლია ბირთვის ავარიას გადატვირთვის გარეშე გაუძლოს:

„multikernel-ის მეშვეობით თითოეულ ბირთვს გააჩნია საკუთარი პროცესორები (CPU), მეხსიერება და მოწყობილობები, ხოლო ბირთვები ერთმანეთს vsock-ის საშუალებით უკავშირდებიან. kmorph ამას იყენებს ორივე გადატვირთვის ჩასანაცვლებლად კონტროლის გადაბარებით (takeover). მეორე ბირთვი, მემკვიდრე (successor), წინასწარ იტვირთება ერთ ან ორ CPU-ზე და მეხსიერების ნაწილზე გაშვებული ბირთვის, წინამორბედის (predecessor) გვერდით და თვალყურს ადევნებს მას. როდესაც წინამორბედი განიცდის პანიკას (kernel panic) ან იყინება, მემკვიდრე ბლოკავს (fences) მის CPU-ებს, ითვისებს და არესეტებს მის მოწყობილობებს, აღადგენს ქსელურ იდენტობას, სურვილისამებრ ინახავს kdump-თან თავსებად vmcore-ს, შემდეგ ცხელ რეჟიმში ამატებს (hot-add) დარჩენილ CPU-ებსა და მეხსიერებას და ხდება აპარატის მთავარი ბირთვი. პრობლემის დაფიქსირებიდან მემკვიდრის სრულფასოვან გაშვებამდე დაახლოებით ერთი წამი გადის — გადატვირთვის, მიკროპროგრამის (firmware) და ოპერატორის გარეშე. >იგივე გადაბარების მექანიზმი უზრუნველყოფს ბირთვის განახლებას მუშაობის პროცესშივე (live kernel update): „kmorph upgrade“ გამართულ სისტემას გადასცემს მემკვიდრეს, რომელიც უფრო ახალ ბირთვზე მუშაობს. ნებისმიერ შემთხვევაში, ახალ ბირთვს შეუძლია მოამზადოს საკუთარი მემკვიდრე, თაობიდან თაობამდე. >მთელი სიახლე თავად multikernel ბირთვშია: იზოლაცია/შემოზღუდვა (fencing), მოწყობილობებისა და IOMMU-ს გადაცემა, ასევე CPU-სა და მეხსიერების ცხელი დამატება (hot-add) ჰოსტის მოწყობილობათა ხიდან (device tree). kmorph არის ჩვეულებრივი C-ორკესტრაცია მისი ინტერფეისების თავზე და დისტრიბუტივებში ინტეგრირდება ისევე, როგორც kdump — dracut-ის, initramfs-tools-ის, kernel-install-ისა და systemd სერვისის მეშვეობით. ის დღესვე მუშაობს როგორც x86_64-ზე, ასევე ARM64-ზე, ხოლო RISC-V-ის მხარდაჭერა დამუშავების პროცესშია.“

Kmorph ასევე მხარს უჭერს მნიშვნელოვანი systemd სერვისების მომლოდინე (standby) რეჟიმში გაშვების კონცეფციას სათადარიგო ბირთვზე, რათა სერვისების აღდგენა ძალიან სწრაფად მოხდეს. Nginx-ის მაგალითზე რომ ვთქვათ, ბირთვის ავარიის შემთხვევაში მისი ონლაინ რეჟიმში დაბრუნება სულ რაღაც ორ წამშია შესაძლებელი, რის შემდეგაც სხვა, ნაკლებად მნიშვნელოვანი სერვისები გაეშვება.

Linux-ის ძირითად (mainline) ბირთვს აქვს Kexec Handover (KHO) და Live Update Orchestrator (LUO) ფუნქციონალი, თუმცა ამჟამად არ გააჩნია ბირთვის ავარიისგან მსგავსი აღდგენის მხარდაჭერა; ბირთვის განახლებისთვის კვლავ საჭიროა Kexec-ით გადატვირთვა და ის ასევე ვერ უმკლავდება ბირთვის ავარიულ გათიშვებს.

Kmorph საინტერესო კონცეფციაა დიდი პოტენციალით, თუმცა მისი ფართო გავრცელება დამოკიდებულია იმაზე, მოხვდება თუ არა Multikernel ძირითად (mainline) ბირთვში მომავალში.

დამატებითი დეტალების გაცნობა Kmorph-ის შესახებ შესაძლებელია Linux-ის ბირთვის საფოსტო სიის განცხადებაში. კოდი ხელმისაწვდომია GitHub-ზე.