GNU/Linux >> Belajar Linux >  >> Linux

7 namespace Linux yang paling banyak digunakan

Saya ingin memberikan beberapa contoh untuk memperjelas definisi teknis seputar ruang nama . Wikipedia memiliki definisi berikut:

Namespaces adalah fitur kernel Linux yang mempartisi sumber daya kernel sedemikian rupa sehingga satu set proses melihat satu set sumber daya dan satu set proses melihat satu set sumber daya yang berbeda. Fitur ini bekerja dengan memiliki ruang nama yang sama untuk sekelompok sumber daya dan proses, tetapi ruang nama tersebut merujuk ke sumber daya yang berbeda.

Definisi ini agak sulit dicerna bagi sebagian orang, jadi mungkin analogi ini bisa membantu. Pertimbangkan gedung apartemen saya. Ini secara teknis dua bangunan yang berbeda dengan pintu masuk mereka sendiri. Namun, garasi parkir, gym, kolam renang, dan ruang bersama digunakan bersama. Bangunan-bangunan tersebut memiliki nama mereka sendiri, City Place dan City Place 2 . Mereka memiliki alamat jalan, lantai, dan lift mereka sendiri. Namun, mereka terikat pada kompleks fisik yang sama.

Kompleks fisik adalah ide yang sama dengan komputer. Dua ruang nama (atau lebih) dapat berada di komputer fisik yang sama, dan seperti halnya gedung apartemen, ruang nama dapat berbagi akses ke sumber daya tertentu atau memiliki akses eksklusif.

Ada tujuh jenis namespace yang umum digunakan saat ini. Menggunakan apartemen sebagai panduan kita, mari kita telusuri ringkasan tentang apa yang dilakukan setiap tipe. Di bawah ini adalah ikhtisar singkat dari setiap jenis namespace. Dalam artikel berikutnya, kami akan menunjukkan bagaimana setiap namespace bekerja dengan contoh.

Isolasi proses (ruang nama PID)

PID , atau ID proses membantu sistem melacak tugas tertentu di komputer. Saat Anda meluncurkan Firefox di komputer Anda, itu akan memiliki PID yang terkait dengannya. Untuk memastikan bahwa komputer berinteraksi dengan tugas dengan benar, tugas tersebut direferensikan oleh PID. Mari kita asumsikan bahwa Anda membuka Firefox dan Brave Browser secara bersamaan. Anda menjalankan mesin pencari pilihan Anda, seperti DuckDuckGo, di setiap browser dan mencari gambar kucing dalam satu dan gambar anjing di lain. Kedua browser membuat permintaan serupa ke situs web yang sama. Bagaimana komputer memastikan bahwa hasil pencarian yang benar dikembalikan ke browser yang benar? Salah satu cara utama adalah dengan menelusuri permintaan yang dibuat setiap PID dan kemudian mengembalikan hasilnya ke proses permintaan.

"Hebat, aku tersesat," katamu. Apa hubungannya ini dengan gedung apartemen dan ruang nama? Nah, katakanlah Anda ingin menjalankan salinan perangkat lunak yang identik. Beberapa perangkat lunak tidak ditulis untuk membuka lebih dari satu salinan sekaligus. Untuk mencapai ini, Anda mungkin harus mengisolasi PID sehingga tidak mengetahui apa yang terjadi di luar prosesnya sendiri. Inilah yang dapat membantu untuk dipecahkan oleh isolasi proses.

Dengan kata lain, kembali ke gedung apartemen kami, apartemen individu di kompleks mirip dengan namespace PID. Setiap rumah tangga di kompleks apartemen ingin menyalakan TV mereka dan menonton berbagai konten. Di alam semesta paralel yang konyol, bayangkan bahwa ketika satu orang di gedung apartemen menyalakan TV mereka, tidak ada orang lain yang bisa menonton TV karena jika tidak, penyedia kabel tidak akan tahu TV mana yang harus menonton "The Office" dan "The Office" mana. Anak magang." Namespace akan memungkinkan perusahaan kabel untuk mengisolasi setiap rumah tangga dan menyediakan program yang berbeda untuk setiap penghuni karena tidak lagi penting apa yang dilihat orang lain di kompleks Anda.

[ Pelajari lebih lanjut tentang ruang nama PID. ]

Antarmuka jaringan (net namespace)

