Linux Dosya Sistemi Nasıl Çalışır? /etc, /var, /home, /proc Nedir?

Dizin ağacından inode ve mount kavramına: Linux'ta yapılandırma, uygulama verisi ve çekirdek bilgisinin nerede yaşadığını pratik bir sunucu senaryosuyla inceleyelim.

October 14, 2025•4 min read•

Bir Linux sunucusuna ilk kez bağlandığınızda çok sayıda dizin görürsünüz. Bu dizinleri ezberlemek, bir dosyanın neden orada bulunduğunu anlamaktan daha az işe yarar. Asıl soru şudur: Bu bilgi bir yapılandırma mı, değişen uygulama verisi mi, kullanıcı dosyası mı, yoksa çalışan sistemin anlık görünümü mü?

Bir Node.js servisini dağıttığımızı varsayalım. Uygulama kodu, ortam ayarları, yüklenen belgeler ve loglar aynı klasöre konursa ilk sürüm çalışabilir. Ancak dağıtım sırasında hangi dosyanın korunacağını, hangi alanın yedekleneceğini ve hangi kullanıcıya yazma izni verileceğini ayırt etmek zorlaşır.

Tek bir dizin ağacı, birden fazla dosya sistemi

Linux'ta yollar kök dizinden, yani / noktasından başlar. Bu, tüm verinin tek bir diskte olduğu anlamına gelmez. Başka diskler, ağ dosya sistemleri ve sanal dosya sistemleri bu ağacın farklı noktalarına bağlanabilir. Bu bağlama işlemine mount denir.

findmnt
lsblk -f
df -h
df -i

İlk iki komut bağlama noktalarını ve blok aygıtlarını görmenizi sağlar. df -h kapasiteyi, df -i ise inode kullanımını gösterir. Milyonlarca küçük dosya üreten bir uygulama, boş disk alanı bulunsa bile kullanılabilir inode kalmadığı için yeni dosya oluşturamayabilir. Bu nedenle “disk dolu” hatasını yalnızca gigabayt cinsinden incelemek eksik kalır.

Bir dizinin üstüne başka bir dosya sistemi bağlandığında, alttaki eski içerik silinmez; bağlama etkin olduğu sürece görünmez olur. Beklenmedik biçimde kaybolmuş görünen dosyalarda mount durumunu kontrol etmek bu yüzden önemlidir.

/etc: makinenin yapılandırması

/etc, sisteme özgü yapılandırmaların merkezidir. Örneğin SSH sunucusu ayarları, Nginx yapılandırması veya servis tanımları burada bulunabilir. Çalışma sırasında sürekli büyüyen kullanıcı yüklemelerini buraya koymak doğru bir sorumluluk ayrımı değildir. Dizinlerin genel amaçları Filesystem Hierarchy Standard içinde tanımlanır; dağıtımların ayrıntıları farklılaşabilir.

Örnek bir uygulama için şu ayrım kullanılabilir:

/opt/task-api/              Uygulama sürümü
/etc/task-api/config.env    Makineye özgü ayarlar
/var/lib/task-api/          Kalıcı uygulama verisi
/var/log/task-api/          Dosyaya yazılıyorsa loglar

Bu bir dağıtım tasarımı örneğidir, her uygulamanın zorunlu yerleşimi değildir. Container ortamında ayarları environment veya secret mekanizmasıyla, logları standart çıktıyla taşımak daha uygun olabilir.

/var: zaman içinde değişen veriler

/var altında log, kuyruk, cache ve uygulama durumu gibi değişken veriler bulunur. Burada önemli ayrım yeniden üretilebilir veri ile kaybı kabul edilemeyen veri arasındadır.

Bir resim önbelleği yeniden üretilebilir. Kullanıcının yüklediği özgün dosya ise yalnızca cache değildir. İkisini aynı temizleme politikasına bağlamak veri kaybına yol açabilir. Yedekleme planında dizin adından önce verinin iş anlamını belirleyin.

Loglar için de sınırsız büyüme kabul edilebilir değildir. Döndürme, saklama süresi ve merkezi toplama birlikte düşünülmelidir. Uygulama diski doldurursa sorun yalnızca log yazımını değil, aynı dosya sistemindeki veritabanını veya paket işlemlerini de etkileyebilir.

/home ve /root: kullanıcı alanları

Normal kullanıcıların kişisel dosyaları çoğunlukla /home/kullanici altında bulunur. Root kullanıcısının ev dizini ise genellikle /root olur. /root ile kök dizin / aynı şey değildir.

Servisi kendi kullanıcı hesabınızın ev dizininden çalıştırmak başlangıçta kolaydır. Fakat hesap izinleri veya kişisel dosya düzeni değiştiğinde servis de etkilenir. Ayrı bir servis kullanıcısı, açık çalışma dizini ve yalnızca gerekli alanlara yazma izni daha öngörülebilir bir işletim modeli sağlar.

/proc: diskte saklanan sıradan dosyalar değil

/proc, çekirdeğin ve süreçlerin çalışma bilgilerini dosya benzeri bir arayüzle sunar. Buradaki içerik çoğunlukla erişim sırasında oluşturulur; normal bir klasör gibi yedeklenecek kalıcı veri değildir. Ayrıntılar proc(5) kılavuzunda açıklanır.

cat /proc/meminfo
cat /proc/loadavg
cat /proc/self/status
ls -l /proc/self/fd

Son iki komut kendi sürecinizin durumunu ve açık dosya tanımlayıcılarını incelemek için başlangıçtır. Her /proc girdisinin okunabilir olması beklenmez; erişim kimliği ve sistem güvenlik ayarları görünürlüğü sınırlar.

Dosya adı, inode ve silinmiş ama açık dosya

Dosya adı ile dosyanın metadata kaydı aynı kavram değildir. Inode; izin, sahiplik ve dosya türü gibi bilgileri temsil eder. Dosya sistemindeki isimler bu nesnelere ulaşmak için kullanılır. inode(7) bu ayrımı teknik olarak açıklar.

Bir uygulama log dosyasını açık tutarken dosyanın adını silerseniz, süreç açık tanımlayıcı üzerinden yazmayı sürdürebilir. Alan hemen geri dönmeyebilir. Böyle bir olayda gelişigüzel başka dosyalar silmek yerine, yetkiniz varsa lsof +L1 ile bağlantısı kaldırılmış açık dosyaları araştırabilirsiniz.

Bir arızaya uygulayalım

“Dosya yükleme çalışmıyor” bildirimi geldiğinde önce uygulamanın gerçek yazma yolunu belirleyin. Sonra o yolun hangi mount üzerinde olduğunu, kapasiteyi, inode kullanımını ve servis kullanıcısının dizine erişimini kontrol edin. Yol yalnızca container'ın geçici katmanındaysa bir sonraki yeniden oluşturmada dosyalar kaybolabilir.

İyi bir dosya sistemi düzeni, yalnızca temiz klasörler üretmez. Dağıtım, izin, yedekleme ve arıza incelemesinin birbirini bozmadan yürütülmesini sağlar.