Як налаштувати простір для заміни?


114

Raspberry Pi має лише 256 Мб оперативної пам’яті, тому я хотів би використовувати місце для обміну (або на SD-картці, або на USB-накопичувачі). Як це налаштувати?


10
Обмін на Pi (і подібних пристроях) може бути болісно повільним, і все, що насправді закінчується широкомасштабним свопом, практично приведе систему в стан. Обережно!
MattJ

1
Ви знаєте, що було б добре - це накопичувач USB RAM (не флеш або SSD, а фактичний мінливий мікросхем, що працює на швидкостях USB). Це було б добре для такої заміни.
Піотр Кула

3
@Tibor Питання: "Як налаштувати простір для обміну?" На мою думку, правильна відповідь повинна описувати, як це зробити, а також привернути увагу до деяких підводних каменів і застерегти від неправильного використання. Ваш відповідь робить тільки , що в той час як «найпопулярніший» відповідь тільки говорить вам , чому ви ніколи не повинні «робити це на всіх» (який є німим, тому що є правильний спосіб , щоб використовувати його, і це на самому справі це корисно).
Ендрю Ларссон

1
На цій сторінці є близько мільйона застережень від використання swap з малиновим пі, але якщо вам потрібно щось створити один раз, це неминуче.
Архонічний

1
@Archonic - +1 . Мені не вистачає пам’яті для компіляції файлів при нагоді. Невеликий файл з свопом із низьким розміром зможе покращити поточну ситуацію.
jww

Відповіді:


134

Raspbian використовує dphys-swapfile , який є рішенням на основі файлів своп-файлів замість "стандартного" рішення на основі swap-розділів. Набагато простіше змінити розмір свопу.

Файл конфігурації:

/etc/dphys-swapfile 

Зміст дуже простий. За замовчуванням мій Raspbian має 100MB свопу:

CONF_SWAPSIZE=100

Якщо ви хочете змінити розмір, вам потрібно змінити число та перезапустити dphys-swapfile:

/etc/init.d/dphys-swapfile restart

Редагувати: На Raspbian типовим місцем є / var / swap, який (звичайно) знаходиться на SD-карті. Я думаю, що це погана ідея, тому я хотів би зазначити, що / etc / dphys-swapfile також може мати наступний варіант: CONF_SWAPFILE = / media / btsync / swapfile

У мене проблема лише в цьому, зберігання usb є автоматизованим, тому потенційна гонка тут (automount vs. swapon)


2
Це правильна відповідь. Жодна з інших відповідей не згадувала dphys-swapfile.
Кенджі Ногучі

1
Я відповів на цю відповідь як на дійсно правильну. Вивчивши все це на важкому шляху зовсім недавно, ваша відповідь могла заощадити мені багато часу. ;-)
Драченфельс

Чи можете ви пояснити, чому використання /var/swapпоганої ідеї?
Андрій Портний

встановити R-пакети, які раніше не вдалося через "системний виклик не вдалося виділити пам'ять": Встановіть CONF_SWAPSIZE = 1024. Менше недостатньо.
вертикаліст

36

Ви можете налаштувати простір для заміни досить просто. Наприклад, якщо ваш USB-накопичувач /dev/sdx, ви б використовували (для цього ви повинні мати root):

$ mkswap /dev/sdx
$ swapon /dev/sdx

Зауважте, що для цього використовується весь пристрій, і ви, ймовірно, втратите всі наявні дані на ньому.

Ви також можете створити файл swap (за допомогою loopпристрою) таким чином:

$ dd if=/dev/zero of=/path/to/swapfile bs=1M count=1024 # For 1GB swap file
$ mkswap /path/to/swapfile
$ swapon /path/to/swapfile

Коли вам більше не потрібен файл swap (якщо ви хочете, наприклад, вийняти USB-накопичувач), потрібно скористатися swapoff <device>. Якщо цього не зробити, можливо, це призведе до збою системи.

Але ви повинні бути обережнішими . SD-картки мають обмежені обмеження читання / запису, і це скоротить термін їх служби. Якщо ви використовуєте зовнішній жорсткий диск, вам слід добре, але це буде дуже повільно.


2
Навіщо додавати петлю? Звичайно, це не потрібно?
папі

Ти маєш рацію, це не так. Я відредагував відповідь, щоб це відобразити.

2
Я думаю, ви повинні змінити це, щоб уникнути копіювання та вставки користувачів та випадкового запуску mkswapїх кореневого розділу. Я думаю sdx, це хороша умова.
Jivings

3
Користувачі, які вирішили ввімкнути SWAP, можуть бути зацікавлені в налаштуванні простоти ядра .
земляLon

@earthmelon Raspbian Джессі за замовчуванням має свобідність 1.
kaay

