Mobil Cihaz Dosya Sistemi: Nedir, Dizin Yapısı ve Nasıl Çalışır

Yazar: IT Sectr Yayınlanma: 2026-03-13 Okuma süresi: 11 dk

Mobil cihaz dosya sistemi, flash bellek üzerindeki verileri düzenleme, depolama ve adlandırma yöntemidir. Android Developers, 2026'ya göre, mobil işletim sistemleri, her uygulamanın izole bir sandbox içinde çalıştığı hiyerarşik bir dizin yapısı kullanır. Bu mimari, yetkisiz veri erişimini önler ve birden fazla uygulama aynı anda çalışırken sistemin kararlı şekilde çalışmasını sağlar.

Önemli Noktalar

  • Dosya sistemi, verilerin cihazda nasıl düzenlendiğini, indekslendiğini ve korunduğunu tanımlar
  • Android, farklı erişim izinleri ve dosya sistemleriyle /data, /system ve /sdcard bölümlerini kullanır
  • iOS, APFS ve Sandbox konteynerleriyle çalışır ve her uygulama çekirdek seviyesinde izole edilir
  • EXT4 ve F2FS Android'deki ana dosya sistemleridir, iOS'ta APFS, SD kartlarda exFAT
  • Erişim izinleri Android'de Linux (rwx) ve iOS'ta Sandbox profilleri, bir uygulamanın hangi dosyaları okuyup değiştirebileceğini kontrol eder

Mobil Cihaz Dosya Sistemi Nedir?

Dosya sistemi, fiziksel ortamda verilerin nasıl yazıldığını, okunduğunu ve düzenlendiğini yöneten işletim sisteminin bir yazılım bileşenidir. Mobil cihazlarda dosya sistemi kritik öneme sahip işlevleri yerine getirir: flash bellek alanı yönetimi, izinlere dayalı dosya erişim kontrolü, çökmelerden sonra kurtarma için değişikliklerin günlüğe kaydedilmesi ve NAND flash belleğin özelliklerini dikkate alarak yazma optimizasyonu.

Masaüstü işletim sistemlerinin aksine, mobil dosya sistemleri flash belleğin sınırlı yeniden yazma döngüsü sayısı dikkate alınarak tasarlanır. NAND hücreleri sınırlı sayıda silme işlemine dayanabilir — TLC ve MLC bellek için sırasıyla 3.000 ila 10.000 döngü. Depolama ömrünü uzatmak için dosya sistemleri aşınma dengeleme mekanizmaları ve TRIM komutları kullanır. Samsung tarafından özellikle flash bellek için geliştirilen F2FS, NAND dizisi geometrisini dikkate alır ve parçalanmayı ve blok silme işlemi sayısını en aza indirecek şekilde verileri yerleştirir.

Modern mobil cihazlar birden çok dosya sisteminin bir kombinasyonunu kullanır. Dahili bellek (/data bölümü) Android'de EXT4 veya F2FS, iOS'ta APFS olarak biçimlendirilir. SD kartlar geleneksel olarak 4 GB'tan büyük dosyalar için exFAT veya maksimum uyumluluk için FAT32 kullanır. Android'de /system bölümü genellikle salt okunur olarak bağlanır ve EXT4 veya EROFS (Enhanced Read-Only File System) — Huawei tarafından sistem bölümü boyutunu küçültmek için geliştirilmiş sıkıştırılmış bir dosya sistemi kullanır.

Android'de Dizin Yapısı

Android'in dizin hiyerarşisi, / köküyle Linux yapısına dayanır. Her bölümün kendi dosya sistemi, erişim izinleri ve amacı vardır. Bir uygulama yalnızca sınırlı bir dizi dizine erişebilir — geri kalanı root izinleriyle korunur.

YolBölümDosya SistemiUygulama Erişimi
/dataKullanıcı VerisiF2FS / EXT4Yalnızca kendi sandbox'ı
/systemSistemEROFS / EXT4Salt okunur (root)
/sdcardHariciexFAT / FAT32İzinle
/cacheÖnbellekEXT4Yalnızca root
/vendorSatıcıEROFS / EXT4Salt okunur (root)

