Как исправить ошибку read-error on swap-device в Ubuntu

Linux — надёжная операционная система для серверов и рабочих станций. Но даже она иногда даёт сбои из‑за нехватки памяти или проблем со swap. Ошибка “read-error on swap-device” может сделать систему нестабильной или вовсе неотзывчивой. В этой статье объясняю, как диагностировать причину и устранить проблему в Ubuntu.
Что такое swap и зачем он нужен
Определение: swap — это дополнительная область хранения, которую ядро Linux использует, когда оперативная память (RAM) заполнена. Swap может быть отдельным разделом, файлом на диске или помещением в сжатую оперативную память (zram).
Swap нужен для:
- Поддержки работы приложений при дефиците оперативной памяти.
- Уменьшения риска аварийных завершений процессов при временных всплесках нагрузки.
Важно: чтение из swap гораздо медленнее, чем из RAM. Поэтому swap помогает выжить, но не заменяет реальный объём оперативной памяти.
Частые причины ошибки read-error on swap-device
- Очень мало RAM: при интенсивных задачах система начинает активно использовать swap. Это повышает нагрузку на диск и задержки чтения/записи.
- Слишком маленький swap-файл или переполнение swap: если swap заполнен, система может испытывать ошибки при работе с подкачкой.
- Повреждение файловой системы или битые сектора на диске: если хранение swap расположено на повреждённом носителе, чтение возвращает ошибки.
- Неправильные записи в /etc/fstab: при изменении swap без корректного обновления fstab система пытается подключить несуществующий или перемещённый swap.
- Аппаратные проблемы: проблемы с контроллером диска, кабелями или самими накопителями.
Исходный вывод: увеличение RAM или swap часто решает проблему, но иногда потребуется работать с диском и конфигурацией.
Просмотр размера и состояния swap
Чтобы понять, сколько у вас swap и активен ли он, используйте встроенные утилиты.
Просмотреть активные swap-области:
swapon --showВыход команды покажет путь к swap (например, /swapfile или /dev/sdXN) и объём в ГБ. На десктопе можно использовать графический монитор:
- Нажмите клавиши Super (клавиша Windows) + A, найдите «System Monitor» или «Системный монитор». График памяти покажет использование RAM и swap.
Пошаговое восстановление и создание swap-файла
Ниже — безопасный процесс отключения старого swap, создания нового и включения его обратно.
- Отключите текущий swap (если это swap-файл /swapfile):
sudo swapoff /swapfile- Создайте новый swap-файл нужного размера. Пример для 4 ГБ:
sudo fallocate -l 4G /swapfileПримечание: если fallocate не поддерживается на вашей файловой системе, используйте dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress- Ограничьте права доступа — только root должен иметь доступ:
sudo chmod 600 /swapfile- Инициализируйте swap-область:
sudo mkswap /swapfile- Включите swap:
sudo swapon /swapfile- Убедитесь, что swap активен:
swapon --show
free -m
cat /proc/swaps- Если вы хотите, чтобы swap подключался автоматически при загрузке, добавьте строку в /etc/fstab (проверьте правильность пути и опций перед перезагрузкой):
/swapfile none swap sw 0 0Важно: ошибочная запись в /etc/fstab может привести к проблемам при загрузке. Всегда делайте резервную копию файла перед изменениями.
Мониторинг использования памяти и поведения системы
Команды для наблюдения в реальном времени:
free -m # показывает RAM и swap в мегабайтах
vmstat 1 # системная статистика с интервалом 1 сек
top или htop # процессы и использование памяти
dmesg | grep -i swap # сообщения ядра, связанные со swap
journalctl -k | grep -i swapЕсли система активно свопит и становится медленной, рассмотрите изменение значения swappiness (как часто система будет пользоваться swap):
cat /proc/sys/vm/swappiness # текущее значение (обычно 60)
sudo sysctl vm.swappiness=10 # временно снизить агрессивностьЧтобы сделать значение постоянным, измените /etc/sysctl.conf.
Когда простое пересоздание swap не помогает
Контрпримеры / ситуации, в которых описанные шаги не устраняют проблему:
- Повреждён диск или есть битые сектора. В этом случае swap, размещённый на проблемном диске, будет давать ошибки чтения. Решение: проверить SMART (smartctl), выполнить fsck и при необходимости заменить диск.
- Проблемы в оборудовании (контроллер SATA/PCIe, плохие кабели) — требуется диагностика и замена железа.
- Повреждён загрузочный или системный раздел, некорректные права на /swapfile или неправильный формат — проверьте логи ядра (dmesg) и systemd-journald.
- Аппаратная память (RAM) действительно неисправна — её стоит протестировать с помощью memtest86.
Альтернативные подходы и улучшения
- Увеличить объём физической RAM — наиболее устойчивое решение для серверов и рабочих станций.
- Использовать выделенный swap-раздел вместо файла, если вы предпочитаете управление разделами.
- Включить zram: сжатый swap в оперативной памяти. Это уменьшает использование диска и улучшает отклик на системах с медленными носителями.
- Настроить swappiness и cache pressure, чтобы снизить частоту обращения к swap.
- Для временных данных использовать tmpfs, если данные не критичны и могут быть сброшены при перезагрузке.
Чеклист для ролей
Для системного администратора:
- Проверить swapon –show и dmesg на ошибки.
- Проверить /etc/fstab и права /swapfile.
- Просканировать диск (smartctl) и файловую систему (fsck).
- Рассмотреть возможность увеличения RAM или переноса swap на надёжный носитель.
Для разработчика/пользователя:
- Мониторить free -m и htop при нагрузке.
- При зависании убивать проблемные процессы (kill или pkill).
- Временно снизить swappiness.
Для десктоп-пользователя:
- Пересоздать swap-файл через приведённые команды.
- Проверить наличие обновлений ядра и драйверов диска.
Короткая шпаргалка команд
# Просмотр и диагностика
swapon --show
free -m
cat /proc/swaps
dmesg | grep -i swap
journalctl -k | grep -i swap
smartctl -a /dev/sda
memtest86 # запуск с USB для теста RAM
# Создание swap-файла 4G
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Альтернатива если нет fallocate
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# Настройка swappiness временно
sudo sysctl vm.swappiness=10Матрица рисков и способы смягчения
| Риск | Последствие | Смягчение |
|---|---|---|
| Повреждение диска | Ошибки чтения swap, падения сервисов | SMART, fsck, замена носителя |
| Неправильный /etc/fstab | Система может не загрузиться | Резервная копия fstab, тест перед реBOOT |
| Недостаток RAM | Частые зависания и медленная работа | Увеличение RAM, zram, корректный swap |
| Неправильные права на /swapfile | swap не подключится или будет небезопасен | chmod 600 /swapfile |
Критерии приёмки
- swapon –show показывает ожидаемый объём и активность.
- Система не отдаёт ошибок “read-error on swap-device” в dmesg/journal.
- При нагрузке система остаётся отзывчивой в пределах ожидаемых показателей.
Однострочный глоссарий
- swap: область подкачки, дополнительная память на диске.
- swappiness: параметр, определяющий агрессивность использования swap.
- zram: сжатый swap в оперативной памяти.
Важно: если вы сомневаетесь в состоянии диска или памяти, начните с аппаратной диагностики. Проблемы с железом чаще всего маскируются как ошибки на уровне файловой системы или swap.
Короткое резюме
- Проверьте состояние swap и RAM.
- Отключите и пересоздайте swap-файл при необходимости.
- Диагностируйте диск и память при подозрениях на аппаратные проблемы.
- Рассмотрите zram или добавление RAM как долгосрочное решение.
Примечание: перед изменением системных файлов всегда делайте резервные копии и, при возможности, тестируйте операции на тестовой машине.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты