- Apa itu LXC?
- Untuk apa itu berguna?
- Apa perbedaan antara LXC dan virtualisasi biasa?
linux
lxc
containers
Daniel Cukier
sumber
sumber
Jawaban:
Jika dengan "Bahasa Inggris Biasa" yang Anda maksud adalah orang yang tidak teknis, perbedaannya tidak dapat dijelaskan dengan mudah. Rambut itu terlalu halus untuk dibelah tanpa pertimbangan yang cermat.
Jika dengan "Bahasa Inggris Biasa" yang Anda maksud adalah tipe manajerial yang berbicara dengan orang teknis, dan dengan demikian memiliki setidaknya pemahaman yang lewat tentang topik teknis, saya mengirimkan verbage berikut:
Ini adalah bentuk virtualisasi yang berbeda.
Jika Anda melihat VMWare ESXi, itu adalah hypervisor penuh yang menjalankan apa yang disebut virtualisasi penuh. Ada lapisan yang sangat kecil antara sistem virtual yang berjalan di atas perangkat keras. Ada virtualisasi perangkat keras penuh, di mana OS yang berjalan di mesin virtual sepenuhnya independen dari hypervisor itu sendiri dan disajikan dengan semua perangkat keras yang diharapkan.
Ambil langkah lain, dan lihat sesuatu seperti VMWare Player, Workstation, ESX (bukan ESXi), atau VMWare Server, dan Anda memiliki sistem operasi penuh yang menyediakan peran hypervisor. Namun, mesin virtual masih disajikan dengan berbagai perangkat keras virtual.
Pendekatan lain adalah para-virtualisasi, yang Xen ikuti untuk beberapa waktu. Dalam bentuk virtualisasi ini, sistem operasi tamu menyadari bahwa itu tervirtualisasi dan telah dimodifikasi untuk berfungsi di lingkungan itu. Terkadang semua kebutuhan ini adalah driver para-virtualisasi khusus. Di lain waktu, perubahan kernel langsung diperlukan.
LXC, atau Linux Containers, adalah langkah lain. Dalam hal ini ia menjalankan beberapa instance dari sistem operasi yang sama persis . Kernel mungkin sama, tetapi beberapa ruang pengguna berjalan untuk setiap wadah OS. Setiap wadah mungkin atau mungkin tidak memiliki sistem file yang berbeda.
Kontainer menawarkan cara untuk memberikan pemisahan keamanan yang kuat antara proses dengan cara yang tidak tersedia di sistem yang memiliki ruang pengguna yang sama. Sistem operasi mirip Unix telah memiliki 'chroot jail' selama beberapa waktu, tetapi tidak memberikan pemisahan proses atau kemampuan untuk membatasi sumber daya yang dikonsumsi oleh proses di penjara. Dengan kemasukan proses seperti itu, penggunaan sumber daya dapat dibatasi, alamat IP yang terpisah dapat ditugaskan kepadanya, dan kerentanan keamanan yang mengeksploitasi userspace terkandung dari seluruh sistem.
Di mana Anda akan menggunakan LXC versus beberapa jenis virtualisasi lainnya? Itu tergantung, tetapi LXC harus memberikan hukuman virtualisasi yang lebih sedikit daripada metode vitualisasi lainnya karena itu adalah kernel yang sama yang memediasi semua panggilan ruang pengguna alih-alih hypervisor yang berpura-pura menjadi perangkat keras ke sekelompok gambar OS yang berharap untuk berbicara dengan perangkat keras fisik. Jadi jika Anda memiliki banyak pemrosesan yang membutuhkan versi OS yang sama, dan dapat di-boot ulang pada saat yang sama untuk pembaruan, LXC dapat menyediakan cara murah untuk menjalankan semua itu dengan aman dan dengan manajemen sumber daya.
sumber
LXC adalah sarana untuk mengisolasi sistem / proses pada kernel. Sistem dikunci dalam "wadah" sehingga tidak dapat berinteraksi dengan apa pun di luar wadah itu. Demikian nama Linux Containers.
Ini bisa berguna untuk banyak hal, salah satunya adalah mengisolasi layanan yang berjalan pada mesin. Jika salah satu dari layanan ini dikompromikan, sistem host itu sendiri (bersama dengan layanan lain yang berjalan di LXC mereka sendiri) tidak akan terpengaruh. Itu bahkan dapat digunakan sebagai cara bodoh untuk memberikan akses root setiap pengguna ke sistem mereka sendiri, tanpa khawatir mereka berinteraksi satu sama lain.
Kebanyakan virtualisasi "umum" lainnya mengenakan biaya penggunaan sumber daya yang besar karena kebutuhan untuk meniru perangkat keras. LXC tidak memerlukan emulasi apa pun untuk perangkat keras, karena setiap LXC diberikan terbatas / tidak ada akses langsung ke perangkat keras. Setiap sistem "berjalan" pada host, tetapi tidak dapat mempengaruhi apa pun di luar wadahnya. Jenis virtualisasi ini disebut virtualisasi tingkat OS (google it). Yang pada dasarnya berarti sangat sedikit / tidak ada overhead untuk menjalankan Linux Container. Jadi Anda dapat memiliki ratusan LXC pada mesin yang diberikan, tetapi Anda akan kehabisan sumber daya dengan cepat menggunakan perangkat lunak mesin virtual "umum".
Saya sebenarnya lebih akrab dengan Linux-Vserver tetapi teorinya sangat mirip.
sumber
Cara paling sederhana untuk memahaminya adalah dengan mempelajari apa yang dilakukan chroot. chroot memungkinkan Anda "masuk" ke folder sistem mirip unix, seolah-olah itu adalah sistem lengkap dengan haknya sendiri. Dengan kata lain:
jika Anda memiliki:
dll., maka Anda dapat menambahkan direktori some_new_install:
dan masuk ke / some_new_install. Maka / some_new_install / etc adalah baru / etc, misalnya, dan asli / etc disembunyikan, dan (kebanyakan) tidak dapat diakses. / usr / bin bisa berbeda dari aslinya, dengan program yang berbeda. MySQL bisa menjadi program yang sama di / usr / bin / mysql, tetapi dengan data yang berbeda di / var / lib / mysql.
Sistem file telah divirtualisasi; Anda telah membagi sistem file asli Anda, membagikan sumber dayanya, mengisolasi sumber daya tersebut dari sumber daya tervirtualisasi lainnya.
Ini sangat bagus. Alih-alih menjalankan salinan virtual unix yang sama sekali baru, hanya untuk menjalankan satu program tambahan, Anda dapat beralih ke sistem file virtual dan menjalankannya di kernel yang sama, pustaka yang sama (jika Anda menggunakan symlink), dll. Jauh JAUH lebih efisien daripada sesuatu seperti Xen, atau VirtualBox.
Masalahnya adalah, jika salah satu dari program itu, katakanlah, MySQL, menjadi gila dan mulai menggunakan semua CPU Anda dan bertukar pada disk, maka itu masih akan mempengaruhi sisa mesin, karena hanya sistem file divirtualisasi, bukan CPU atau kinerja disk yang mendasarinya. Alamat dan port IP juga tidak divirtualisasi, jadi jika dua program mengirim informasi di jaringan, maka mereka akan melakukannya dari IP yang sama, yang berpotensi menyebabkan konflik. Demikian juga, jika dua salinan mysql mencoba mendengarkan pada port, yang kedua akan gagal, karena port sedang digunakan.
LXC memecahkan masalah ini dengan membuat virtualisasi tidak hanya sistem file, tetapi juga ips / port / interface jaringan, CPU, penggunaan memori, dll.
LXC tidak cukup aman seperti mesin virtual penuh, tetapi umumnya, ini adalah solusi yang unggul. Bagaimanapun, sistem operasi adalah tentang berbagi sumber daya dengan aman. Sebagian besar waktu, itu konyol untuk menjalankan beberapa OS untuk melakukan itu - kita hanya perlu OS yang lebih baik dengan isolasi yang lebih baik. Itulah yang disediakan LXC dan alat serupa.
sumber