Linux Dosya Sistemi Hiyerarşisinin Derinliklerine İniş: Kökten Uca Bir Sistem Mimarisi Rehberi

Kutay Utku
13 dk okuma

Linux işletim sisteminin kalbinde, özenle organize edilmiş bir dosya sistemi hiyerarşisi yatar. Bu yapı sadece dosyaları düzenlemez; sistemin felsefesini, güvenlik anlayışını ve organizasyon mantığını yansıtan bir mimaridir. İster yeni başlayan bir kullanıcı olun, ister deneyimli bir sistem yöneticisi, bu hiyerarşiyi anlamak Linux’u gerçekten anlamanın kapısını açar.

Kök Dizin (/): Evrenin Başlangıcı

Her şeyin başladığı yer. Linux felsefesinde “her şey bir dosyadır” ve bu dosyaların tamamı kök dizin altında organize edilir. Windows’tan farklı olarak, Linux’ta sürücüler ve cihazlar da bu hiyerarşi içinde bağlanır, bütünsel bir yapı oluşturur.

Tarihsel Not: UNIX’ten miras alınan bu yapı, 1990’larda Filesystem Hierarchy Standard (FHS) ile standartlaştırıldı. Günümüzde FHS 3.0, tüm büyük Linux dağıtımları için referans oluşturur.

Ana Dizinlerin Detaylı İncelenmesi

/bin ve /sbin: Sistemin Nabzı

  • /bin (User Binaries): Sistemin tek kullanıcı modunda dahi ihtiyaç duyduğu temel komutlar burada yer alır. ls, cp, bash gibi olmazsa olmaz araçlar. İlginç Detay: Modern dağıtımlarda /bin genellikle /usr/bin‘e sembolik bağlantıdır. Bu “usr birleştirmesi” (usrmerge) disk alanı ve yönetim kolaylığı sağlar.
  • /sbin (System Binaries): Sistem önyüklemesi ve onarımı için gerekli araçlar. Normal kullanıcıların çoğu zaman bu komutlara ihtiyacı olmaz, bu nedenle genellikle yönetici izni gerektirir.

/boot: Sistemin Doğuş Anı

Sistemin açılış seremonisinin sahne arkası:

  • vmlinuz: Sıkıştırılmış çekirdek imajı
  • initrd/initramfs: Geçici kök dosya sistemi – donanım sürücülerini yükler
  • GRUB/GRUB2: Bootloader konfigürasyonları
  • System.map: Çekirdek sembol tablosu

Önemli Uyarı: /boot genellikle ayrı bir bölüm olarak ayrılır, özellikle disk şifrelemesi (LUKS) veya RAID kullanıldığında.

/dev: Sanal Gerçeklik