/data Bölümü ve Uygulama Sandbox'ı

/data bölümü, kullanıcı verilerini, yüklenen uygulamaları ve ayarlarını depolamak için ana bölümdür. Her uygulama /data/data/<package_name>/ yolunda kendi dizinini alır. Bu dizinin içinde sistem otomatik olarak alt dizinler oluşturur: uygulama dosyaları için files/, geçici dosyalar için cache/, SQLite veritabanları için databases/, SharedPreferences için shared_prefs/. Bu dizine erişim izinleri uygulama yüklenirken ayarlanır ve root erişimi olmadan değiştirilemez. /data bölümü çoğu modern cihazda F2FS olarak biçimlendirilir ve EXT4'e kıyasla %40'a kadar daha yüksek rastgele yazma hızı sağlar.

/system Bölümü ve Sistem Bileşenleri

/system bölümü, işletim sistemini, sistem uygulamalarını ve kütüphanelerini içerir. Bu bölüm, sistem dosyalarının kazara veya kötü niyetli değiştirilmesini önlemek için salt okunur olarak bağlanır. Android 10+ ve Project Treble destekli cihazlarda /system bölümü dinamiktir ve tam bir yeniden flaşlama gerektirmeden OTA paketleri aracılığıyla güncellenebilir. Uygulamalar için /system bölümüne erişilemez — yazma girişimi bir SecurityException oluşturur. Ancak uygulamalar, uygun izinlere sahiplerse sistem yazı tipleri ve yapılandırma dosyaları gibi /system'den bazı dosyaları okuyabilir.

/sdcard Bağlama Noktası

/sdcard bağlama noktası, öykünülmüş veya fiziksel harici depolama bölümüne sembolik bir bağlantıdır. SD kartı olmayan cihazlarda /sdcard, paylaşımlı erişim için belirlenmiş /data içindeki bir alt bölümü gösterir. Bu bölüm, cihaz MTP protokolü aracılığıyla bir bilgisayara bağlandığında kullanıcı tarafından görülebilir. Uygulamalar /sdcard'a READ_EXTERNAL_STORAGE ve WRITE_EXTERNAL_STORAGE izinleri aracılığıyla ve Android 10'dan itibaren MediaStore API'sini kullanan Scoped Storage aracılığıyla erişir. /sdcard'ın boyutu tipik olarak toplam flash belleğin %60–80'idir ve geri kalanı /data bölümü için ayrılmıştır.

iOS'ta Dizin Yapısı

iOS'ta dosya sistemi, uygulamaların Sandbox konteynerleri aracılığıyla düzenlenir. Her uygulama, XNU çekirdek seviyesinde erişimi kısıtlanmış izole bir dizin alır. Kullanıcı bölümü, iOS 10.3'te tanıtılan APFS'yi (Apple File System) kullanır. APFS, anlık görüntüleri, dosya klonlamayı ve dosya düzeyinde şifrelemeyi destekler ve bu da onu mobil cihazlar için optimal hale getirir.

Standart Sandbox Konteyner Dizinleri

Bir iOS Sandbox konteyneri dört ana dizin içerir: Documents, Library, tmp ve SystemData. Her dizinin kendi yedekleme politikası, veri saklama süresi ve erişim seviyesi vardır. Documents otomatik olarak iCloud ve iTunes yedeklemelerine dahil edilir. Library, Caches (yedeklenmez), Preferences (yedeklenir) ve Application Support (yedeklenir) alt dizinlerini içerir. tmp dizini, depolama azaldığında iOS'un silebileceği geçici dosyalar içindir — yedeklemelere dahil edilmez. SystemData sistemin kendisi tarafından kullanılır ve standart API'ler aracılığıyla uygulamalar tarafından erişilemez.

swift
let fm = FileManager.default

