"Dosya hedef dosya sistemi için çok büyük" hatası ne anlama gelir ve ilk olarak ne yapılmalı
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ı
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.