Как увеличить пространство подкачки?

128

По умолчанию в Ubuntu есть 250 МБ пространства подкачки, и я хочу расширить его до большего размера. Мне нужно 800 МБ, которых, я думаю, будет достаточно, чтобы открыть несколько приложений, не прибегая к текущему пределу свопинга. Я надеюсь, что кто-то может мне помочь.

Bruno
источник
2
Пожалуйста, откройте Gparted и опубликуйте скриншот того, что вы видите здесь.
Аарон Хилл
Если ваш раздел подкачки может быть расширен в соседнее нераспределенное пространство, используйте gparted. Если такое пространство недоступно, возможно, из-за того, что ваш активный (загруженный) раздел использует все пространство без подкачки, gpartedвы не сможете уменьшить размер активного раздела, чтобы создать нераспределенное пространство. В этом случае вы можете переустановить Ubuntu для создания большего пространства подкачки.
H2ONaCl

Ответы:

172

Вы всегда можете создать файл подкачки

добавить больше пространства подкачки. Это не то же самое (во всех аспектах), как раздел подкачки, но это будет легко и динамично.

Измените /media/fasthdd/swapfile.imgна что угодно, например, это может быть /swap.imgтакже. /media/fasthdd/swapfile.imgЭто просто пример имени файла, если вы используете это, то, конечно, должен быть каталог /media/fasthdd/с достаточным количеством свободного места для вашего нового файла подкачки.

Используйте любое из терминальных приложений для запуска команд. Все команды должны запускаться с правами суперпользователя , для этого вы можете либо добавить sudoв начало каждой команды, либо запустить sudo bashперед выполнением команд.

1. Создайте пустой файл:
этот файл будет содержать содержимое виртуальной памяти, поэтому сделайте файл достаточно большим для ваших нужд. Этот файл создаст 1 ГБ файл, что означает, что пространство подкачки + 1 ГБ для вашей системы:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Если вы хотите создать файл 3Gb, измените значение счетчика на count=3M. Смотрите man ddдля получения дополнительной информации.

2. Запекать файл подкачки:
Следующая команда создаст «файловую систему подкачки» внутри вашего нового файла подкачки.

mkswap /media/fasthdd/swapfile.img

3. Загрузка при загрузке:
чтобы убедиться, что ваше новое пространство подкачки активировано во время загрузки компьютера, вы должны добавить его в файл конфигурации файловой системы /etc/fstab. Добавьте его в конец файла, это рекомендуется, потому что другие файловые системы ( по крайней мере, те, которые содержат файл подкачки ) должны быть смонтированы в режиме чтения-записи, прежде чем мы сможем получить доступ к любым файлам.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Активировать.
Вы можете перезагрузить компьютер или вручную активировать новый файл подкачки с помощью следующей команды:

swapon /media/fasthdd/swapfile.img


Если все идет хорошо

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

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Сампо Саррала
источник
5
Для редактирования /etc/fstabпопробуйте это в командной строке:sudo gedit /etc/fstab
Бен
Это мне очень помогло, большое спасибо, сэр.
Рика
Как деактивировать вновь созданный файл подкачки?
Рика
1
получил его своп!
Рика
2
используйте команду "swapon -s", чтобы увидеть статус, а не "cat / proc / swaps". затем команда «free» также дает информацию об использовании свопа.
Paul M
40

GUI метод для увеличения размера раздела подкачки

Еще один способ увеличить размер подкачки - использовать редактор разделов GParted . Короче говоря, вы меняете размер раздела подкачки, затем кликаете по нему правой кнопкой мыши и выбираете «Swapon».

Проще загрузить gparted-live-disk или Ubuntu live disk (чтобы все /dev/sdaразделы были размонтированы). Если вы запускаете Ubuntu live disk, вам нужно установить gparted, выполнив следующие команды:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Вы должны иметь возможность увеличивать размер раздела подкачки, только если имеется незанятое пространство до или после раздела подкачки. Если не было нераспределенного пространства (пространства, которое мы пытаемся добавить с разделом подкачки) ниже или выше раздела подкачки, то мы должны изменить размеры разделов и получить это нераспределенное пространство.