let documents = fm.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first!

let caches = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!

let appSupport = fm.urls(
    for: .applicationSupportDirectory,
    in: .userDomainMask
).first!

Her Sandbox konteyner dizininin kendi koruma sınıfı vardır. iOS dört sınıfı destekler: Tam Koruma (cihaz kilitliyken dosyaya erişilemez), Açık Değilse Korumalı (önceden açılmış dosyalara kilitliyken erişilebilir), İlk Kullanıcı Kimlik Doğrulamasına Kadar Korumalı (ilk kilit açma işleminden sonra dosyalara erişilebilir) ve Koruma Yok (cihaz başlatıldıktan sonra dosyalara her zaman erişilebilir). Varsayılan olarak, Documents ve Library'deki tüm dosyalar Tam Koruma sınıfını alır ve kullanıcı verilerinin maksimum düzeyde korunmasını sağlar. Bir dosya oluştururken, bir arka plan uygulamasının cihaz kilitliyken verilere erişmesi gerekiyorsa farklı bir koruma sınıfı açıkça belirtilebilir.

Dosya Sistemi Erişim İzinleri ve Güvenlik

Mobil cihazlarda dosyalara erişim kontrolü, Android ve iOS arasındaki temel bir farktır. Android, uygulama izolasyonu için uzantılarla birlikte klasik Linux izin modelini (okuma, yazma, çalıştırma) kullanır. iOS, her uygulamanın izole bir konteynerde çalıştığı ve özel mekanizmalar olmadan diğer uygulamaların dosyalarına erişemediği daha katı bir Sandbox modeli kullanır.

Android'de İzinler

Android'de her uygulama ayrı bir UID (Kullanıcı Kimliği) ile çalıştırılır. Bir uygulamanın sandbox'ında oluşturduğu tüm dosyalar bu UID'ye aittir ve diğer uygulamalar tarafından görülmez. Paylaşılan dizinlere (harici depolama) erişmek için uygulamanın READ_EXTERNAL_STORAGE ve WRITE_EXTERNAL_STORAGE izinlerini talep etmesi gerekir. Android 11'den itibaren izinler çalışma zamanında talep edilmelidir ve targetSdkVersion 30+ olan bir uygulama, diğer uygulamaların dosyalarına erişmek için SAF kullanmalıdır. İzin modelinin ihlali, standart bir try-catch bloğu tarafından işlenen bir SecurityException'a neden olur. Google Play, yayınlamadan önce uygulamanın izin politikasına uygunluğunu otomatik olarak kontrol eder.

