"Dosya hedef dosya sistemi için çok büyük" hatası ne anlama gelir ve ilk olarak ne yapılmalı

Kerem Aydın·9 Temmuz 2026·⏱4 dk

Hata, yazılan dosyanın boyutu mevcut dosya sisteminin sınırını aştığında veya bölüm/imaj böyle bir dosyaya izin vermediğinde ortaya çıkar (ayrıca disk dolu olabilir veya inode'lar tükenmiş olabilir). İlk adımlar — alanı ve dosya sistemi türünü kontrol etmek: df -h, df -i, stat -f /yol.

Hata neden oluşur

  • Dosya sistemi sınırları. Örneğin, FAT32 4 GB'dan büyük dosyalara izin vermez; ext4 farklı blok boyutlarında sınırlıdır (~küçük blokta ~2 TB, standart 4K blokta 16 TB'a kadar). XFS ve Btrfs çok daha büyük dosyaları destekler.
  • Küçük bölüm/imaj. Loop dosyaları, konteyner diskleri ve Docker imajları genellikle sabit boyuta sahiptir (4–10–50 GB) ve otomatik olarak genişlemez.
  • Disk doluluğu veya inode tükenmesi. Alan veya inode %100 kullanıldığında yazma işlemi gerçekleşmez.
  • Bağlama/izin kısıtlamaları. Bazı FUSE sağlayıcıları veya ağ dosya sistemlerinin kendi sınırları olabilir.

"Argument list too long" ile karıştırmayın — bu, tek bir dosyanın boyutuyla değil, komuttaki çok sayıda argümanla ilgilidir.

Hızlı teşhis nasıl yapılır (komutlar ve nelere bakılmalı)

Terminalde şunları çalıştırın — çoğu nedeni netleştirir:

  • Alan ve türlerin kontrolü:
    • df -h /yol — boş alan
    • df -i /yol — inode
    • df -T /yol — dosya sistemi türü (Linux)
    • stat -f -c "%T %S" /yol — tür ve blok boyutu (alternatif)
  • ext4 bilgisi:
    • dumpe2fs /dev/sdX | grep -i 'block size'
    • tune2fs -l /dev/sdX | grep 'Block size'
  • Konteynerler/imajlar için:
    • docker info | grep -i 'Docker Root Dir'
    • docker system df
    • losetup -a ve mount — loop cihazlarını arayın
  • Ek olarak:
    • lsblk — disk/bölüm yapısı
    • du -sh * | sort -h — alanı nerede "tüketiyor" Yorumlama: df %100 gösteriyorsa — temizleyin/silin; inode %100 ise — çok sayıda küçük dosyayı silin; dosya sistemi türü FAT32 veya 4 GB'lık imaj ise — imajı/dosya sistemini değiştirmeniz veya dosyayı bölmeniz gerekir.

Nedenine göre çözüm yolları

  1. Alan/inode boşaltma
  • Gereksiz dosyaları silin, /var/log'u ve geçici verileri temizleyin.
  • Büyük dosyaları arama: ncdu /yol veya du -sh /yol/* | sort -h.
  • Eski günlükleri silme: journalctl --vacuum-size=200M.
  1. Bölümü veya dosya sistemini genişletme
  • LVM için: lvextend -L +10G /dev/mapper/vg-name && resize2fs /dev/mapper/vg-name
  • Bir bölümdeki ext4 için: resize2fs /dev/sdX (öncesinde fdisk/parted ile bölümü genişleterek). Dikkat: bölüm işlemlerinden önce her zaman yedek alın.
  1. Daha büyük blok boyutuyla dosya sistemini yeniden oluşturma veya türünü değiştirme
  • mkfs.ext4 -b 4096 /dev/sdX — tek dosya sınırını yükseltir (formatlama ve yedek gerektirir).
  • Sıkça çok büyük dosyalara ihtiyaç duyuyorsanız, XFS veya Btrfs'i düşünün:
    • mkfs.xfs -f /dev/sdX XFS/Btrfs terabaytları ve egzabaytları destekler, büyük dosyalar için daha iyidir.
  1. Docker/sanallaştırma imajlarında
  • Daha büyük temel boyutla imaj/konteyner deposunu yeniden oluşturun (storage sürücüsüne bağlı olarak): daemon.json için storage-opts belirtin veya imaj oluştururken size ayarlayın.
  • Loop imajları için — istenen boyutta yeni bir imaj oluşturun ve verileri taşıyın.
  1. Dosyayı bölme/sıkıştırma
  • split -b 2G büyük_dosya part_
  • tar -czf archive.tar.gz dir/
  • rsync --partial ile büyük dosyayı uzak ana bilgisayara aktarma Bu, dosya sistemini değiştirmek mümkün olmadığında hızlı bir geçici çözümdür.
  1. Test için
  • fallocate -l 10G test.file — sistemin belirtilen boyutta bir dosya oluşturmasına izin verip vermediğini kontrol etme.

Sık yapılan hatalar

  • Bölüm boyutunu değiştirmeden ext4'ü genişletmeye çalışmak.
  • Verileri yedeklemeden yeni bölümü formatlamak.
  • Inode'ları görmezden gelmek: çok sayıda küçük dosya olduğunda alan vardır ancak yazma işlemleri gerçekleşmez.
  • Storage-driver'ı gözden geçirmeden konteynerde dosya sistemi değiştirmek.

SSS

  • S: FAT32 neden 5 GB yazmaya çalışırken hata veriyor?
    C: FAT32 dosya başına 4 GB ile sınırlıdır — NTFS/XFS/ext4/Btrfs kullanın veya dosyayı bölün.

  • S: Formatlamadan ext4'teki maksimum dosya boyutu artırılabilir mi?
    C: Hayır — sınır blok boyutuna ve meta verilere bağlıdır, bunu yalnızca gerekli parametrelerle dosya sistemini yeniden oluşturarak veya başka bir dosya sistemine geçerek değiştirebilirsiniz.

  • S: Sorunun Docker'da mı yoksa ana bilgisayarda mı olduğunu hızlıca nasıl anlarım?
    C: Hedef dosya yolunu mount/df ile kontrol edin — yol Docker Root Dir veya loop cihazını gösteriyorsa, sorun imaj/konteynerdedir.

Teşhisten sonra yazmayı neyin kısıtladığı hala belirsizse, df -h, df -i, stat -f çıktılarını ve bölüm bilgilerini paylaşın — bunlara göre kesin adım önerilebilir.