#Что означает ошибка
No space left on device
В Alpine в режиме diskless система целиком загружается в оперативную память (tmpfs), поэтому No space left on device означает исчерпание RAM-диска. Установка пакетов, логи и временные файлы занимают память. Размер по умолчанию ограничен половиной ОЗУ.
Решения: освободить место, увеличить tmpfs, установить Alpine на диск или сохранить данные на постоянный раздел.
Сначала узнайте, что занимает место.
В diskless-режиме система работает из оперативной памяти (tmpfs), поэтому место ограничено. Установите систему на диск (setup-disk) или монтируйте отдельный раздел для данных.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Диск не установлен | Работа в RAM. | Выполните setup-disk. |
| Переполнен tmpfs | Нет места. | Увеличьте размер. |
| Забыт lbu commit | Не сохранено. | Сохраните. |
| Кэш apk | Мало места. | Очистите. |
#Пошаговое решение
- Проверьте df -h и free -mДля Alpine diskless mode сначала проверьте
df -h,df -i,free -mиmount | grep tmpfs: файловая система может храниться в памяти, а не на диске. Не удаляйте системные файлы; проверьте настройки сохраненияlbuи объём доступной памяти. При постоянной нехватке места рассмотрите переход на sys-режим после создания копии конфигурации. - Найдите крупные каталогиВ Alpine выполните
df -h,df -iиdu -h -d 1 /var /tmp 2>/dev/null, чтобы определить, где расходуется пространство и не закончились ли inode. В diskless-режиме часть каталогов может находиться в оперативной памяти, поэтому свободное место на внешнем диске не означает доступную память в/tmp. Удаляйте только известные временные файлы после просмотра результатов; проверьте, не хранятся ли данные приложения в RAM. - Очистите кэш apk и логиСначала определите, где заканчивается место: выполните
df -h,du -sh /var/cache/apk /var/log /tmp 2>/dev/nullи посмотрите, установлен ли кэш пакетов (ls -ld /etc/apk/cache). В diskless-режиме кэш может лежать на постоянном носителе и обеспечивать повторную загрузку пакетов без интернета. Если накопились только старые архивы, администратор может выполнить штатнуюapk cache cleanи повторитьdf -h, но не удаляйте весь кэш черезrm -rf: после перезагрузки без сети нужных пакетов может не оказаться. Журналы удаляйте только по правилам конкретной службы после просмотра их содержимого. - Увеличьте tmpfs или ОЗУУвеличение tmpfs имеет смысл только если именно корневой tmpfs близок к заполнению, а
free -mпоказывает достаточный запас оперативной памяти. В diskless Alpine rootfs может ограничиваться параметрами размера tmpfs; на работающей системе изменение лимита монтирования допустимо лишь после резервного копирования и оценки RAM, иначе приложения получат нехватку памяти. Сначала найдите потребителей места черезdu -x -h -d1 /, освободите заведомо ненужные временные файлы штатными средствами, проверьтеdf -h /иfree -m. Изменениеrootflags=size=...или архитектуры хранения поручите администратору, знакомому с загрузчиком и резервным восстановлением. - Установите Alpine на диск (sys-режим)Переход с Alpine diskless на установку на диск (sys) — это изменение схемы хранения, а не быстрый способ очистки. Сначала создайте резервную копию настроек (
lbu backup) и пользовательских данных, уточните поддерживаемый способ установки для своей версии Alpine на официальном wiki.alpinelinux.org. Запускайтеsetup-alpineтолько после выбора целевого диска и понимания, что подготовка разделов может стереть данные. Если диск рабочий и нет копии, не продолжайте. - Только проверка места и оперативной памяти в diskless-режимеLinux · Терминал (Bash)КомандаТолько проверка места и оперативной памяти в diskless-режиме. Очистка apk cache может убрать пакеты, нужные для автономной установки. Дополнительно: Только диагностика размеров файловых систем и оперативной памяти: не удаляйте кэш или файлы вне постоянного хранилища без проверки режима diskless.
df -hfree -m
#Диагностика
Сначала определите, загружен ли Alpine в режиме diskless, и сохраните текущие настройки. Посмотрите df -h, mount и du -sh /var/cache/apk /var/log /tmp 2>/dev/null. Кэш APK в diskless-системе может требоваться для автономной повторной установки пакетов при загрузке: не удаляйте его целиком через rm -rf /var/cache/apk/*. Удаляйте только старые пакеты штатной командой apk cache clean, когда понимаете, откуда будут доступны пакеты после перезагрузки. Если закончилась память tmpfs, сначала найдите её потребителей; сохранение настроек lbu commit не превращает временные данные в постоянные.
#Увеличение tmpfs
Для корня: параметр ядра overlaytmpfs=yes и rootflags=size=75% в загрузчике, либо для отдельных каталогов: mount -o remount,size=512M /tmp. Добавьте ОЗУ виртуальной машине. Сохраняйте изменения в диск: lbu commit записывает настройки на постоянный носитель (при настроенном LBU_MEDIA). Для установки пакетов в diskless включите кэш на диск: setup-apkcache и каталог /media/sda1/cache.
#Установка на диск
Если памяти не хватает постоянно, установите Alpine в режиме sys: setup-alpine → выберите диск → sys. Тогда корень располагается на ext4, а tmpfs используется лишь для /tmp и /run. Для данных создайте постоянный раздел и примонтируйте в /etc/fstab. Логи отправляйте на удалённый syslog или ограничьте размер: busybox-syslogd -C 64 (кольцевой буфер). Документация: .