OpenVZ
OpenVZ ( Open Virtuozzo) adalah teknologi virtualisasi tingkat sistem operasi untuk Linux . Hal ini memungkinkan server fisik untuk menjalankan beberapa instance sistem operasi yang terisolasi, yang disebut wadah, server pribadi virtual (VPS), atau lingkungan virtual (VE).
OpenVZ dibandingkan dengan teknologi virtualisasi lainnya Sementara teknologi virtualisasi seperti Vmwaredan Xen menyediakan virtualisasi penuh dan dapat menjalankan beberapa sistem operasi dan versi kernel yang berbeda, OpenVZ menggunakan kernel Linux tunggal dan karenanya hanya dapat menjalankan Linux. Semua wadah OpenVZ berbagi arsitektur dan versi kernel yang sama. Ini bisa menjadi kerugian dalam situasi di mana para tamu memerlukan versi kernel yang berbeda dari host. Namun, karena tidak memiliki overhead hypervisor sejati, ini sangat cepat dan efisien. [1]
Alokasi memori dengan OpenVZ lunak karena memori yang tidak digunakan dalam satu lingkungan virtual dapat digunakan oleh orang lain atau untuk caching disk. Sementara versi lama OpenVZ menggunakan sistem file umum (di mana setiap lingkungan virtual hanya direktori file yang diisolasi menggunakan chroot), versi OpenVZ saat ini memungkinkan setiap wadah memiliki sistem file sendiri. [2] Kernel OpenVZ adalah kernel Linux, dimodifikasi untuk menambah dukungan untuk wadah OpenVZ. Kernel yang dimodifikasi menyediakan virtualisasi, isolasi, manajemen sumber daya, dan pos pemeriksaan. Pada vzctl 4.0, OpenVZ dapat bekerja dengan kernel Linux 3.x yang belum ditambal, dengan set fitur yang diperkecil.[3]
Alokasi memori dengan OpenVZ lunak karena memori yang tidak digunakan dalam satu lingkungan virtual dapat digunakan oleh orang lain atau untuk caching disk. Sementara versi lama OpenVZ menggunakan sistem file umum (di mana setiap lingkungan virtual hanya direktori file yang diisolasi), versi OpenVZ saat ini memungkinkan setiap wadah memiliki sistem file sendiri. [4] Kernel OpenVZ adalah kernel Linux, dimodifikasi untuk menambah dukungan untuk wadah OpenVZ. Kernel yang dimodifikasi menyediakan virtualisasi, isolasi, manajemen sumber daya, dan pos pemeriksaan. Pada vzctl 4.0, OpenVZ dapat bekerja dengan kernel Linux 3.x yang belum ditambal, dengan set fitur yang diperkecil.[5]
Virtualisasi dan Isolasi
Setiap kontainer adalah entitas yang terpisah, dan sebagian besar seperti server fisik. Masing-masing memiliki:
- Pengguna dan grup
- Setiap kontainer memiliki pengguna root sendiri, serta pengguna dan grup lain.
- File
- Pustaka sistem, aplikasi, virtualisasi proc dan sys, kunci tervirtualisasi, dll.
- Jaringan
- Perangkat jaringan virtual, yang memungkinkan sebuah wadah memiliki alamat IP sendiri, dan aturan perutean.
- Perangkat
- Jika perlu, wadah apa pun dapat diberikan akses ke perangkat nyata seperti antarmuka jaringan, port serial, partisi disk, dll.
- Objek IPC
- Memori bersama, semafor, pesan.
Manajemen Sumber Daya
Manajemen sumber daya OpenVZ terdiri dari empat komponen: kuota disk dua tingkat, penjadwal CPU yang adil, penjadwal I / O disk, dan penghitung kacang pengguna (lihat di bawah). Sumber daya ini dapat diubah selama waktu menjalankan wadah, menghilangkan kebutuhan untuk reboot.
Kuota disk dua tingkat
Setiap kontainer dapat memiliki kuota disk sendiri, diukur dalam hal blok disk dan inode (kira-kira jumlah file). Di dalam wadah, dimungkinkan untuk menggunakan alat standar untuk menetapkan kuota disk per-pengguna dan per-grup UNIX.
Penjadwal CPU
Penjadwal CPU dalam OpenVZ adalah implementasi dua tingkat dari strategi penjadwalan pembagian yang adil.
Pada tingkat pertama, penjadwal memutuskan wadah mana yang akan memberikan waktu CPU, berdasarkan nilai cpuunits per-wadah. Pada tingkat kedua, penjadwal Linux standar memutuskan proses mana yang harus dijalankan dalam wadah itu, menggunakan prioritas proses Linux standar.
Dimungkinkan untuk menetapkan nilai yang berbeda untuk CPU di setiap wadah. Waktu CPU nyata akan didistribusikan secara proporsional ke nilai-nilai ini.
Selain yang di atas, OpenVZ [6] menyediakan cara untuk:
- atur batas CPU yang ketat, seperti 10% dari total waktu CPU ( --cpulimit );
- membatasi jumlah inti CPU yang tersedia untuk wadah (
--cpus
); - ikat wadah ke set CPU tertentu ( --cpumask ).
Penjadwal I/O
Mirip dengan penjadwal CPU yang dijelaskan di atas, penjadwal I / O di OpenVZ juga dua tingkat, dengan menggunakan penjadwal I/O CFQ Jens Axboe di tingkat kedua. Setiap kontainer diberi prioritas I / O, dan scheduler mendistribusikan bandwidth I / O yang tersedia sesuai dengan prioritas yang ditetapkan. Dengan demikian tidak ada satu wadah pun yang dapat memenuhi saluran I / O.
Pengguna Beancounters
adalah seperangkat penghitung, batas, dan jaminan per-kontainer, yang dimaksudkan untuk mencegah satu kontainer memonopoli sumber daya sistem. Dalam kernel OpenVZ saat ini (RHEL6-based 042stab*) ada dua parameter utama ( ram dan swap, alias halaman fisik dan swappages), dan lainnya opsional [7]
Sumber daya lain kebanyakan adalah memori dan berbagai objek dalam-kernel seperti komunikasi antar-proses segmen Memori bersama dan buffer jaringan. Setiap sumber daya dapat dilihat dari /proc/user_beancounters dan memiliki lima nilai yang terkait dengannya: penggunaan saat ini, penggunaan maksimum (untuk masa pakai wadah), penghalang, batas, dan penghitung gagal. Arti penghalang dan batas bergantung pada parameter; singkatnya, hal itu dapat dianggap sebagai batas lunak dan batas keras. Jika ada sumber daya yang mencapai batas, penghitung gagal untuk itu meningkat. Ini memungkinkan pemilik untuk mendeteksi masalah dengan memonitor/proc/user_beancounters dalam wadah.
Pos pemeriksaan dan migrasi langsung
Fitur migrasi langsung dan pos pemeriksaan dirilis untuk OpenVZ pada pertengahan April 2006. Ini memungkinkan untuk memindahkan wadah dari satu server fisik ke yang lain tanpa mematikan wadah. Proses ini dikenal sebagai checkpointing: wadah dibekukan dan seluruh kondisinya disimpan ke file pada disk. File ini kemudian dapat ditransfer ke komputer lain dan sebuah wadah dapat dibekukan (dipulihkan) di sana; penundaan kira-kira beberapa detik. Karena keadaan biasanya dipertahankan sepenuhnya, jeda ini mungkin tampak sebagai penundaan komputasi biasa.
Keterbatasan
Secara default, OpenVZ membatasi akses kontainer ke perangkat fisik nyata (sehingga membuat perangkat keras independen). Administrator OpenVZ dapat mengaktifkan akses kontainer ke berbagai perangkat nyata, seperti drive disk, port USB, [8] perangkat PCI [9] atau kartu jaringan fisik [10]
Antarmuka pengguna grafis yang disebut EasyVZ telah dicoba pada tahun 2007, [11] tetapi itu tidak berkembang melampaui versi 0,1. Hingga versi 3.4, Proxmox VE dapat digunakan sebagai lingkungan virtualisasi server berbasis OpenVZ dengan GUI, meskipun versi yang lebih baru beralih ke LXC.
References
- ^ http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.html?jumpid=reg_R1002_USEN
- ^ http://wiki.openvz.org/Ploop
- ^ Kolyshkin, Kir (6 October 2012). "OpenVZ turns 7, gifts are available!". OpenVZ Blog. Diakses tanggal 2013-01-17.
- ^ http://wiki.openvz.org/Ploop
- ^ Kolyshkin, Kir (6 October 2012). "OpenVZ turns 7, gifts are available!". OpenVZ Blog. Diakses tanggal 2013-01-17.
- ^ vzctl(8) man page, CPU fair scheduler parameters section, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters
- ^ http://openvz.org/VSwap
- ^ vzctl(8) man page, Device access management subsection, http://wiki.openvz.org/Man/vzctl.8#Device_access_management
- ^ vzctl(8) man page, PCI device management section, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
- ^ vzctl(8) man page, Network devices section, http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
- ^ EasyVZ: Grafische Verwaltung für OpenVZ. Frontend für freie Linux-Virtualisierung