Skip to content

swapfile

Как увеличить swapfile

  1. Узнай название своего swap раздела, если он есть:

    Bash
    sudo swapon --show
    

  2. Отключи его:

    Bash
    sudo swapoff /dev/nvme0n1p3
    

  3. Удали/закомментируй запись о нем в /etc/fstab:

    Bash
    sudo hx /etc/fstab
    

Загляни сюда обязательно

[[#После изменения swapfile ядро долго грузится]]

  1. Через fdisk или gparted (GUI) удали этот раздел и (после удаления) присоедини неразмеченное пространство (unallocated space) к основному разделу.

  2. Создай новый swapfile:

    Bash
    # swapfile
    sudo fallocate -l 8G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    

  3. Включи его:

    Bash
    sudo swapon /swapfile
    

  4. Добавь запись о нем в /etc/fstab:

    Bash
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

  5. Проверь, что он включен:

    Bash
    sudo swapon --show
    # ну, и:
    free -h
    

  6. Перезагружайся и убедись, что всё работает (командами выше; + тот же htop показывает swapfile usage).


После изменения swapfile ядро долго грузится

Может понадобиться закомментировать старую запись о swapfile в /etc/initramfs-tools/conf.d/resume, ибо при загрузке kernel будет обращаться к swapfile из этого файла и ждать ответа (это нужно для гибернации - swapfile тоже используется для нее). В итоге, kernel не дождется ответа, увеличивая при этом время загрузки ядра (с 2 секунд может увеличиться до 20-30...), и потом, перестав ждать, запишет в /var/log/boot.log такую запись:

Text Only
Gave up waiting for suspend/resume device

Поэтому отредактируй /etc/initramfs-tools/conf.d/resume:

Text Only
# RESUME=UUID=93421634-0358-45e5-9390-d4b7c7e2572d

И если тебе нужна гибернация, добавь запись о новом swapfile. Для этого нужно узнать UUID твоего swapfile:

Bash
sudo findmnt -no UUID -T /swapfile

Потом этот UUID используй в новой записи:

Bash
RESUME=UUID=a26b721f-21af-4695-aa09-a5c0f2e02c08
# можешь воспользоваться этой командой:
echo "RESUME=UUID=$(sudo findmnt -no UUID -T /swapfile)"

В итоге /etc/initramfs-tools/conf.d/resume будет выглядеть примерно так:

Text Only
# RESUME=UUID=93421634-0358-45e5-9390-d4b7c7e2572d
RESUME=UUID=a26b721f-21af-4695-aa09-a5c0f2e02c08

И обнови initramfs для всех установленных версий ядра (-k all):

Bash
sudo update-initramfs -u -k all

Перезагружайся и увидишь здоровое поведение системы.

swapfile