Setiap komputer yang terhubung ke jaringan (seperti internet) memerlukan alamat IP. Ini adalah nomor unik yang memungkinkan komputer berkomunikasi secara efektif. Ketika jenis sumber daya tertentu diakses, katakanlah halaman web, ada port tertentu yang digunakan untuk komunikasi itu. Ini karena komputer dapat meng-host server web, server game, dan mungkin server email di host yang sama. Port mungkin 80 atau 443 untuk lalu lintas web, 8888 untuk lalu lintas game, dan 25 untuk email. Saat saya mengetik https:// ke browser, komputer menerjemahkannya untuk mengirimkan lalu lintas ke IP browser xxx.xxx.xxx.xxx pada port 443 . Server di ujung yang lain kemudian membalas dengan konten yang sesuai melalui alamat IP sumber. Beberapa tumpukan teknologi, seperti yang disebutkan sebelumnya, tidak mendukung banyak perangkat lunak yang berjalan secara bersamaan. Namun, tidak seperti isolasi PID, ketika perangkat lunak seperti server email menerima sambungan, perangkat lunak tersebut diharapkan berada di port tertentu. Jadi, bahkan jika Anda mengisolasi PID, server email hanya akan menjalankan satu instance karena port 25 sudah digunakan. Ruang nama jaringan memungkinkan proses di dalam setiap instance ruang nama memiliki akses ke alamat IP baru bersama dengan berbagai port. Dengan demikian, Anda dapat menjalankan beberapa versi server email yang mendengarkan pada port 25 tanpa konflik perangkat lunak.

Dalam skenario bangunan saya, bangunan-bangunan tersebut melekat pada kompleks fisik yang sama dan merupakan bayangan cermin satu sama lain. Ini berarti ada jumlah ruang hidup yang sama di setiap bangunan. Selain itu, mereka mengikuti skema penomoran apartemen yang sama. Artinya setiap gedung memiliki Unit 707, misalnya. Dalam contoh ini, alamat IP seperti alamat jalan gedung apartemen, dan nomor apartemen adalah port. Setiap kompleks apartemen merupakan bagian dari bangunan fisik yang sama, tetapi memiliki alamat jalan yang berbeda. Karena bangunan tidak terpisah secara fisik, tanpa net namespace . ini sebuah perusahaan mengirimkan tagihan ke Steve Ovens, 123 Fake Street Unit 707 mungkin tidak pernah menerima balasan karena pergi ke alamat yang salah. Kemungkinan besar, kantor pos tidak akan berusaha mengirimkan surat karena alamat yang tidak jelas. Namun, ruang nama bersih memungkinkan kami untuk memiliki 123 Jalan Palsu dan 125 Jalan Palsu di gedung fisik yang sama.

[ Pelajari lebih lanjut tentang ruang nama bersih. ]

Sistem Pembagian Waktu Unix (uts namespace)

Namespace ini sayangnya dinamai menurut standar saat ini. Tanggal kembali ke hari-hari awal Unix dan berkaitan dengan bagaimana informasi disimpan untuk panggilan sistem tertentu. Hari ini, detail ini sebagian besar hilang dari sejarah dan apa yang benar-benar perlu Anda ketahui adalah bahwa namespace UTS memungkinkan pemisahan nama host. Seringkali nama host hanyalah sebuah kenyamanan. Seperti disebutkan sebelumnya, dengan beberapa pengecualian, sebagian besar komunikasi ke dan dari host dilakukan melalui alamat IP dan nomor port. Namun, itu membuat hidup jauh lebih mudah bagi kita manusia ketika kita memiliki semacam nama yang melekat pada suatu proses. Mencari melalui file log, misalnya, jauh lebih mudah ketika mengidentifikasi nama host. Salah satunya karena, dalam lingkungan yang dinamis, IP dapat berubah.

Dalam analogi gedung kami, nama host mirip dengan nama gedung apartemen. Memberi tahu sopir taksi bahwa saya tinggal di City Place apartemen biasanya lebih efektif daripada memberikan alamat yang sebenarnya. Memiliki beberapa nama host pada satu host fisik sangat membantu dalam lingkungan kemas yang besar.

[ Pelajari lebih lanjut tentang ruang nama uts. ]

Ruang nama pengguna

Setiap sistem komputer memiliki beberapa cara untuk melacak pengguna mana yang memiliki file mana. Ini memungkinkan sistem untuk membatasi akses ke file sistem yang sensitif. Ini juga mencegah orang yang menggunakan komputer yang sama untuk mengakses file satu sama lain. Untuk pengguna akhir, file ditampilkan sebagai milik nama login seperti stratus . Namun, bagi komputer, ini hanyalah kombinasi acak dari karakter alfanumerik. Untuk melacak izin ini dengan benar, ada proses pemetaan stratus user pengguna ke nomor identifikasi pengguna (UID) tertentu, seperti 1001. UID ini kemudian diterapkan ke metadata file. Ini memungkinkan Anda untuk mengubah nama pengguna Anda menjadi stratus1 tanpa sistem harus melakukan pembaruan metadata dalam jumlah yang signifikan. File pemetaan diperbarui sehingga UID 1001 kemudian dikaitkan dengan stratus1 bukannya stratus . Entri diubah di satu (atau sejumlah kecil) tempat.

Anggap ini mirip dengan kotak surat di lantai gedung apartemen saya. Setiap kotak surat memiliki nama atau beberapa nama yang terkait dengannya. Ketika seseorang ingin mengirimkan surat kepada saya, mereka memasukkan surat itu ke dalam kotak 707, misalnya. Haruskah saya memutuskan untuk mengubah nama saya, atau menambahkan nama istri saya ke kotak surat, tidak ada yang berubah. Surat masih menuju ke lokasi yang sama, hanya orang yang berwenang yang dapat melihat file-file ini, dan kunci saya untuk membuka kotak tidak berubah.

[ Pelajari lebih lanjut tentang ruang nama pengguna. ]

Mount (mnt namespace)

mount namespace digunakan untuk mengisolasi mount point sehingga proses di namespace yang berbeda tidak dapat melihat file satu sama lain. Jika Anda sudah familiar dengan perintah chroot, fungsinya sama.

Dalam analogi kami, saya akan menyimpang sedikit dari apartemen. Mari kita asumsikan dua orang menikah. Dalam skenario ini, ada banyak hal yang biasanya berakhir dibagikan. Anda mungkin mencantumkan nama mereka di daftar alamat, Anda mungkin memiliki kedua nama di tagihan, memiliki kedua nama di setiap kepemilikan mobil, dan menambahkannya ke kartu kredit Anda, dll. Dalam hal ini, Anda berbagi titik pemasangan yang sama dengan orang lain. Namun, kredit mereka mungkin terpisah, mereka mungkin membayar pajak mereka sendiri, dan seterusnya. Nomor Asuransi Sosial mereka (nomor Jaminan Sosial untuk teman-teman kita di AS) tetap berbeda dari nomor Anda dan sebaliknya. Oleh karena itu, meskipun pasangan Anda mungkin melihat pandangan yang sama tentang situasi keuangan, itu tidak akan persis sama. Mereka tidak memiliki kemampuan nyata untuk melihat masalah keuangan apa pun yang secara hukum merupakan satu-satunya milik Anda.

Hal yang sama berlaku untuk titik pemasangan sistem file. Secara default, ruang nama pemasangan yang berbeda tidak dapat melihat konten yang lain. Sejauh menyangkut namespace, itu adalah akar dari sistem file, dan tidak ada yang lain. Namun, Anda dapat memasang bagian dari sistem file yang mendasarinya ke dalam ruang nama pemasangan, sehingga memungkinkannya untuk melihat informasi tambahan.

[ Pelajari lebih lanjut tentang ruang nama mnt. ]

Komunikasi antarproses (IPC)

Namespace ini sangat teknis dan kompleks untuk dipahami dan dijelaskan. Sedemikian rupa sehingga Marty Kalin memiliki serangkaian artikel di Opensource.com yang merinci komunikasi antarproses (IPC). Jika Anda benar-benar tertarik, saya akan merujuk Anda ke seri Marty karena saya tidak bisa melakukan keadilan topik ini. IPC menangani komunikasi antar proses dengan menggunakan area memori bersama, antrian pesan, dan semaphore. Jika semua itu terdengar asing bagi Anda, jangan khawatir, Anda tidak sendirian. Aplikasi yang paling umum untuk jenis manajemen ini mungkin adalah penggunaan database.

Jika kita memperbesar satu aspek IPC, memori bersama, kita bisa mendapatkan pemahaman dasar tentang pentingnya. Dalam pemrograman, setiap kali aplikasi perlu melacak beberapa informasi sementara, ia meminta sistem operasi untuk mendedikasikan sejumlah memori akses acak (RAM) untuk prosesnya. Anda dapat memikirkan hal ini, mirip dengan memulai percakapan dengan seseorang dalam program obrolan. Secara default, hanya ada dua penerima, Anda dan orang di ujung sana, atau memikirkan cara lain, sistem operasi, dan aplikasi. Kedua peserta dapat melihat seluruh riwayat percakapan, tetapi tidak ada orang lain yang bisa. Namun, jika seseorang yang baru diundang ke obrolan, mereka juga dapat membaca dan berpartisipasi dalam diskusi. Memori bersama dapat bertindak serupa, memungkinkan dua atau lebih program memiliki akses ke informasi yang sama. Perubahan oleh satu program akan segera terlihat oleh program lainnya.

