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

59

Есть ли способ увеличить мой существующий «файл подкачки» без необходимости уничтожать и заново создавать его? Я хотел бы увеличить пространство подкачки с 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.

Дейв
источник
Сколько у вас оперативной памяти? 2G достаточно? Я думаю, что вам придется swapoffсоздать новый файл / файл mkswapswapon -a
подкачки
1
Добавьте новый файл подкачки, следуйте инструкциям приведенного выше вопроса. у вас может быть 2 файла подкачки;)
Ravexina
1
@Ravexina, возможно, вопрос новичка, но зачем мне добавлять новый файл подкачки, а не увеличивать размер существующего? Или невозможно увеличить существующий файл подкачки?
Дейв
@Dave Это тоже возможно, как вы знаете, мы можем swapoffтогда ddи mkswapнаконец swapon. Я думал, ты не хочешь трогать свой файл.
Равексина
2
@Ravexina пост, который как ответ
Сергей Колодяжный

Ответы:

68

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

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
Ravexina
источник
3
sudo fallocate -l 2G /swapfileвероятно, безопаснее, чем dd (хотя он не сохраняет исходный файл подкачки), и для него также требуется sudo chmod 600 /swapfile.
Хейннема
7
@heynnema не fallocateделает редких файлов? На swaponстранице руководства говорится, что редкие файлы подкачки проблематичны (особенно упоминание fallocate).
Муру
3
@heynnema нет, на mkswapman- странице также сказано, что файлы не должны содержать дыр.
Муру
1
@muru, думаю, я не прав :-) Каждый раз, когда я читал, как создать файл / swapfile с наступлением 17.04, они использовали fallocate. Я думаю, что нам просто нужно использовать «разрушитель диска»!
Хейннема
1
@heynnema: То, что вы могли бы сделать, это использовать fallocateдля предварительного выделения дискового пространства, а затем использовать ddдля заполнения отверстий нулями.
Дэвид Фёрстер
40

Вы должны добавить новый файл подкачки вместо изменения размера существующего, потому что вам это ничего не стоит . Чтобы изменить размер файла подкачки, вы должны сначала отключить его, который вытесняет содержимое подкачки в ОЗУ, что увеличивает нагрузку на ОЗУ и может даже вызвать убийцу 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
Мур
источник
Является ли sudo chmod 600 /some/fileтребуется, или нет?
Хейннема
1
И count=1Kдает ли файл 1G? количество в размере блока, да? А что может быть 512/4096? Или моя математика не так?
Хейннема
3
+1 Этот подход также позволяет легко отключить один из файлов подкачки, если позже вы решите, что вам нужно место на диске обратно.
Joeytwiddle
2
Это действительно нужно пометить как правильный ответ. Вау, браво!
Бешой Гиргис,
1
@ Муру это постоянное решение? Я выполнил эту команду 30 апреля, но где-то в мае месяце мой второй файл подкачки пропал. Я не удалил, но он исчез
Кристофер Ручински
13

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

  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
borekon
источник
Обратите внимание, что fallocateбит должен быть использован для создания файла, так как он создает разреженный файл. смотритеman mkswap
Чарльз Грин
@CharlesGreen это сработало так, как я написал, поэтому оно должно работать для всех.
Борекон
Я бы предложил читать man mkswap, особенно последний параграф перед «Окружающей средой»
Чарльз Грин
1
работал над NanoPi Neo с Armbian v 5.65
BiTinerary
5

У меня хорошие результаты на моем 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! ======"
Денис Трофимов
источник
3
Вы должны были добавить аргумент в скрипт, который представляет собой количество SWAP, которое нужно добавить, и, наконец, добавить его в fstab. Но все же, мне нравится это
LnxSlck
0

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

От Богдана Корниану, здесь: 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 или ГиБ, который, согласно man ddявляется G = 1024 * 1024 * 1024 байт
    count= мультипликатор блоков

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

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

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

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

Габриэль Стейплс
источник