Как исправить ошибку read-error on swap-device в Ubuntu
Важно: прежде чем менять swap, сделайте резервные копии важных данных и по возможности получите консольный доступ (SSH/TTY), чтобы не потерять доступ к серверу при перезагрузке.
Что такое swap в двух словах
Swap — это место на диске, которое система использует как «медленную» оперативную память. Оно помогает не допускать краха процессов при нехватке RAM, но работает гораздо медленнее, чем физическая память.
Почему возникает ошибка read-error on swap-device
Основные причины:
- Недостаточно оперативной памяти: активное использование swap приводит к частому чтению/записи и задержкам.
- Малый по объёму swap, заполненный под завязку.
- Повреждение файла или раздела swap (файловая система, битые блоки на носителе).
- Носитель с аппаратными ошибками (USB, SSD/HDD) или обрыв в подключении внешнего диска.
- Неправильные права или некорректная запись в /etc/fstab.
Быстрые проверки — что смотреть в первую очередь
- Список активных swap-областей:
swapon --show- Альтернативные команды:
cat /proc/swaps
free -m- Журналы ядра и systemd для ошибок ввода-вывода и сообщений о swap:
dmesg | grep -i swap
sudo journalctl -k | grep -i swap
sudo journalctl -b --no-pager | grep -iE "swap|read-error|I/O error"- Проверка SMART и ошибок диска (если swap на локальном диске):
sudo smartctl -a /dev/sdX
sudo dmesg | grep -iE "I/O error|ata|fail|error"Как временно восстановить работу (быстрое реагирование)
- Откройте TTY или подключитесь по SSH. На сервере без доступа по GUI это критично.
- Отключите проблемную swap-область, чтобы избежать дальнейших ошибок:
sudo swapoff /swapfile
# или, если это раздел:
sudo swapoff /dev/sdXn- Проверьте журналы и диск (см. команды выше).
- Если система работает без swap, вы сможете аккуратно пересоздать swap или увеличить RAM/swap позже.
Пересоздание или увеличение файла swap (пошагово)
- Отключите текущий swap:
sudo swapoff /swapfile- Создайте новый файл нужного размера (пример 4G) с помощью fallocate или dd:
sudo fallocate -l 4G /swapfile
# если fallocate не доступна:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096- Установите права, чтобы файл был доступен только root:
sudo chmod 600 /swapfile- Инициализируйте swap-область и включите её:
sudo mkswap /swapfile
sudo swapon /swapfile- Проверьте, что swap активен:
swapon --show
free -m- Чтобы swap включался при загрузке, добавьте запись в /etc/fstab (одна строка):
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabНастройка свопа и оптимизация
- Параметр swappiness (по умолчанию 60) регулирует склонность системы использовать swap. Для десктопов и сервисов со строгими требованиями к задержкам можно понизить, например, до 10–20:
sudo sysctl vm.swappiness=10
# для постоянного изменения добавьте vm.swappiness=10 в /etc/sysctl.conf- Рассмотрите zram/zswap как альтернативу: сжатый swap в памяти уменьшает I/O на диск.
Диагностика: когда пересоздание swap не помогает
Проверьте эти возможные причины:
- Аппаратные ошибки диска: используйте smartctl, проверку блоков (badblocks), замените носитель при необходимости.
- Повреждённая файловая система, где расположен файл swap: выполните fsck для соответствующего раздела (сначала отмонтируйте).
- Swap на внешнем носителе (USB) — проверьте связь и питание: внешние диски могут сбрасываться и вызывать I/O ошибки.
- Шифрование swap: если используется LUKS/cryptsetup, проверьте соответствующие контейнеры и ключи.
- Неправильная запись в /etc/fstab — система может пытаться подключить несуществующую область.
Альтернативные подходы
- Увеличить физическую RAM — самая надежная мера при постоянной нагрузке.
- Использовать zram/zswap для уменьшения обращений к диску.
- Перенести swap на быстрый NVMe-диск, если есть риск частых обращений.
- Профилировать приложения и уменьшить потребление памяти (память-утечки, кеши).
Минимальная методология восстановления (SOP)
- Сбор первичных данных: swapon –show, free -m, dmesg, journalctl.
- Если есть I/O ошибки — проверить диск (smartctl, fsck), заменить носитель.
- Временно отключить swap (swapoff), рестарт процессов если требуется.
- Пересоздать swap-файл/разметку, включить swapon.
- Добавить/исправить запись в /etc/fstab и протестировать перезагрузку.
- Настроить мониторинг и алерты по использованию памяти и ошибкам диска.
Роль‑ориентированные чек‑листы
Сисадмин:
- Собрать логи и выписать ошибки I/O.
- Отключить проблемный swap.
- Проверить целостность диска и при необходимости заменить.
- Пересоздать swap и внести изменения в /etc/fstab.
Девопс/инженер по производительности:
- Оценить нагрузку по памяти (top/htop, vmstat).
- Настроить swappiness. Рассмотреть zram/zswap.
- Планировать масштабирование RAM или миграцию нагрузки.
Пользователь рабочего стола:
- Закрыть тяжёлые приложения.
- Временно отключить swap и перезапустить систему.
- При необходимости увеличить размер swap-файла.
Критерии приёмки
- swap активен и виден в swapon –show.
- Отсутствуют новые сообщений об ошибках read-error в dmesg/journalctl.
- Система перестала «зависать» при типичной нагрузке.
- После перезагрузки запись в /etc/fstab корректно подключается.
Тест-кейсы для проверки
- Создать нагрузку, которая использует RAM и заставляет систему переключаться на swap; проверить стабильность.
- Отключить и снова включить swap, убедиться в отсутствии ошибок.
- Смоделировать отключение внешнего диска (если swap на USB) и наблюдать поведение и логи.
Ментальные модели и эвристики
- RAM = «быстрая память», swap = «медленная память на диске». Частые обращения к swap замедляют систему.
- Swap — аварийная подушка, а не замена RAM. Если swap используется постоянно — это сигнал к масштабированию.
Когда не стоит использовать swap-файл
- На системах с критичным временем отклика лучше минимизировать использование swap.
- При ограниченном ресурсе записи на SSD (если носитель старый и чувствителен к износу) — рассмотрите zram.
Безопасность и конфиденциальность
- Swap-файл может содержать чувствительные данные; если это важно, используйте шифрование (LUKS) для swap.
- Следите за правами на /swapfile: chmod 600 обязателен.
Краткое резюме
Ошибка read-error on swap-device чаще всего указывает на проблему с доступом к swap (I/O ошибки, повреждение или нехватка ресурсов). Процесс восстановления: собрать логи, временно отключить swap, проверить диск и файловую систему, пересоздать или переместить swap на надёжный носитель и оформить постоянную запись в /etc/fstab. На длинной дистанции — масштабирование RAM или использование zram/zswap для уменьшения обращений к диску.
Полезные команды для справки
swapon --show
cat /proc/swaps
free -m
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sysctl vm.swappiness=10
sudo smartctl -a /dev/sdX
sudo journalctl -b --no-pager | grep -iE "swap|read-error|I/O error"Глоссарий (одно‑строчные определения)
- swap: область на диске, используемая как расширение оперативной памяти.
- swappiness: параметр ядра, определяющий склонность использовать swap.
- zram: сжатый swap в оперативной памяти.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone