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,bashgibi olmazsa olmaz araçlar. İlginç Detay: Modern dağıtımlarda/bingenellikle/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/randomve/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:
.sodosyaları: Shared Object (paylaşılan nesne) dosyaları- Sürüm Yönetimi:
libc.so.6gibi 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 komutstatus: Süreç durumufd/: Açık dosya tanımlayıcıları- Çekirdek Parametreleri:
/proc/sys/altındasysctlile 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-tmpfilesile 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/syslogveya/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ı:
.piduzantılı dosyalar - Soket dosyaları:
.sockuzantı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
- usrmerge:
/bin,/sbin,/lib‘nin/usraltına taşınması - systemd:
/runve/sys/fs/cgroupgibi yeni dizinler - 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ı
- Dizin İzinleri:
chmod 755 /home/kullanici # Ev dizini güvenliği
chmod 700 /root # Root dizini tam korumalı
- Sticky Bit:
chmod +t /tmp # Herkes yazabilir, sadece sahip silebilir
- 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ı
- BIOS/UEFI:
/boot/efi/veya/boot/ - Bootloader: GRUB konfigürasyonu (
/boot/grub/) - Çekirdek:
/boot/vmlinuz - Initramfs:
/boot/initrd.img - Init Süreci: systemd (
/lib/systemd/) veya SysV init (/etc/init.d/) - 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
- Stateless Sistemler: Atomic/Immutable dağıtımlar (Fedora Silverblue, openSUSE MicroOS)
- Konteyner Odaklı: Sistem bileşenlerinin konteyner olarak paketlenmesi
- Dağıtık Dosya Sistemleri: Ceph, GlusterFS entegrasyonu
- 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:
- Tutarlılık: FHS sayesinde dağıtımlar arası tutarlılık
- Güvenlik: İzinler ve izolasyonla güçlü güvenlik modeli
- Esneklik: Hem gömülü sistemlerde hem süper bilgisayarlarda çalışabilme
- Bakım Kolaylığı: Sorun giderme ve yükseltme için optimize yapı
Öğrenme Yol Haritası:
- Temel dizinleri ve amaçlarını öğrenin
- Sistem yönetimi sırasında bu dizinleri aktif kullanın
- Sorun giderme senaryolarında log ve konfigürasyon dizinlerini keşfedin
- Kendi sisteminizde
tree,ls, vefindkomutları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.