32

Не робіть цього взагалі.

Ви повинні НЕ включити своп на Raspberry Pi.

Хоча це можливо, це не корисно. Навіть на SDHC-класі 10 класу вона занадто повільна. Також ви скоротите термін служби SD-карти.

На будь-якому пристрої зберігання даних на базі флеш-пам'яті (SD-карта, SDD, USB-накопичувачі) ви також зможете побачити паузи в масштабах системи, коли велика група флеш-блоків стирається.

Можливі винятки:

  • Якщо ви підключите (магнітний) жорсткий диск (хоча USB-SATA або USB-IDE-адаптер)
  • Якщо ви використовуєте ZRAM або щось подібне

3
без сумніву, обмін на USB-бей дуже швидко знищить ваш ключ, обмін на SD-карту також небезпечний, навіть якщо новіші SD-карти (клас 10) могли б підтримати його краще. ZRAM - це безперечно шлях, якщо вам потрібно більше оперативної пам’яті
neofutur

1
Ви б могли подумати, що за допомогою технології ReadyBoost у Windows хтось зробить USB-накопичувач (або eSata, не впевнений, чи ReadyBoost може це використовувати, не буде корисним для малинового пі, але було б цікаво), який використовував би фактичну оперативну пам'ять, щоб ви могли підвищення продуктивності комп'ютера. Хоча, мабуть, буде простіше і дешевше просто придбати нову материнську плату, яка підтримує необхідну кількість оперативної пам’яті.
Kibbee

33
Чому ця відповідь має стільки відгуків? Є багато причин використовувати своп. Я використовував файл swap на зовнішньому диску, щоб скласти велику бібліотеку протягом декількох днів. Це повільно, як мертві мавпи, що плавають у патоці, але це не означає, що ви "не повинні цього робити зовсім".
Ендрю Ларссон

10
Ваше попередження, хоч і добре, але занадто сильне. Дізнайтеся "чому ні", а також "чому" саме для цього Raspberry Pi: спробуйте все, що вам завгодно, і НАВЧАЙТЕ. Також є кілька вагомих причин використовувати зовнішній привід для swap, наприклад задоволення пікової потреби в пам'яті для одноразової компіляції бібліотеки; пошук, який привів мене сюди. Часи, яких я навчився найбільше, це коли я викрутив щось незначне і зрозумів, чому. Вибачте, що ви не настільки корисні, як вам здається.
Кріс Хаттон

2
Шлях занадто сильний. "найкраще не", можливо, але "поганий, марнотратний, згубний і марний" вводить в оману. Все носить з використанням, мати на увазі кисень токсичний, і Raspbian робить використання файлу підкачки. Уповільнення, як правило, краще, ніж аварія, і дозволяє збирати величезні речі раз на кілька місяців. Просто встановіть низьку свобідність, і ви добре.
kaay

4

Raspbmc використовує /etc/init/swap.confдля налаштування файлів swap через / swap. Він спочатку перевіряє наявність /home/pi/.enable_swap.

Якщо ви видаляєте, /home/pi/.enable_swapтоді файл swap не створюється, а потім просто відтворюйте його, touch /home/pi/.enable_swapякщо вам потрібен увімкнути та перезавантажити.


4

Шкода, що у Raspberry Pis немає GigaBit Ethernet, але принаймні теоретично можливо розмістити простір на мережевому пристрої - Linux Terminal Server Project може запропонувати його з сервера клієнтам відповідно до цього пункту на їхній вікі .

Я знайшов тему форуму фонду "Порада: обмінятись на nfs", яка показує, як хтось, у якого вже були якісь кріплення NFS, використовував swapfile на одному з них і монтував його через кріплення на циклі (можливо, тому що Linux не дозволяє NFS кріплення, яке слід використовувати безпосередньо). З огляду на , що віддалений своп-файл буде містити дані про те , що операційна система не повинна втратити я б розглядати тільки це для провідної мережі Ethernet - бездротовий зв'язок буде занадто тендітним ІМХО. Крім того, ви, звичайно, не повинні дозволяти відключити віддалений сервер, не вимикаючи своп і не дозволяючи йому спочатку повністю спорожнятися!


RPi взагалі не отримає користі від GB Ethernet через обмежену пропускну здатність між мікросхемою Broadcom та контролером Ethernet.
Дмитро Григор’єв

1
... і контролер Ethernet як доповнення до USB-чіпа ! Так, але ми можемо мріяти про гіпотетичний дизайн RPi, де мережеве обладнання було частиною основного пристрою SoC. 8-P
SlySven

Контролери Ethernet часто є зовнішніми мікросхемами, але USB як міжчипова шина дійсно погана як для швидкості, так і для споживання енергії.
Дмитро Григор’єв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.