Grup C

Untuk melihat lebih dalam tentang cgroups, saya sarankan membaca seri saya di redhat.com. Dalam seri empat bagian itu, saya membahas secara mendetail tentang cara kerja cgroup dan bagaimana Anda dapat mempraktikkannya. Singkatnya, cgroups adalah mekanisme untuk mengontrol sumber daya sistem. Ketika cgroup aktif, ia dapat mengontrol jumlah CPU, RAM, blok I/O, dan beberapa aspek lain yang mungkin dikonsumsi oleh suatu proses. Secara default, cgroup dibuat di sistem file virtual /sys/fs/cgroup . Membuat namespace cgroup yang berbeda pada dasarnya memindahkan direktori root dari cgroup. Jika cgroup adalah, misalnya, /sys/fs/cgroup/mycgroup , cgroup namespace baru dapat menggunakan ini sebagai direktori root. Tuan rumah mungkin melihat /sys/fs/cgroup/mycgroup/{group1,group2,group3} tetapi membuat ruang nama cgroup baru berarti bahwa ruang nama baru hanya akan melihat {group1,group2,group3} .

Anda mungkin bertanya-tanya mengapa ini mungkin diperlukan. Bagian dari ini terkait keamanan. Jika ruang nama cgroup baru tidak dibuat, ada potensi kebocoran informasi. Halaman manual mengatakan yang terbaik:

Ini mencegah kebocoran informasi dimana jalur direktori cgroup di luar wadah jika tidak akan terlihat oleh proses dalam wadah. Kebocoran tersebut dapat, misalnya, mengungkapkan informasi tentang kerangka kerja container ke aplikasi containerized.

Dalam hierarki cgroup tradisional, ada kemungkinan bahwa cgroup bersarang bisa mendapatkan akses ke ancestornya. Ini berarti bahwa suatu proses di /sys/fs/cgroup/mycgroup/group1 memiliki potensi untuk membaca dan/atau memanipulasi apa pun yang bersarang di bawah mycgroup .

Akhirnya, berpikir secara khusus tentang wadah, ruang nama cgroup memungkinkan wadah menjadi agnostik dari cgroup leluhur. Ini penting untuk sesuatu seperti OpenShift, yang dapat memigrasikan container antar host. Tanpa isolasi yang disediakan oleh namespaces, nama path cgroup lengkap perlu direplikasi pada host baru saat memigrasi container. Karena jalur harus unik, ruang nama cgroup membantu menghindari konflik pada sistem host baru.

Dalam hal analogi bangunan, cgroup mirip dengan utilitas di setiap unit. Sementara cgroups dapat membatasi penggunaan sumber daya, itu juga dapat bertindak sebagai akuntan. Jadi sementara apartemen saya tidak mencegah saya menggunakan sejumlah daya atau air, itu pasti melacak (dan menagih) penggunaan saya. Penggunaan tersebut hanyalah sebagian kecil dari penggunaan bangunan secara keseluruhan. Saya tidak tahu total penggunaan gedung (leluhur apartemen saya), saya juga tidak tahu berapa banyak yang digunakan tetangga saya. Mereka berada di ruang nama cgroup yang sama sekali berbeda.

[ Dapatkan ebook gratis ini:Mengelola kluster Kubernetes Anda untuk boneka. ]

Menutup

Jadi di sana Anda memiliki gambaran singkat tentang tujuh ruang nama yang paling sering digunakan. Semoga analogi saya bermanfaat dan jelas. Dalam beberapa artikel berikutnya, saya menjelajahi beberapa ruang nama ini dan cara membuatnya dengan tangan. Ini akan memberi Anda pemahaman yang lebih baik tentang utilitas ruang nama. Di artikel terakhir, saya menghubungkan semuanya, termasuk penggunaan cgroups untuk menjelaskan cara container berfungsi "di balik layar".


Linux
  1. Kuasai perintah Linux ls

  2. Perintah terminal Linux mana yang paling sering Anda gunakan?

  3. Ruang Nama Linux

  1. Apa momen terpenting dalam sejarah Linux?

  2. Linux:Bagaimana Menemukan Driver Perangkat yang Digunakan Untuk Perangkat?

  3. Linux – Bagaimana Cara Mendaftar Namespace Di Linux?

  1. 80 Aplikasi Linux Esensial Paling Banyak Digunakan Tahun 2021

  2. 25 Contoh Aturan IPTables Linux yang Paling Sering Digunakan

  3. Cara Mengatasi Masalah Internet Paling Umum di Linux