Как мне увеличить размер файла подкачки, не удаляя его в терминале?

Есть ли способ увеличить мой существующий "файл подкачки" без необходимости уничтожать и заново создавать его? Я хотел бы увеличить пространство подкачки с 1 ГБ до 2 ГБ. В настоящее время он настроен так:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

Я использую Ubuntu 14.04.

4 ответа

Решение

Сначала отключите файл подкачки:

sudo swapoff /swapfile

Теперь давайте увеличим размер файла подкачки:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

Приведенная выше команда добавит 1 ГБ нулевых байтов в конец файла подкачки.

Настройте файл как "файл подкачки":

sudo mkswap /swapfile

включить обмен:

sudo swapon /swapfile

Вы должны добавить новый файл подкачки вместо изменения размера существующего, потому что вам это ничего не стоит. Чтобы изменить размер файла подкачки, вы должны сначала отключить его, который вытесняет содержимое подкачки в ОЗУ, что увеличивает нагрузку на ОЗУ и может даже вызвать убийцу OOM (не говоря уже о том, что вы могли перебивать диски в течение нескольких минут). Несколько файлов подкачки не проблема, просто установить еще один файл подкачки. Изменение размера файла подкачки по сравнению с добавлением другого буквально бесполезно.

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

Общий ответ на вопрос "Как изменить размер файла подкачки":

От Богдана Корниану, здесь: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[Цитата (ПОЧТИ ВЕРБАТИМ, только с некоторыми из моих дополнений комментариев) НАЧАТЬ]

В следующем примере мы расширим пространство подкачки, доступное в /swapfile, с 4 ГиБ до 8 ГиБ.

  1. Отключить все процессы обмена

    sudo swapoff -a
    
  2. Изменить размер свопа

    sudo dd if=/dev/zero of=/swapfile bs=1G count=8
    

    if = входной файл
    of = выходной файл
    bs = размер блока; Вот, 1G обозначает 1 Gibibyte, или GiB, который, согласно man dd это G =1024*1024*1024 байта
    count = множитель блоков

  3. Сделайте файл пригодным для использования как своп

    sudo mkswap /swapfile
    
  4. Активировать файл подкачки

    sudo swapon /swapfile
    
  5. Проверьте количество доступных свопов

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

Вы можете создать другой файл подкачки, как я сделал:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Убедитесь, что он работает с sudo swapon --show
    Чтобы сделать его постоянным, добавьте файл в fstabтипирование файла:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

У меня хорошие результаты на моем Ubuntu 17.04, следуя совету Ариана Акосты из поста блога. Можно заменить 4G здесь sudo fallocate -l 4G /swapfile с любым количеством гигабайт вы хотите. Например sudo fallocate -l 2G /swapfile для ТС.

Вообще говоря, рекомендуемый размер файла подкачки в 2 раза больше объема оперативной памяти, но вы можете сделать его настолько большим, насколько вам нужно. Помните, что это не заменяет память, потому что производительность намного хуже, поскольку вещи хранятся на диске.

Я создал простой скрипт bash, который увеличивает размер файла подкачки до 4 ГБ, и протестировал его в Ubuntu 16.04.

Это можно запускать построчно или скриптом bash, но я использую его для установки без головы.

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

Вы также можете проверить разрешения. Другой способ сделать это:

# check your swap
free

# turn off swap
sudo swapoff /swapfile

# To create the SWAP file, you will need to use this.
sudo fallocate -l 4G /swapfile  # same as "sudo dd if=/dev/zero of=/swapfile bs=1G count=4"

# Secure swap.
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile

# Prepare the swap file by creating a Linux swap area.
sudo mkswap /swapfile

# Activate the swap file.
sudo swapon /swapfile

# Confirm that the swap partition exists.
sudo swapon -s

# check your swap again
free
Другие вопросы по тегам