Случай 1 - незанятое пространство, присутствующее до или после раздела подкачки

GParted разделы

На приведенном выше снимке экрана у меня было 11,4 ГБ нераспределенного пространства до linux-swap и 12,8 ГБ после раздела подкачки.

  • Чтобы изменить размер, щелкните правой кнопкой мыши на разделе подкачки (/ dev / sda9 здесь) и выберите опцию Изменить размер / Переместить. Это будет выглядеть так:

    введите описание изображения здесь

  • Перетаскивая стрелки ползунка влево или вправо, затем нажмите кнопку «Изменить размер / Переместить». Ваш раздел подкачки будет изменен.


Случай 2 - нераспределенное пространство между разделами

введите описание изображения здесь

На снимке экрана выше нераспределенное пространство, которое мы хотим добавить к разделу подкачки, было между dev/sda7и. /dev/sda8Чтобы переместить нераспределенное пространство из этого раздела чуть выше раздела подкачки, мы должны выполнить простые шаги, приведенные ниже,

  • Щелкните правой кнопкой мыши по разделу / dev / sda8 и выберите параметр Изменить размер / Переместить .

    введите описание изображения здесь

  • щелкните и переместите ползунок в крайнее левое положение, чтобы незанятое пространство, которое находилось чуть выше /dev/sda8раздела, оказалось ниже. /dev/sda8После этого нажмите кнопку «Изменить размер / Переместить».

  • И теперь нераспределенное пространство было чуть выше раздела подкачки, что было похоже на случай 1. Теперь следуйте примеру 1.


Случай 3 - если нераспределенное пространство присутствовало вне расширенного раздела)

введите описание изображения здесь

У меня было нераспределенное пространство 18 ГБ чуть ниже для расширенного раздела. Чтобы добавить это пространство в раздел linux-swap (который присутствовал внутри расширенного раздела), мы должны выполнить следующие шаги:

  • Щелкните правой кнопкой мыши по расширенному разделу и выберите параметр « Изменить размер / переместить» , он будет похож на скриншот ниже

    введите описание изображения здесь

  • Нажмите и перетащите стрелку в крайнее правое положение и нажмите « Изменить размер / переместить» , чтобы нераспределенное пространство в 18 ГБ появилось внизу расширенного раздела. У меня было 14,80 ГБ нераспределенного пространства, которое уже присутствовало внизу, а теперь - 18,34. ГБ объединяется с этим для создания нераспределенного пространства (18,34 + 14,80 ГБ) в нижней части расширенного раздела.

  • Теперь под разделом подкачки было незанятое пространство, оно будет похоже на случай 1 , затем следуйте примеру 1.

ПРИМЕЧАНИЕ: не забудьте сделать резервную копию всех ваших важных данных, прежде чем выполнять вышеуказанные операции.

Авинаш Радж
источник
2
Отличное руководство по инструментам GUI, заслуживает ++ как есть. Однако, возможно, должно быть какое-то предупреждение о возможных рисках, связанных с редактированием раздела. Простое руководство по резервному копированию MBR или ссылка на такое руководство было бы отличным дополнением, ошибки могут быть маловероятными, но затраты могут быть высокими + создание резервных копий MBR не будет занимать слишком много времени или места и может сэкономить много работы, пространства и времени при правильном выполнении.
Сампо Саррала
2
Не забудьте поменять местами, щелкните правой кнопкой мыши по разделу подкачки и поменяйте местами
user3752281
30

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

Со manстраницы:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Если у вас уже есть swapопределенный, вы можете либо удалить его, либо оставить его, и ваш * nix будет управлять им (даже лучше с определением swaponприоритета). Это может быть полезно, если вы хотите распределить обмен между различными устройствами и дисками (в зависимости от их скорости или других пользовательских требований, см. Какова цель использования нескольких файлов подкачки в StackExchange ).

Простое fallocateиспользование для добавления второго файла подкачки

Проверьте ситуацию со свопом:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Создайте файл подкачки 4G

Стандартный способ создания и активации файла подкачки.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Сделайте свой своп постоянным

Добавьте строку в свой /etc/fstabфайл, чтобы своп был инициализирован при следующей перезагрузке (мы также обновляем здесь приоритет вновь созданного пространства подкачки и обновляем приоритет старого файла подкачки).

Обратите внимание, что в вашем файле / etc / fstab приоритет предыдущего свопа теперь равен 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Проверьте ситуацию подкачки после перезагрузки:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Удалить один из разделов подкачки (например, исходные 256 Мб)

редактировать /etc/fstab

Удалите строку, относящуюся к свопу, который вы хотите удалить.

Удалить этот своп

Удалить и удалить файл подкачки.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Ресурсы:

Жан-Кристоф Мейо
источник
3
1-вверх fallocate, намного лучше, чем ddесли бы ваш fs это поддерживал. Эти однострочные тексты все еще трудно читать, может быть легче изучить их, если разбить их на реальные команды?
Сампо Саррала
3
Это пример идеального ответа, очень простой для понимания, очень простой для реализации. Это работало как прелесть в Ubuntu 18
Дамиан Рафаэль Латтенеро
7

В моем случае у меня уже был файл подкачки, который, как мне показалось, был размером 1 ГБ, но когда я посмотрел на него более внимательно, он был размером всего 256 МБ, а при предварительной компиляции ресурсов rails серверу не хватало памяти

Errno::ENOMEM: Cannot allocate memory - nodejs

Я создал свой файл подкачки, как описано здесь: https://stackoverflow.com/a/34885004/784318

Теперь строка, которая создает пустой файл с именем, /swapfileвыглядит следующим образом:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Теперь, чтобы изменить размер файла подкачки, я должен был сделать эти простые шаги:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

Файл был создан (536870912/1024/1024 = 512 МБ):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Используя free -mкоманду, я увидел, что размер файла сейчас равен 512 МБ, как и ожидалось:

Besi
источник
Вы не должны использовать опасный флаг -r с командой rm для удаления одного файла. rm -f должно быть более чем достаточно.
Сампо Саррала
1
@SampoSarrala Спасибо за внимание, я изменил сценарий соответственно.
Беси
@Besi Спасибо! Это было именно то, что мне нужно, чтобы увеличить размер файла подкачки в моей системе Ubuntu 18.04 LTS. Это сработало именно так, как вы написали. Отличная помощь !!!
B-радикал
Мне нравится это решение, потому что оно представляет собой командную строку, не требует перераспределения и объясняет, что делать, если файл подкачки уже существует.
cxrodgers
3

как добавить файл подкачки

  1. создать файл .img

    sudo dd if = / dev / zero = = swap.img bs = 1M count = 1000

примечание !: bs = 1M count = 1000 ==> 1GB

(bs * count = размер в мегабайтах)

другой пример:

sudo dd if = / dev / zero = = swap.img bs = 10M count = 100

  1. формат .img файл

    sudo mkswap /swap.img

  2. включить файл подкачки

    sudo swapon /swap.img

  3. добавить файл подкачки в fstab

добавьте эту строку в ваш fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Ион
источник
Я обычно устанавливаю метку на своп, например, "mkswap -L SWAP2".
Пол М
Примечание. Это тот же ответ, что и принятый / получивший наибольшее количество голосов ответ Сампо Саррии, но с меньшим контекстом и с добавлением img подкачки непосредственно в root вместо / media / fasthdd
steel
0

Изменить размер своп до 8 ГБ

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Проверьте, сработало ли это

grep Swap /proc/meminfo
Мартин Тома
источник