Linux felsefesinin en somut örneği. Her donanım bileşeni, her sanal cihaz burada bir dosya olarak temsil edilir:

  • Blok Cihazlar: /dev/sda, /dev/nvme0n1 (rastgele erişim)
  • Karakter Cihazlar: /dev/tty, /dev/pts/0 (akış bazlı)
  • Özel Cihazlar:
  • /dev/null: Kara delik – veriyi yutar
  • `/dev/zero**: Sonsuz sıfır bayt kaynağı
  • /dev/random ve /dev/urandom: Rastgele sayı üreteçleri

Modern Gelişme: Systemd ile /dev dinamik hale geldi – udev sistemi cihazları otomatik olarak yönetiyor.

/etc: Sistemin Hafızası

“Editable Text Configuration” veya “Extended Tool Chest” olarak da bilinir. Sistemin tüm konfigürasyonu burada:

  • Temel Konfigürasyonlar:
  • /etc/passwd: Kullanıcı veritabanı
  • /etc/group: Grup tanımları
  • /etc/fstab: Dosya sistemi bağlama tablosu
  • /etc/hosts: İsim çözümleme tablosu
  • Servis Konfigürasyonları:
  • /etc/ssh/sshd_config: SSH sunucusu ayarları
  • /etc/apache2/: Apache web sunucusu yapılandırması
  • /etc/nginx/: Nginx yapılandırması
  • Kabuk Konfigürasyonları:
  • /etc/bash.bashrc: Sistem geneli bash ayarları
  • /etc/profile: Sistem geneli profil ayarları

Güvenlik Notu: /etc/shadow (şifre hash’leri) sadece root tarafından okunabilir, /etc/passwd ise herkes tarafından okunabilir.

/home: Kişisel Alemler

Çok kullanıcılı sistemlerin kalbi. Her kullanıcıya özel bir ev:

  • Gizli Dosyalar: . ile başlayan dosyalar (.bashrc, .ssh/, .config/)
  • Masaüstü Standartları: Desktop/, Documents/, Downloads/, Music/, Pictures/
  • Uygulama Verileri: ~/.local/share/, ~/.cache/, ~/.mozilla/

Performans İpucu: /home genellikle ayrı bir bölüme yerleştirilir, böylece sistem yeniden kurulurken kişisel veriler korunabilir.

/lib ve /lib64: Paylaşılan Bilgelik

Dinamik bağlantı kütüphaneleri – bellek tasarrufu ve güncelleme kolaylığı için:

  • .so dosyaları: Shared Object (paylaşılan nesne) dosyaları
  • Sürüm Yönetimi: libc.so.6 gibi sürüm numaralı bağlantılar
  • Özel Kütüphaneler:
  • /lib/modules/: Çekirdek modülleri
  • /lib/firmware/: Donanım firmware dosyaları

Teknik Detay: ldd komutu ile bir programın hangi kütüphanelere bağlı olduğunu görebilirsiniz: ldd /bin/ls

/media ve /mnt: Geçici Misafirler

  • /media: Otomatik bağlama noktası. GNOME/KDE gibi masaüstü ortamları USB’leri buraya bağlar
  • /mnt: Manuel bağlama için. Sistem yöneticileri geçici dosya sistemlerini buraya bağlar

Uygulama Örneği: sudo mount /dev/sdb1 /mnt/external – harici diski bağlama

/opt: Ticari ve Özel Yazılımlar

Self-contained (kendi kendine yeten) yazılımlar için:

  • /opt/google/chrome/: Google Chrome
  • /opt/oracle/java/: Oracle Java
  • /opt/vmware/: VMware ürünleri

Avantaj: Paket yöneticisiyle gelen yazılımlarla çakışma olmaz, kaldırılması kolaydır.

/proc: Canlı Sistem Röntgeni

Sanal dosya sistemi – çekirdek ve süreçler hakkında gerçek zamanlı bilgi:

  • Sistem Bilgileri:
  • /proc/cpuinfo: İşlemci detayları
  • /proc/meminfo: Bellek kullanımı
  • /proc/version: Çekirdek versiyonu
  • Süreç Bilgileri: Her PID için bir dizin (/proc/1234/)
  • cmdline: Çalıştırılan komut
  • status: Süreç durumu
  • fd/: Açık dosya tanımlayıcıları
  • Çekirdek Parametreleri: /proc/sys/ altında sysctl ile değiştirilebilen parametreler

Örnek Kullanım: cat /proc/uptime sistemin ne kadar süredir çalıştığını gösterir.

/root: Süper Kullanıcının Evi

Root kullanıcısının home dizini. /home/root değil, doğrudan kök altında. Normal kullanıcıların erişimine kapalı.

/run: Runtime Verileri

Geçici dosya sistemi (tmpfs) – RAM’de tutulur, sistem yeniden başlatılınca kaybolur:

  • Systemd Dünyası:
  • /run/systemd/: Systemd runtime verileri
  • /run/user/1000/: Kullanıcı servisleri (1000 kullanıcı ID’si)
  • Soket ve PID Dosyaları: Çalışan servislerin iletişim dosyaları

Tarihsel Not: Eskiden /var/run ve /var/lock olan yapılar, systemd ile /run altına taşındı.

/srv: Servis Verileri

Sunucu servislerinin verileri için:

  • /srv/www/: Web sunucusu içeriği
  • /srv/ftp/: FTP sunucusu dosyaları
  • /srv/git/: Git depoları

Best Practice: Web sunucunuzun dosyalarını /srv/www/example.com gibi düzenlemek profesyonel bir yaklaşımdır.

/sys: Modern Donanım Arayüzü

Çekirdek 2.6 ile gelen sanal dosya sistemi – donanım ve çekirdek bileşenlerine arayüz:

  • Cihaz Ağacı: /sys/devices/ – bağlı tüm cihazlar
  • Çekirdek Modülleri: /sys/module/ – yüklü modüller
  • Güç Yönetimi: /sys/power/ – suspend/hibernate ayarları

Kullanım Senaryosu: Ekran parlaklığını değiştirmek: echo 500 > /sys/class/backlight/intel_backlight/brightness

/tmp: Geçicilik Diyarı

Tüm kullanıcıların yazabildiği geçici alan:

  • tmpfs olarak bağlanır: RAM’de çalışır, hızlıdır
  • Temizleme Politikaları: systemd-tmpfiles ile düzenli temizlenir
  • Güvenlik: sticky bit (t biti) sayesinde kullanıcılar sadece kendi dosyalarını silebilir

Not: Kritik veriler asla /tmp‘de saklanmamalıdır.

/usr: Evrenin Genişlemesi

“UNIX System Resources” veya “User” – ikincil hiyerarşi:

/usr Alt Yapısının Derinlemesine İncelemesi:

/usr/bin/: En kalabalık dizin – binlerce kullanıcı komutu:

tree /usr/bin/ | head -20  # İlk 20 komutu gör

/usr/sbin/: Sistem yönetimi araçları – normalde root erişimi gerektirir.

/usr/lib/ ve /usr/lib64/: /usr/bin ve /usr/sbin için kütüphaneler.

/usr/local/: Yerel yazılımlar için – sistem paket yöneticisinin müdahale etmediği alan:

  • /usr/local/bin/: Yerel komutlar
  • /usr/local/lib/: Yerel kütüphaneler
  • /usr/local/src/: Yerel kaynak kodlar

Felsefe: “Kendi kendine derlediğin yazılımları /usr/local‘e kur.”

/usr/share/: Mimariye özgü olmayan paylaşılan veriler:

  • Dokümantasyon:
  • /usr/share/man/: Manuel sayfalar (bölümler: 1-kullanıcı, 5-dosya formatları, 8-yönetici)
  • /usr/share/doc/: Detaylı dokümantasyon
  • /usr/share/info/: GNU info dokümanları
  • Veri Dosyaları:
  • /usr/share/zoneinfo/: Zaman dilimi verileri
  • /usr/share/terminfo/: Terminal veritabanı
  • /usr/share/i18n/: Uluslararasılaştırma verileri
  • Çokluortam:
  • /usr/share/fonts/: Sistem yazı tipleri
  • /usr/share/icons/: Masaüstü ikonları
  • /usr/share/sounds/: Sistem sesleri
  • /usr/share/wallpapers/: Duvar kağıtları
  • Uygulama Verileri:
  • /usr/share/applications/: .desktop dosyaları
  • /usr/share/mime/: MIME türü tanımları

/usr/include/: C/C++ başlık dosyaları. Derleyiciler buradaki .h dosyalarını arar:

#include <stdio.h>  // /usr/include/stdio.h
#include <stdlib.h> // /usr/include/stdlib.h

/usr/src/: Kaynak kodlar. Linux çekirdek kaynağı genellikle /usr/src/linux bağlantısıyla burada bulunur.

/var: Değişken Evren

İçeriği sürekli değişen dosyalar – log’lar, veritabanları, kuyruklar:

/var Alt Yapısının Tam Analizi:

/var/log/: Sistemin günlüğü – sorun gidermenin anahtarı:

  • /var/log/syslog veya /var/log/messages: Genel sistem mesajları
  • /var/log/auth.log: Kimlik doğrulama log’ları
  • /var/log/kern.log: Çekirdek mesajları
  • /var/log/apt/: APT paket yöneticisi log’ları
  • /var/log/apache2/ veya /var/log/nginx/: Web sunucusu log’ları

Rotasyon Mekanizması: logrotate log dosyalarını düzenli olarak döndürür ve sıkıştırır.

/var/cache/: Önbellek verileri – silinebilir, yeniden oluşturulabilir:

  • /var/cache/apt/: APT paket önbelleği
  • /var/cache/man/: Manuel sayfa önbelleği
  • /var/cache/fontconfig/: Yazı tipi önbelleği

/var/lib/: Durum bilgileri – uygulama veritabanları:

  • /var/lib/dpkg/: DEB paket veritabanı
  • /var/lib/mysql/: MySQL veritabanları
  • /var/lib/docker/: Docker konteyner ve imajları

/var/spool/: Kuyruğa alınmış işler:

  • /var/spool/cron/: Cron görevleri (kullanıcı bazlı)
  • /var/spool/cups/: Yazdırma kuyruğu
  • /var/spool/mail/: Gelen e-postalar (eskiden)
  • /var/spool/postfix/: Postfix e-posta kuyruğu

/var/run/: Çalışan süreç bilgileri (modern sistemlerde /run‘a taşındı):

  • PID dosyaları: .pid uzantılı dosyalar
  • Soket dosyaları: .sock uzantılı dosyalar

/var/tmp/: Kalıcı geçici dosyalar – /tmp‘den farklı olarak sistem yeniden başlatılsa da kalır.

/var/lock/: Kilit dosyaları – kaynak çakışmalarını önler (modern sistemlerde /run/lock).

/var/opt/: /opt altındaki uygulamaların değişken verileri.

/var/mail/: Kullanıcı e-postaları (MBOX formatı).

Özel ve Modern Dizinler

/snap ve /flatpak: Modern Paket Sistemleri

  • /snap: Snap paketlerinin kurulum yeri (Canonical)
  • /var/snap: Snap uygulamalarının verileri
  • /var/lib/flatpak/: Flatpak uygulamaları ve verileri

/efi veya /boot/efi: UEFI Sistemler

UEFI firmware için EFI System Partition (ESP) bağlama noktası.

Dosya Sistemi Hiyerarşisinin Tarihsel Evrimi

UNIX’ten Linux’a Miras

1970’lerde Bell Labs’de geliştirilen UNIX, ilk hiyerarşik dosya sistemini tanıttı. Linux bu mirası devraldı ve geliştirdi.

FHS (Filesystem Hierarchy Standard)

  • FHS 1.0 (1994): İlk standart
  • FHS 2.0 (1997): Genişletilmiş versiyon
  • FHS 2.3 (2004): Genel kabul gören versiyon
  • FHS 3.0 (2015): Güncel standart

Modern Trendler

  1. usrmerge: /bin, /sbin, /lib‘nin /usr altına taşınması
  2. systemd: /run ve /sys/fs/cgroup gibi yeni dizinler
  3. Konteynerleşme: /var/lib/docker, /var/lib/containers

Pratik Sistem Yönetimi İpuçları

Disk Bölümleme Stratejileri

# Örnek bölümleme (sunucu için):
/         : 20-30GB  (kök dosya sistemi)
/boot    : 1GB       (UEFI için 512MB yeterli)
/home    : Kalan alanın %50'si
/var     : 20-30GB   (log ve veritabanları için)
/tmp     : 5-10GB    (veya tmpfs kullan)
swap     : RAM boyutunun 1-2 katı

Kritik Dizinlerin Yedeklenmesi

# Acil yedekleme listesi:
/etc/            # Tüm yapılandırmalar
/home/           # Kullanıcı verileri
/var/www/        # Web içeriği
/var/lib/mysql/  # Veritabanları (mysqldump daha iyi)
/root/           # Root kullanıcı verileri

Disk Kullanım Analizi

# En çok yer kaplayan dizinleri bul:
du -sh /* 2>/dev/null | sort -hr | head -10

# /var/log temizleme:
sudo journalctl --vacuum-time=7d  # 7 günden eski log'ları temizle
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;

Güvenlik En İyi Uygulamaları

  1. Dizin İzinleri:
   chmod 755 /home/kullanici    # Ev dizini güvenliği
   chmod 700 /root              # Root dizini tam korumalı
  1. Sticky Bit:
   chmod +t /tmp                # Herkes yazabilir, sadece sahip silebilir
  1. SELinux/AppArmor Etiketleri:
   ls -Z /etc                   # SELinux bağlamını görüntüle

Dosya Sistemi Türleri ve Optimizasyon

Linux’ta Yaygın Dosya Sistemleri

  • ext4: Varsayılan, kararlı, genel kullanım
  • XFS: Büyük dosyalar için optimize, sunucularda yaygın
  • Btrfs: Anlık görüntü, sıkıştırma, hata düzeltme
  • ZFS: Gelişmiş özellikler, RAID-Z, veri bütünlüğü
  • tmpfs: RAM tabanlı, geçici dosyalar için

Performans İpuçları

# Dosya sistemi parametrelerini optimize et:
tune2fs -o journal_data_writeback /dev/sda1  # ext4 için
mount -o noatime,nodiratime /dev/sda1 /mnt   # Atime güncellemelerini devre dışı bırak

# SSD'ler için TRIM:
fstrim -v /      # Kök dosya sisteminde TRIM çalıştır

Sistem Başlangıç Süreci ve Dizinlerin Yüklenmesi

Önyükleme Sırası

  1. BIOS/UEFI: /boot/efi/ veya /boot/
  2. Bootloader: GRUB konfigürasyonu (/boot/grub/)
  3. Çekirdek: /boot/vmlinuz
  4. Initramfs: /boot/initrd.img
  5. Init Süreci: systemd (/lib/systemd/) veya SysV init (/etc/init.d/)
  6. Dosya Sistemleri: /etc/fstab‘a göre bağlanır

Sorun Giderme Senaryoları

Disk Doluluk Sorunları

# En çok yer kaplayan 10 dosya:
find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head -10

# /var/log temizleme:
sudo journalctl --vacuum-size=500M  # Log'ları 500MB ile sınırla

Bozuk Dosya Sistemi Onarımı

# Salt okunur bağlanmışsa:
mount -o remount,rw /  # Yeniden okuma-yazma modunda bağla

# Dosya sistemi kontrolü:
fsck /dev/sda1         # Dosya sistemi kontrol ve onarım

Gelişmiş Konular

Bind Mounts – Dizinleri Farklı Yerlere Bağlama

# /home'u /mnt/backup/home olarak da bağla:
mount --bind /home /mnt/backup/home

OverlayFS – Katmanlı Dosya Sistemleri

Docker ve container’ların temel teknolojisi:

mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /merged

Namespaces ve Chroot

# Chroot ile izole ortam:
chroot /mnt/newroot /bin/bash  # Farklı kök dizininde kabuk

Gelecek Trendleri

  1. Stateless Sistemler: Atomic/Immutable dağıtımlar (Fedora Silverblue, openSUSE MicroOS)
  2. Konteyner Odaklı: Sistem bileşenlerinin konteyner olarak paketlenmesi
  3. Dağıtık Dosya Sistemleri: Ceph, GlusterFS entegrasyonu
  4. Güvenli Kök: Android’deki gibi kısıtlı kök erişimi

Sonuç: Bir Sistem Olarak Linux

Linux dosya sistemi hiyerarşisi, basit bir organizasyon şemasından çok daha fazlasıdır. Bu, bir felsefenin, onlarca yıllık deneyimin ve sistem tasarımı bilgeliğinin somutlaşmış halidir. Her dizin, her sembolik bağlantı, her izin biti bilinçli bir tasarım kararının ürünüdür.

Anahtar Çıkarımlar:

  1. Tutarlılık: FHS sayesinde dağıtımlar arası tutarlılık
  2. Güvenlik: İzinler ve izolasyonla güçlü güvenlik modeli
  3. Esneklik: Hem gömülü sistemlerde hem süper bilgisayarlarda çalışabilme
  4. Bakım Kolaylığı: Sorun giderme ve yükseltme için optimize yapı

Öğrenme Yol Haritası:

  1. Temel dizinleri ve amaçlarını öğrenin
  2. Sistem yönetimi sırasında bu dizinleri aktif kullanın
  3. Sorun giderme senaryolarında log ve konfigürasyon dizinlerini keşfedin
  4. Kendi sisteminizde tree, ls, ve find komutlarıyla keşif yapın

Linux’un gücü, bu basit ama güçlü organizasyon yapısında yatar. Dosya sistemi hiyerarşisini anlamak, Linux’u gerçekten anlamanın ilk ve en önemli adımıdır.

💬 Yorum Bırak