Як збільшити обмінний простір?


127

У мене за замовчуванням в Ubuntu є 250 Мб місця для swap, і я хочу розширити його на більший розмір. Мені потрібно 800 Мб, що, на мою думку, буде достатньо для відкриття декількох додатків без необхідності перевищення поточної межі свопу. Сподіваюся, хтось може мені допомогти.


2
Відкрийте Gparted та опублікуйте скріншот того, що ви бачите тут.
Аарон Хілл

Якщо ваш розділ swap можна розширити на сусідній нерозподілений простір, тоді використовуйте gparted. Якщо такий простір недоступний, можливо, тому, що ваш активний (завантажений) розділ використовує весь простір без заміни, то gpartedце не дозволить вам зменшити розмір активного розділу для створення нерозподіленого простору. У цьому випадку ви можете перевстановити Ubuntu, щоб створити більший простір для обміну.
H2ONaCl

Відповіді:


171

Ви завжди можете створити файл свопу

щоб додати більше місця для заміни. Це не те саме (у кожному аспекті) як swap-розділ, але це буде легко та динамічно.

Змініть /media/fasthdd/swapfile.imgвсе, що вам подобається, наприклад, це також може бути /swap.img. /media/fasthdd/swapfile.imgце лише приклад імені файлу, якщо ви використовуєте це, то, звичайно, повинен бути каталог /media/fasthdd/з достатньою кількістю вільного місця для нового файлу swap.

Використовуйте будь-які термінальні програми для запуску команд. Усі команди повинні бути виконані з привілеями root , для цього ви можете або додати sudoдо початку кожної команди, або виконати sudo bashперед запуском команд.

1. Створіть порожній файл:
Цей файл буде містити вміст віртуальної пам'яті, тому зробіть файл достатньо великим для ваших потреб. Цей файл створить 1Gb файл, що означає + 1 Гбіт місця для вашої системи:

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

Якщо ви хочете зробити 3Gb файл, то змініть значення count на count=3M. Див. Для man ddотримання додаткової інформації.

2. Створити файл swap:
Наступна команда створить "swap file system" всередині вашого свіжого файлу swap.

mkswap /media/fasthdd/swapfile.img

3. Підключення до завантаження:
Щоб переконатися, що ваш новий простір під час завантаження завантажено комп'ютер, слід додати його до файлу конфігурації файлової системи /etc/fstab. Додайте його до кінця файлу, це рекомендується, оскільки інші файлові системи ( принаймні одна, яка містить файл swap ) повинні бути встановлені в режимі читання-запису, перш ніж ми отримаємо доступ до будь-яких файлів.

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

4. Активуйте:
Ви можете або перезавантажити комп'ютер, або активувати новий файл swap вручну, виконавши наступну команду:

swapon /media/fasthdd/swapfile.img


Якщо все піде добре

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

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". тоді команда "безкоштовно" також дає інформацію про використання підкачки.
Пол М

40

Метод GUI для збільшення розміру розділу swap

Ще один спосіб збільшити розмір swap - це використовувати редактор розділів GParted . Коротше кажучи, ви змінюєте розмір розділу swap, потім клацніть правою кнопкою миші та вибираєте "Swapon".

Простіше завантажувати gparted-live-диск або живий диск Ubuntu (так що всі /dev/sdaрозділи будуть відключені). Якщо ви запускаєте живий диск Ubuntu, вам доведеться встановити gparted, виконавши команди нижче:

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

Ви повинні бути в змозі збільшити розмір розділу swap, лише якщо перед розділом swap або після нього є нерозподілений простір. Якщо не було нерозподіленого простору (простір, який ми намагаємося додати розділом swap) нижче або над розділом swap, тоді ми повинні змінити розмір розділів і отримати цей нерозподілений простір.

Випадок 1 - нерозподілений простір, присутній до або після розділу swap

GParted перегородки

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

  • Щоб змінити розмір, клацніть правою кнопкою миші на розділі swap (/ dev / sda9 тут) і натисніть на опцію Resize / Move. Це буде виглядати приблизно так:

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

  • Перетягуючи слайдерні стрілки вліво або вправо, потім натисніть кнопку Змінити розмір / Перемістити. Ваш розділ підкачки буде змінено.


Випадок 2 - нерозподілений простір знаходиться між перегородками

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

У наведеному вище скріншоті, незайняте простір , яке ми хочемо додати в розділ підкачки було між dev/sda7і /dev/sda8.Щоб перемістити незайняте простір від тільки вище розділу підкачки, ми повинні слідувати простим крокам , описаних нижче,

  • Клацніть правою кнопкою миші на розділі / dev / sda8 та натисніть на опцію Змінити розмір / Перемістити .

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

  • клацніть і перемістіть повзунок в крайній лівій частині, щоб нерозподілений простір, який був трохи вище /dev/sda8розділу, потрапив нижче. /dev/sda8Після цього натисніть кнопку Змінити розмір / Перемістити.

  • І тепер нерозподілений простір був трохи вище розділу swap, який був подібний до випадку 1. Тепер слід за випадком 1.


Випадок 3 - якщо нерозподілений простір знаходився поза розширеним розділом)

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