kotlin
if (ContextCompat.checkSelfPermission(
    context,
    Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(
        activity,
        arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
        REQUEST_CODE
    )
}

iOS Sandbox ve Anahtar Zinciri

iOS Sandbox, XNU çekirdek seviyesinde uygulanır ve uygulamanın konteynerini terk etmesine izin vermez. Uygulama, Document Picker aracılığıyla harici bir dosya URI'sine erişim elde etse bile, işletim sistemi orijinaline doğrudan erişim sağlamak yerine uygulamanın konteynerinde geçici bir kopya oluşturur. Uygulamalar arasında dosya paylaşımı için iOS, bir uygulamanın konteynerinden diğerine dosya kopyalayan Share Sheet ve UIActivityViewController mekanizmalarını kullanır. Kimlik bilgilerinin (token, parola, anahtar) güvenli bir şekilde saklanması için iOS, Anahtar Zinciri'ni sağlar — çekirdek seviyesinde sistem tarafından erişilebilen şifrelenmiş bir depolama alanı. Anahtar Zinciri, Sandbox konteynerinin bir parçası değildir ve ayrı bir securityd arka plan programı tarafından yönetilir, bu da uygulamanın güvenliği ihlal edilse bile ek bir koruma katmanı sağlar.

Dosya Sistemi Özellikleri: EXT4, APFS, F2FS

Dosya sistemi seçimi, depolama performansını ve güvenilirliğini doğrudan etkiler. Her dosya sisteminin kendi mimarisi, optimizasyonları ve sınırlamaları vardır. Bir geliştiricinin bu farklılıkları anlaması, uygulamanın farklı cihazlardaki davranışını tahmin etmek için faydalıdır.

  • EXT4 — 16 TB'a kadar dosyaları ve 1 EB'a kadar birimleri destekleyen, günlük kaydı olan standart bir Linux dosya sistemidir. F2FS benimsenmeden önce Android'de birincil dosya sistemi olarak kullanılmıştır. Günlük kaydı sayesinde güvenilirlik sağlar ancak her işlemde inode ve blok bit eşlemlerini güncelleme ihtiyacı nedeniyle rastgele yazma hızında F2FS'den düşüktür
  • F2FS — Samsung tarafından 2012 yılında özellikle NAND flash bellek için geliştirilmiş bir dosya sistemidir. Flash dizi geometrisini dikkate alır, günlük yapılı bir mimari kullanır ve EXT4'e kıyasla %25–40 daha yüksek rastgele yazma performansı sağlar. Android 11'den itibaren Google, /data bölümü için birincil dosya sistemi olarak F2FS'yi önermektedir
  • APFS — Apple'ın 2017'de tanıttığı dosya sistemidir. Anlık görüntüleri, dosya klonlamayı (kopyalama-üzerine-yazma), dosya düzeyinde şifrelemeyi ve sağlama toplamları aracılığıyla sıkı veri bütünlüğü kontrolünü destekler. APFS, SSD'ler için optimize edilmiştir ve depolama ömrü boyunca performansı korumak için TRIM komutlarını kullanır
  • exFAT — SD kartlarda ve USB sürücülerde kullanılan Microsoft dosya sistemidir. 4 GB'tan büyük dosyaları ve 128 PB'a kadar birimleri destekler. Günlük kaydı yoktur, bu nedenle ani güç kaybı veri bozulmasına yol açabilir. Çıkarılabilir ortamlar için önerilir ancak sistem bölümleri için önerilmez

Uygulama geliştirirken, farklı dosya sistemlerinin farklı dosya adı uzunluğu sınırlamaları (EXT4 ve F2FS için 255 bayt, APFS için 255 Unicode karakter), maksimum dosya boyutu ve özel karakter desteği olduğunu unutmayın. Örneğin APFS, emojiler dahil Unicode karakterlerine dosya adlarında izin verirken EXT4 ASCII ile sınırlıdır. Uygulamanız farklı dillerde adlara sahip dosyalar oluşturuyorsa, tüm hedef cihazlarda test edin — APFS'de doğru oluşturulan bir dosya adı EXT4'te kesilebilir.

Dosya Sistemiyle Çalışma Önerileri

Mobil cihaz dosya sistemiyle güvenilir çalışma için birkaç temel kurala uyulması gerekir. Bunlar, geliştiricilerin tipik hatalarının ve resmi dokümantasyon önerilerinin analizine dayanır.

  • Dizinler için sabit kodlanmış yollar kullanmayın. Yolları her zaman sistem API'leri aracılığıyla alın: Android'de context.filesDir, iOS'ta NSSearchPathForDirectoriesInDomains. Sabit kodlanmış yollar işletim sistemi sürümleri ve cihazlar arasında değişir
  • Dosya işlemlerinin istisnalarını işleyin: IOException, FileNotFoundException, SecurityException. iOS'ta tüm FileManager işlemleri hata fırlatabilir — bunları do-catch içine alın. Android'de harici depolama işlemleri ortamın olmaması nedeniyle başarısız olabilir
  • Yazmadan önce kullanılabilir alanı kontrol edin. Android'de File.getUsableSpace() ve iOS'ta URLResourceValues.volumeAvailableCapacityKey kullanın. Boş alan yetersizse kullanıcıyı uyarın
  • Yedeklemelere dahil olan dizinlerde büyük dosyalar depolamaktan kaçının. iOS'ta isExcludedFromBackup ile önbelleği yedeklemeden hariç tutun. Android'de geçici dosyalar için cacheDir'i tercih edin
  • Depolama taşması ve ani güç kaybı durumunda davranışı test edin. İşlemsel yazma kullanın: geçici bir dosyaya yazın, ardından atomik olarak yeniden adlandırın

Platformlar arası farklılıklara özellikle dikkat edin. Android'de dosya yolları eğik çizgi kullanır (/data/data/.../files/), iOS'ta — URL şeması (file:///var/mobile/.../Documents/). Uygulamanız çapraz platform bir framework (Flutter, React Native, Kotlin Multiplatform) kullanıyorsa, dosya işlemlerini platform adaptörleri aracılığıyla birleştirin. Örneğin Flutter, platforma özgü kod yazmadan her iki platformda da Documents veya filesDir yolunu döndüren path_provider paketini sağlar. Yolları asla dize işlemleriyle birleştirmeyin — farklı platformlarda ayırıcıları doğru şekilde işleyen File.join() veya URL.appendingPathComponent() kullanın.

Sıkça Sorulan Sorular

Android'de varsayılan olarak hangi dosya sistemi kullanılır?

Modern Android cihazlarda (11+) /data bölümü için F2FS kullanılır. Eski cihazlarda — EXT4. /system bölümü EROFS veya EXT4 kullanır. SD kartlar kapasiteye bağlı olarak exFAT veya FAT32 olarak biçimlendirilir.

APFS, EXT4'ten nasıl farklıdır?

APFS anlık görüntüleri, dosya klonlamayı, dosya düzeyinde şifrelemeyi ve sağlama toplamlarını destekler. EXT4 günlük kaydına ve daha geniş uyumluluğa sahiptir. APFS SSD'ler için optimize edilmiştir, EXT4 ise evrensel bir dosya sistemidir.

iOS'ta documents dizininin yolu nasıl alınır?

FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) kullanın. Bu yöntem, ilk öğesi uygulamanın Sandbox konteynerinin ana Documents dizini olan bir URL dizisi döndürür.

Android'de Scoped Storage nedir?

Scoped Storage, Android 10'da tanıtılan ve doğrudan dosya sistemi erişimini kısıtlayan bir erişim modelidir. Uygulamalar izin olmadan yalnızca kendi dosyalarını okuyabilir. Paylaşılan medya dosyalarına erişmek için MediaStore API'si kullanılır.

SD kart için FAT32 mi yoksa exFAT mı daha iyidir?

exFAT, 4 GB'tan büyük dosyaları desteklediği için 32 GB'tan büyük SD kartlar için tercih edilir. FAT32, eski cihazlarla maksimum uyumluluk sağlar ancak dosya boyutunu 4 GB ile sınırlar.

Özet

  • Dosya sistemi mobil cihazın NAND hücrelerinin sınırlı kaynağını dikkate alarak flash bellek üzerinde depolama, indeksleme ve veri korumasını yönetir
  • Android farklı erişim modelleriyle /data (F2FS/EXT4), /system (EROFS/EXT4) ve /sdcard (exFAT/FAT32) bölümlerini kullanır
  • iOS APFS üzerinde Sandbox konteynerleriyle çalışır, her uygulama XNU çekirdek seviyesinde izole edilir
  • F2FS, günlük yapılı mimarisi sayesinde EXT4'e kıyasla %25–40 daha yüksek rastgele yazma performansı sağlar
  • İzinler Android'de Linux UID modeline dayanır, iOS'ta — dört dosya koruma sınıfıyla Sandbox profillerine
  • Farklı dosya sistemleri ad uzunluğu, dosya boyutu ve karakter desteği konusunda sınırlamalara sahiptir — tüm hedef cihazlarda test edin
  • İşlemsel yazma ve kaydetmeden önce kullanılabilir alanın kontrolü, arızalar sırasında veri bozulmasını önler

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun