Dosya Sistemleri
Bir dosya sistemi, bir işletim sisteminin verileri nasıl depolayacağını ve alacağını kontrol etmek için kullandığı bir yöntem ve veri yapısıdır.
Bir dosya sistemi (FS), bir işletim sisteminin (OS) verileri nasıl depolayacağını ve alacağını kontrol etmek için kullandığı bir yöntem ve veri yapısıdır. Veri yönetiminin omurgasıdır; dosyaları ve dizinleri sabit sürücüler, SSD'ler veya USB sürücüler gibi depolama aygıtlarında hiyerarşik veya başka bir yapılandırılmış şekilde düzenler. Bir dosya sisteminin temel işlevleri, dosya ve dizin oluşturma, silme, okuma, yazma ve düzenlemeyi içerir. Dosya adları, boyutları, oluşturulma tarihleri, değiştirilme tarihleri, izinler ve sahiplik gibi dosya meta verilerini yönetir. Farklı dosya sistemleri, veri ayırma için ardışık ayırma, bağlı ayırma veya dizinli ayırma gibi çeşitli teknikler kullanır; her birinin kendi performans ve parçalanma özellikleri vardır. Dizin yapıları düz, hiyerarşik veya bir kombinasyon olabilir. Dosya sistemi tasarımı için temel hususlar arasında performans (iş hacmi ve gecikme süresi), güvenilirlik (veri bütünlüğü, hata toleransı), ölçeklenebilirlik (çok sayıda dosya ve büyük dosya boyutlarını işleme), güvenlik (erişim kontrolü) ve farklı işletim sistemleriyle uyumluluk yer alır. Örnekler, çıkarılabilir ortamlar için basit FAT varyantlarından NTFS, ext4, APFS gibi karmaşık günlük tutan dosya sistemlerine ve HDFS veya Ceph gibi dağıtılmış dosya sistemlerine kadar uzanır.
graph LR
Center["Dosya Sistemleri"]:::main
Rel_database["database"]:::related -.-> Center
click Rel_database "/terms/database"
Rel_caching["caching"]:::related -.-> Center
click Rel_caching "/terms/caching"
Rel_arweave["arweave"]:::related -.-> Center
click Rel_arweave "/terms/arweave"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5 yaşındaki gibi açıkla
Bilgisayarınızın depolama alanı için bir kütüphaneci gibi düşünün. Her kitabın (dosyanın) tam olarak nerede olduğunu bilir, kimlerin okuyabileceğini takip eder ve doğru yere geri konulmasını sağlar.
🤓 Expert Deep Dive
Dosya sistemleri, fiziksel depolama ortamını soyutlayarak, bir ad alanında (dizinler) organize edilmiş adlandırılmış veri koleksiyonları (dosyalar) mantıksal görünümü sunar. Temel bileşenler, meta verileri ve veri bloklarına işaretçileri depolayan inode (veya eşdeğer yapı) ve adları inode'lara eşleyen dizin girişlerini içerir. Ayırma stratejileri performansı ve parçalanmayı önemli ölçüde etkiler: ardışık ayırma yüksek sıralı okuma performansı sunar ancak dış parçalanmadan muzdariptir; bağlı ayırma dış parçalanmayı önler ancak rastgele erişim performansı düşüktür ve işaretçi bozulmasına karşı savunmasızdır; dizinli ayırma (örneğin, Unix dosya blokları) bir denge sağlar, ancak doğrudan/dolaylı blok şemaları dosya boyutunu sınırlayabilir. Günlük tutma (örneğin, ext4, NTFS), meta veri değişikliklerini uygulamadan önce kaydederek güvenilirliği artırır ve çökmelerden sonra dosya sistemi tutarlılığını sağlar. Yazma Kopyalama (CoW) dosya sistemleri (örneğin, ZFS, Btrfs), verileri yerinde üzerine yazmayarak, bunun yerine yeni kopyalar oluşturarak veri bütünlüğünü daha da iyileştirir, verimli anlık görüntüler ve veri temizleme sağlar. Dağıtılmış dosya sistemleri (örneğin, HDFS, GlusterFS), verileri birden çok düğüme şeritler halinde dağıtarak ölçeklenebilirlik ve hata toleransı sorunlarını ele alır, karmaşık tutarlılık modelleri ve ağ protokolleri gerektirir.