У мене був нерозподілений простір на 18 Гб трохи нижче розширеного розділу. Щоб додати цей простір до розділу linux-swap (який був присутній всередині розширеного розділу), ми повинні виконати наступні кроки,

  • Клацніть правою кнопкою миші на розширеному розділі та виберіть опцію Змінити розмір / Перемістити , це буде, як показано на наведеному нижче екрані

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

  • Клацніть та перетягніть стрілку в крайньому правому куті та натисніть на Змінити розмір / Перемістити , щоб нерозподілений простір у 18 ГБ потрапляв у нижню частину розширеного розділу. У мене було 14,80 ГБ нерозподіленого простору, який уже присутній внизу, а зараз 18,34 ГБ поєднується з цим, щоб створити нерозподілений простір (18,34 + 14,80 ГБ) в нижній частині розширеного розділу.

  • Тепер трохи нижче розміщеного простору до розділу swap, це буде як Case 1 , а потім слід за випадком 1.

ПРИМІТКА. Не забудьте зробити резервну копію всіх важливих даних, перш ніж продовжувати описані вище операції.


2
Чудовий посібник з інструментами GUI, заслуговує ++ як є. Однак, можливо, повинно бути попередження про можливі ризики, пов’язані з редагуванням розділів. Простий посібник із резервного копіювання MBR або посилання на такий посібник буде чудовим доповненням, помилки можуть бути малоймовірними, але витрати можуть бути високими + прийняття резервних копій MBR не забирає занадто багато часу або місця і може заощадити багато роботи, місця та часу, якщо виконано правильно.
Сампо Саррала

2
Не забудьте здійснити заміну, клацніть правою кнопкою миші розділ "swap" на swapon
user3752281

29

Ви також можете використовувати, fallocateякщо ви хочете зарезервувати місце для свого swapfile, не потребуючи заповнення файлу на 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пріоритет). Це може бути корисним, якщо ви хочете розповсюдити свій swap між різними пристроями, накопичувачем (виходячи з їх швидкості чи інших спеціальних потреб, див. Яке призначення декількох файлів підкачки в StackExchange ).

Просте fallocateвикористання для додавання другого файлу своп

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

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

Створіть файл свопу 4G

Стандартний спосіб створення та активації файлу swap.

$ 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файл, щоб своп був ініціалізований під час наступної перезавантаження (ми також оновлюємо тут пріоритет новоствореного простору swap та оновлюємо пріоритет старого файлу swap).

У вашому / 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

Видаліть рядок, пов’язаний із свопом, який потрібно видалити.

Видаліть цей своп

Видаліть і видаліть файл swap.

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

Ресурси:


2
1-у для fallocate, набагато краще, ніж ddякщо ваш fs це підтримує. Ці однолінійки все ще відчувають важкість для читання, чи може бути простіше вивчити, якби вони були розбиті на фактичні команди?
Сампо Саррала

2
Це приклад ідеальної відповіді, дуже простого для розуміння, дуже простого в реалізації. Це спрацювало як принадність у ubuntu 18
Даміян Рафаель Латтенеро

7

У моєму випадку у мене вже був файл свопу, який я вважав 1 Гб, але коли я придивився до нього уважніше, він був великим лише 256 Мб, і при попередньому компілюванні моїх рейкових активів у сервера не вистачало б пам'яті

Errno::ENOMEM: Cannot allocate memory - nodejs

Я створив свій файл swap, як описано тут: https://stackoverflow.com/a/34885004/784318

Тепер рядок, який створює порожній файл під назвою /swapfile, такий:

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

Тепер, щоб змінити розмір swapfile, мені довелося виконати наступні прості дії:

# 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 Мб, як очікувалося:


Не слід використовувати небезпечний прапор -r з командою rm для видалення одного файлу. rm -f повинно бути більше ніж достатньо.
Сампо Саррала

1
@SampoSarrala Дякую за голову, я змінив сценарій відповідно.
Бесі

@Besi Дякую! Це саме те, що мені потрібно збільшити розмір файлу підкачки в моїй системі Ubuntu 18.04 LTS. Це спрацювало саме так, як ви це написали. Відмінна допомога !!!
В-радикал

Мені подобається це рішення, оскільки це командний рядок, не вимагає перерозподілу, і пояснює, що робити, якщо вже існує swapfile.
cxrodgers

3

Як додати файл swap

  1. Створити .img файл

    sudo dd, якщо = / dev / zero of = / swap.img bs = 1M count = 1000

Примітка !: bs = 1M count = 1000 ==> 1 Гб

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

інший приклад:

sudo dd, якщо = / dev / zero of = / swap.img bs = 10M count = 100

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

    sudo mmwp /swap.img

  2. увімкнути файл свопу

    sudo swapon /swap.img

  3. додати файл swap до fstab

додайте цей рядок у свій fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0

Я зазвичай встановлюю мітку на свопі, наприклад, "mmwp -L SWAP2".
Пол М

Примітка: це та сама відповідь, що прийнята / найбільш схвалена відповідь Сампо Саррія, але з меншим контекстом і із додаванням імплантату swap безпосередньо до root, а не / media / fasthdd
сталь

0

Змініть розмір Swap до 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.