Рекомендации по выбору размера файла (или дискового раздела) подкачки, достаточного для успешного сохранения образа памяти различаются: в Интернете встречаются значения от половины раздела оперативной памяти до двукратного размера оперативной памяти. При этом в файле /etc/power/image_size хранится значение размера, в который ядро пытается уместить сохраняемый образ памяти. По умолчанию это значение равно 2/5 размера оперативной памяти, но может быть изменено администратором системы даже до нуля, и, как указано в документации (https://www.kernel.org/doc/Documentation/power/interface.txt), ядро не будет отказываться уходить в спящий режим, а будет пытаться уместить образ в указанный размер.

Вероятно, реальный минимальный размер области хранения, необходимый для гарантированного успешного восстановления после гибернации, зависит от конфигурации системы, но можно утверждать, что если полностью отключить подкачку в системе, то гарантированно достаточным размером будет размер оперативной памяти. Если подкачку не отключать, то достаточным размером можно считать двукратный размер оперативной памяти.

См. также: Область подкачки (swap): особенности применения и обеспечения безопасности.



Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Common Edition 2.12
  1. По необходимости полностью отключить подкачку:

    sudo sysctl -w vm.swappiness=1
    echo vm.swappiness=1 | sudo tee -a /etc/sysctl.d/local.conf

  2. Создать на дисковом разделе, на котором размещена корневая файловая система, файл достаточного размера, например, с именем /swap и размером 16Гигабайт:

    sudo fallocate -l 16g /swap

  3. Ограничить права доступа к созданному файлу:

    sudo chmod 600 /swap

  4. Разметить в созданном файле файловую систему подкачки:

    sudo mkswap /swap

  5. Добавить в файл /etc/fstab запись для автоматического включения подкачки в созданный файл при перезагрузке ОС:

    echo "/swap swap swap defaults 0 0" | sudo tee -a /etc/fstab

  6. Включить использование созданного файла для подкачки:

    sudo swapon /swap

  7. Убедиться, что подкачка включена:

    sudo swapon
    пример вывода команды:

    NAME      TYPE      SIZE USED PRIO
    /dev/vda5 partition 975M   0B   -2
    /swap     file       16G   0B   -3
  8. Отключить использование для подкачки дискового раздела (в примере выше - дисковый раздел /dev/vda5) (необязательный шаг):

    sudo swapoff /dev/vda5

  9. Определить идентификатор (UUID) дискового раздела, на котором размещен созданный файл:

    sudo findmnt -no UUID -T /swap

    В результате выполнения команды будет выдана строка с идентификатором вида:

    880d582e-5797-4d06-9e33-71da00a7aca2
  10. Определить смещение файла

    sudo filefrag -v /swap | grep "^\s*0:"
    В результате выполнения команды будет выдана информация вида:

    0:        0..       0:    7176192..   7176192:      1: 

    где нужное смещение находится в четвертом числе (в данном случае - 7176192);

  11. В файл /etc/initramfs-tools/conf.d/resume внести запись с параметрами восстановления (ранее полученные UUID как значение параметра RESUME и смещение как значение параметра resume_offset). Если такого файла нет - то создать его:

    RESUME=UUID=880d582e-5797-4d06-9e33-71da00a7aca2 resume_offset=7176192

    Команда для сборки нужной строки параметров:

    echo "UUID=`sudo findmnt -no UUID -T /swap` resume_offset=`sudo filefrag -v /swap | grep "^\s*0:" | xargs | cut -d " " -f 4 | cut -d . -f 1`"

  12. В файл /etc/default/grub добавить аналогичные параметры восстановления в параметр GRUB_CMDLINE_LINUX_DEFAULT, например:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 resume=UUID=880d582e-5797-4d06-9e33-71da00a7aca2 resume_offset=7176192"
  13. Обновить параметры загрузчика grub и файловую систему ramfs:

    sudo update-grub
    sudo update-initramfs -u -k all

  14. Если далее не планируется использовать дисковый раздел подкачки, то удалить из файла /etc/fstab запись о нем. Должна быть удалена строка вида:

    UUID=af75b52e-22ab-4429-9de1-8ac700187ba2 none            swap    sw              0       0
  15. Перезагрузить систему;
  16. Убедиться, что подкачка выполняется в созданный файл /swap:

    sudo swapon

  17. Для проверки работоспособности сделанных настроек выполнить гибернацию и выход из гибернации.


4 Комментариев

  1. Дмитрий Анохов 
    Дмитрий, предлагаю проверить и опубликовать эту статью, чтобы не заставлять клиентов менять размер дисковых разделов на живых системах.
    SIRIUS-21926 - Получение подробных данных проблемы... СТАТУС

  2. Александр Левдонский потерял уведомление среди писем. Поставил задачу со сроком исполнения 19.08.

    SUP-10007 - Получение подробных данных проблемы... СТАТУС