Что означает ошибка «Файл слишком велик для конечной файловой системы» и что делать сначала
Ошибка появляется, когда размер записываемого файла превышает лимит текущей файловой системы или когда раздел/образ не допускает такой файл (также возможен полный диск или исчерпание inode). Первые действия — проверить место и тип ФС: df -h, df -i, stat -f /путь.
Почему возникает ошибка
- Лимиты ФС. Например, FAT32 не пропускает файлы >4 ГБ; ext4 при разных размерах блока ограничен (~2 ТБ при маленьком блоке, до 16 ТБ при стандартном 4K). XFS и Btrfs поддерживают намного большие файлы.
- Малый раздел/образ. Loop-файлы, контейнерные диски и образа Docker часто имеют фиксированный размер (4–10–50 ГБ) и не расширяются автоматически.
- Полный диск или исчерпание inode. При 100% использования места или inode запись не проходит.
- Огрaничения монтирования/права. Некоторые FUSE‑провайдеры или сетевые ФС могут иметь свои лимиты.
Не путать с "Argument list too long" — это про слишком много аргументов в команде, а не про размер одного файла.
Как быстро диагностировать (команды и что смотреть)
Выполните в терминале — это прояснит большинство причин:
- Проверка места и типов:
- df -h /path — свободное место
- df -i /path — inode
- df -T /path — тип ФС (Linux)
- stat -f -c "%T %S" /path — тип и размер блока (альтернатива)
- Информация о ext4:
- dumpe2fs /dev/sdX | grep -i 'block size'
- tune2fs -l /dev/sdX | grep 'Block size'
- Для контейнеров/образов:
- docker info | grep -i 'Docker Root Dir'
- docker system df
- losetup -a и mount — ищите loop‑устройства
- Дополнительно:
- lsblk — структура дисков/разделов
- du -sh * | sort -h — где «жрёт» место Интерпретация: если df показывает 100% — чистим/удаляем; если inode 100% — удаляем много мелких файлов; если тип ФС — FAT32/образ со 4 ГБ — нужно менять образ/ФС или разбивать файл.
Способы исправить в зависимости от причины
- Освободить место / inode
- Удалите ненужные файлы, очистите /var/log, временные данные.
- Поиск больших файлов: ncdu /path или du -sh /path/* | sort -h.
- Удаление старых журналов: journalctl --vacuum-size=200M.
- Расширить раздел или ФС
- Для LVM: lvextend -L +10G /dev/mapper/vg-name && resize2fs /dev/mapper/vg-name
- Для ext4 на разделе: resize2fs /dev/sdX (предварительно расширив раздел через fdisk/parted). Внимание: всегда делайте бэкап перед операциями с разделами.
- Пересоздать ФС с большим размером блока или сменить тип
- mkfs.ext4 -b 4096 /dev/sdX — повысит лимит отдельного файла (требует форматирования и бэкапа).
- Если часто нужны огромные файлы, рассмотрите XFS или Btrfs:
- mkfs.xfs -f /dev/sdX XFS/Btrfs поддерживают терабайты и экзабайты, лучше для больших файлов.
- В Docker/виртуальных образах
- Пересоздать образ/контейнерное хранилище с большим базовым размером (в зависимости от драйвера storage): для daemon.json указать storage-opts или при создании образа установить size.
- Для loop‑образов — создать новый образ нужного размера и перенести данные.
- Разбить файл / сжать
- split -b 2G большой_файл part_
- tar -czf archive.tar.gz dir/
- rsync --partial для передачи большого файла на удалённый хост Это быстрое обходное решение, если изменить ФС невозможно.
- Для теста
- fallocate -l 10G test.file — проверка, позволит ли система создать файл указанного размера.
Частые ошибки
- Пытаются расширить ext4 без изменения размера раздела.
- Форматирование нового раздела без бэкапа данных.
- Игнорирование inode: при множестве мелких файлов место есть, но записи не пройдут.
- Смена ФС в контейнере без пересмотра storage-driver.
FAQ
-
В: Почему FAT32 сообщает ошибку при попытке записать 5 ГБ?
О: FAT32 ограничен 4 ГБ на файл — используйте NTFS/XFS/ext4/Btrfs или разбейте файл. -
В: Можно ли увеличить максимальный размер файла на ext4 без форматирования?
О: Нет — лимит зависит от размера блока и метаданных, изменить его можно только пересоздав ФС с нужными параметрами или перейдя на другую ФС. -
В: Как быстро понять — проблема в Docker или в хосте?
О: Проверьте путь целевого файла через mount/df — если путь указывает на Docker Root Dir или loop‑устройство, проблема в образе/контейнере.
Если после диагностики не ясно, что ограничивает запись, опишите выводы df -h, df -i, stat -f и info о разделе — по ним можно дать точный шаг.