Pada awal Juli, sekelompok insinyur dari Red Hat dan Boston University merilis whitepaper, yang mengusulkan mengubah kernel Linux monolitik menjadi arsitektur unikernels. Kami memutuskan untuk memahami materi dan mendiskusikan reaksi komunitas TI terhadap proposal ini.
Foto - Eamonn Maguire - UnsplashUnik sebagai alternatif
Linux dikenal menggunakan
kernel monolitik . Ia mengelola proses, fungsi jaringan, periferal, dan akses sistem file. Namun, seperti yang ditulis oleh penulis artikel dari Red Hat dan Boston University (
hal. 1 ), struktur semacam itu memiliki kekurangan. Khususnya, aplikasi berkinerja tinggi dipaksa untuk menggunakan kerangka kerja seperti
DPDK dan
SPDK untuk mendapatkan akses tanpa hambatan ke perangkat I / O melewati kernel.
Kesulitan tertentu muncul di awan. Untuk keamanan yang lebih besar, aplikasi perusahaan digunakan pada mesin virtual yang terpisah. Setiap VM berada di bawah kendali sistem operasi lengkap. Akibatnya, sumber daya komputasi server tidak dihabiskan dengan cara yang paling optimal.
Pendekatan alternatif dapat memperbaiki situasi - unikernels. Gagasan berikut adalah untuk menghubungkan aplikasi dengan perpustakaan yang diperlukan dari sistem operasi dan mengkompilasinya menjadi satu file biner. Setelah itu, "biner" ini dapat digunakan untuk mem-boot sistem. Pendekatan ini memungkinkan untuk mengkhususkan fungsionalitas OS untuk kebutuhan aplikasi tertentu.
Sumber daya dari sistem semacam itu dihabiskan dengan lebih efisien. Unikernel juga memiliki kinerja lebih tinggi daripada arsitektur inti monolitik. Alasannya adalah penyederhanaan jalur IO, karena semua data dan file ditempatkan dalam ruang alamat tunggal. Ini juga menghilangkan kebutuhan untuk beralih konteks antara ruang pengguna dan ruang kernel.
Sebuah tim insinyur dari Boston University dan Red Hat mengembangkan prototipe Linux berdasarkan unikernels. Sistem operasinya disebut Unikernel Linux (UKL).
Apa yang dilakukan para insinyur
Menurut para pengembang (
hal. 3 ), mereka hanya mengubah sebelas dan menambahkan dua puluh baris kode baru ke Linux kernel v5.0.5 dan
glibc . Kernel "klasik" tetap beroperasi - pengguna dapat memilih metode perakitan (UKL atau tidak).
Para penulis membuat perpustakaan UKL kecil di mana mereka menempatkan "rintisan" khusus yang menutupi panggilan sistem yang tidak digunakan. Mereka juga memodifikasi linker kernel untuk menentukan tipe segmen baru, misalnya TLS (utas penyimpanan lokal) dari binari ELF. Proses pembuatan juga dimodifikasi, yang sekarang menggabungkan kode aplikasi, glibc dan perpustakaan UKL menjadi satu file biner.
Insinyur sedang mengerjakan sejumlah kekurangan. Sebagai contoh, mereka berencana untuk memindahkan memori
TLS dari ruang kernel dan meninggalkan vmalloc ketika mengelola alokasi memori untuk menyederhanakan sistem.
Pendapat
Pengembang Red Hat
mengatakan bahwa UKL dapat menjadi alternatif penuh untuk memulai proses yang bekerja secara langsung dengan perangkat keras (mem-bypass kernel). Para penulis artikel asli menyatakan (
halaman 2 ) bahwa layanan caching memcached di bawah kernel unik bekerja 200% lebih cepat daripada di Linux.
Secara keseluruhan, komunitas TI juga menanggapi secara positif inisiatif dari penulis artikel asli. Warga Hacker News mencatat bahwa arsitektur unikernels akan secara signifikan meningkatkan keamanan lingkungan perangkat lunak. Dalam hal meretas aplikasi, peretas hanya akan mendapatkan akses ke binernya.
Foto - Jack Young - UnsplashSalah satu penghuni Hacker News bahkan
mengusulkan solusi radikal - untuk menulis ulang kernel Linux di bawah kernel unik dari awal menjadi Rust. Menurutnya, bahasa tersebut akan menyelesaikan masalah
dengan sejumlah besar bug yang terkait dengan keamanan memori. Pengguna lain menyebut ide itu bagus, tetapi
menyarankan menunggu beberapa tahun bagi pengembang bahasa untuk mengatasi ketidakstabilan perpustakaan. Meskipun seorang penggila
sudah menulis sistem operasinya di Rust. Sumber dapat
ditemukan di GitHub .
Implementasi lainnya
UKL bukan satu-satunya implementasi sistem operasi berbasis unikernels. Misalnya, solusi serupa
sedang dikembangkan oleh tim insinyur dari Universitas Politeknik Virginia, Qualcomm dan Universitas Teknik Rhine-Westphalia dari Aachen di Jerman. Inti ringan mereka disebut
HermiTux . Ini memungkinkan Anda untuk meluncurkan aplikasi dengan cepat di atas hypervisor - menurut penulis, waktu pengunduhan tidak melebihi 0,1 detik. Konsumsi memori dalam lingkungan pengujian adalah 9 MB, yang sepuluh kali lebih sedikit dari kernel Linux klasik.
Juga masuk akal untuk menyebutkan OS
MirageOS yang dikembangkan di OCaml. Kernel dapat berjalan di atas hypervisor Xen, KVM, BHyve, dan VMM (OpenBSD), serta pada platform seluler. Sistem ini mendukung beberapa lusinan pustaka OCaml untuk melakukan operasi jaringan (DNS, SSH, OpenFlow, HTTP, XMPP), bekerja dengan penyimpanan dan pemrosesan data paralel. Kita dapat mengatakan bahwa MirageOS adalah salah satu proyek unik unik yang berhasil. Menariknya, situs blognya juga diimplementasikan sebagai unikernel.
Sistem operasi ini sudah digunakan di lingkungan produksi oleh banyak organisasi - misalnya,
Universitas Cambridge ,
IBM, Ericsson dan Docker . Sangat mungkin bahwa yang baru akan bergabung dengan OS ini - Unikernel Linux.
Apa yang kami tulis di blog perusahaan: