PID Namespace
Temel Bilgiler
PID (Process IDentifier) ad alanı, Linux çekirdeğinde bir özelliktir ve diğer ad alanlarındaki PID'lerden bağımsız olarak bir grup işlemin kendi benzersiz PID kümesine sahip olmasını sağlayarak işlem izolasyonu sağlar. Bu, özellikle güvenlik ve kaynak yönetimi için işlem izolasyonunun önemli olduğu konteynerleştirme durumlarında kullanışlıdır.
Yeni bir PID ad alanı oluşturulduğunda, bu ad alanındaki ilk işleme PID 1 atanır. Bu işlem, yeni ad alanının "init" işlemi olur ve ad alanı içindeki diğer işlemleri yönetmekten sorumludur. Ad alanı içinde oluşturulan her bir sonraki işlem, bu ad alanı içinde benzersiz bir PID'ye sahip olacak ve bu PID'ler diğer ad alanlarındaki PID'lerden bağımsız olacaktır.
Bir PID ad alanı içindeki bir işlem açısından, yalnızca aynı ad alanındaki diğer işlemleri görebilir. Diğer ad alanlarındaki işlemlerden haberdar değildir ve geleneksel işlem yönetimi araçlarını (örneğin, kill
, wait
, vb.) kullanarak bunlarla etkileşime geçemez. Bu, işlemlerin birbirleriyle etkileşimini engelleyen bir izolasyon seviyesi sağlar.
Nasıl Çalışır:
Yeni bir işlem oluşturulduğunda (örneğin,
clone()
sistem çağrısı kullanılarak), işlem yeni veya mevcut bir PID ad alanına atanabilir. Yeni bir ad alanı oluşturulursa, işlem bu ad alanının "init" işlemi olur.Çekirdek, yeni ad alanındaki PID'ler ile ebeveyn ad alanındaki karşılık gelen PID'ler arasında bir eşleme tutar (yani, yeni ad alanının oluşturulduğu ad alan). Bu eşleme, PID'leri gerektiğinde çevirmek için çekirdeğe olanak sağlar, örneğin farklı ad alanlarındaki işlemler arasında sinyal gönderirken.
PID ad alanı içindeki işlemler yalnızca aynı ad alanındaki diğer işlemleri görebilir ve bunlarla etkileşime geçebilir. Diğer ad alanlarındaki işlemlerden haberdar değillerdir ve PID'leri kendi ad alanları içinde benzersizdir.
Bir PID ad alanı yok edildiğinde (örneğin, ad alanının "init" işlemi çıkış yaptığında), o ad alanı içindeki tüm işlemler sonlandırılır. Bu, ad alanıyla ilişkili tüm kaynakların düzgün bir şekilde temizlendiğini sağlar.
Lab:
Farklı Ad Alanları Oluşturma
CLI
--mount-proc
parametresini kullanarak /proc
dosya sisteminin yeni bir örneğini bağladığınızda, yeni mount namespace'inin o namespace'e özgü işlem bilgilerinin doğru ve izole bir görünümünü sağlamış olursunuz.
Docker
Hangi ad alanında olduğunuzu kontrol edin
Bir sürecin hangi ad alanında olduğunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
Burada <PID>
, ad alanını kontrol etmek istediğiniz sürecin kimlik numarasını temsil eder. Bu komutu çalıştırdığınızda, sürecin PID ad alanı hakkında bilgi içeren bir dizi sembolik bağlantı göreceksiniz.
Örneğin, PID'si 123 olan bir sürecin ad alanlarını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
Bu komutu çalıştırdığınızda, sürecin PID ad alanı hakkında bilgi içeren sembolik bağlantıları göreceksiniz.
Tüm PID ad alanlarını bulun
Not: İlk (varsayılan) PID ad alanından kök kullanıcısı, yeni PID ad alanlarındaki süreçleri bile görebilir, bu yüzden tüm PID ad alanlarını görebiliriz.
Bir PID ad alanına giriş yapma
PID ad alanına varsayılan ad alanından girdiğinizde, hala tüm işlemleri görebilirsiniz. Ve PID ad alanındaki işlem, PID ad alanındaki yeni bash'i görebilir.
Ayrıca, yalnızca kök kullanıcıysanız başka bir işlem PID ad alanına girebilirsiniz. Ve /proc/self/ns/pid gibi ona işaret eden bir tanımlayıcı olmadan başka bir ad alana giremezsiniz.
Referanslar
Last updated