Чому зображення ECU ubuntu не мають своп?


82

Я запустив кілька серверів на EC2, і вони не мають своп.

Чи я щось роблю не так, чи машин просто немає?


Мені теж було цікаво, але я просто створив екземпляр EBS, відформатував його як swap та swapon / dev / sdg ...
Том О'Коннор,

Це також типовий випадок використання накопичувачів SSD в системі Linux, щоб не налаштовувати своп на SSD-накопичувач. Переважно через те, що деякі люди параноїдальні, це негативно впливатиме на термін зберігання SSD, будуючи весь той самий набір секторів.
djangofan

1
Який AMI та який розмір екземпляра EC2 AMI потрібно налаштувати для використання розділу swap, і екземпляр повинен додати його при запуску.
Джеремі Бууз

Якщо це взагалі можливо, я б радив не користуватися свопом на EC2, якщо ви не впевнені на 99%, вам не доведеться його використовувати (IE - це тільки там для надзвичайних ситуацій). Коли ми відключили своп на деяких екземплярах EC2, наші щомісячні витрати на виведення IBS на EBS, ймовірно, скоротилися вдвічі. Лише мої два центи, щоб заощадити два центи - так, це було жахливо, прошу вибачення і сховаюсь у кутку;)
Мазання

Ви також можете подивитися на цих кроках docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Артем Борисов

Відповіді:


74

Ви праві, зображення Ubuntu EC2 EBS не поставляються з налаштованим простором підкачки ( принаймні для 11,04 ). У "звичайних" образів типу екземпляра є розділ підкачки, хоча лише 896 Мб на той, який я тестував.

Якщо вибухне якийсь процес, і у вас немає місця для заміни, ваш сервер може ненадовго зупинитися повзанням, перш ніж починає вбивця OOM, тоді як при свопі це просто стає повільним. З цієї причини мені завжди подобається мати місця для обміну, навіть з достатньою кількістю оперативної пам’яті. Ось ваші варіанти:

  • Створіть об'єм EBS (у 2–4 рази більший за розмір вашої оперативної пам’яті), приєднайте його до свого примірника (мені подобається називати його / dev / xvdm для «пам’яті») sudo mkswap /dev/xvdm, додайте його до fstab sudo swapon -a, і вам добре йти . Я робив це раніше, і це працює чудово, але це, мабуть, трохи повільніше, ніж зберігання примірників, оскільки він переходить через мережу.

  • Або ви, можливо, зможете перерозподілити свій диск, щоб додати розділ swap, хоча це може зажадати створення нового AMI. Я не зміг це зробити в запущеному екземплярі, тому що я не можу відключити кореневу файлову систему і навіть не маю доступу до дискового пристрою (/ dev / xvda), лише до розділу (xvda1).

  • Або ви можете створити файл swap. Зараз це моє вподобане рішення.

    sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
    sudo chmod 600 /var/swapfile &&
    sudo mkswap /var/swapfile &&
    echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
    sudo swapon -a
    

    Зроблено. :) Я знаю, що багато людей почуваються пристрасними щодо використання файлів замість розділів, але це, безумовно, працює досить добре, як аварійний обмін місцями.


4
Заміна на об'єм EBS може призвести до додаткових витрат, як зазначено в інших відповідях. Не використовувати swap або поміняти сховище екземплярів, здається, кращі рішення.
isuldor

7
Використання сховища екземплярів - кращий варіант, ніж EBS. EBS - це мережева файлова система, тому підключається до екземпляра EC2 через те саме мережеве з'єднання, що і все інше. Магазин екземплярів додається до обладнання, на якому розміщується екземпляр (саме тому він не зберігається, коли ви зупиняєте і запускаєте свій примірник). Єдиний раз, коли EBS є варіантом своп, коли ви використовуєте тип екземпляра, який не поставляється із сховищем екземпляра, тобто. T1.micro (для якого він має лише близько 620 Мб оперативної пам’яті - це, мабуть, той, який справді потребує надзвичайної ситуації поміняти).
ColtonCat

Bs = 1M вже є у двійковій нотації, тому мультиплікатор count = 2048 слід рахувати = 2000 - якщо я не помиляюся.
ypocat

1
Якщо ви збираєтесь на 2GiB, то 1024 * 2048 здається правильним.
Джо Лісс

25

Найкраще місце для обміну IMHO - це сховище екземплярів. Чому? AWS не стягує плату за i / o в магазині екземплярів. Крім того, зберігання екземплярів у багатьох випадках ефективніше, ніж EBS. Просто переконайтеся, що у вас є сценарій, який відтворює файл swap у випадку, якщо ви зупините примірник. Перезавантаження добре. Чому о, чому його немає за замовчуванням?

Давайте знайдемо примірник-сховище.

root@domU-**-**-**-**-**-**:/var/log# fdisk -l

[...]

Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Ура, 160,1 Гб безкоштовно! Помістіть туди свій замін і забудьте 100 доларів надбавки за один сервер, коли ваш своп на базі EBS помилився. Невдалий досвід спілкування тут.

Мабуть, у деяких випадках ви не бачите сховища екземплярів.

Залежно від типу екземпляра, спочатку потрібно приєднати томи зберігання до примірника, використовуючи параметри відображення блоку пристрою. Якщо цього не зробити, ви, можливо, навіть не побачите пристрої під / dev (відповідно до того, як використовувати сховище "Instance Store Volumes" в Amazon EC2? )


1
просто хочу зазначити, що користувачі t1.micro на вільному рівні не можуть використовувати цю опцію.
Реубен Л.

20

Примітка : Amazon змінив свою цінову політику і не стягує плату за запити вводу / виводу з середини 2016 року. Відповідь зберігається тут з історичних причин, але немає жодних наслідків щодо використання (або не використання) свопів у випадках, підтримуваних EC2 EBS.


Це за дизайном. Зміна за замовчуванням вимкнено у випадках, підтримуваних EC2 EBS, щоб уникнути непередбачуваних витрат.

Якщо у вас є голодна пам'ять програма, яка переходить в шахрайство (скажімо, на крихітному чи маленькому екземплярі), вона може генерувати досить велику кількість запитів вводу / виводу на вашому обсязі EBS. Amazon стягує $ 0,10 за 1 мільйон запитів вводу / виводу (див. Http://aws.amazon.com/pricing/ebs/ ) .

У звичайних умовах ви не повинні турбуватися про це; Зазвичай вартість запитів на введення-виведення навіть у менших екземплярах - кілька доларів, якщо так. Тож якщо ви знаєте, що у вас є екземпляр належного розміру, і цей своп буде використовуватися лише нечасто, продовжуйте і вмикайте його. Але будьте обережні з крихітними примірниками.

Якщо ви включите своп, можливо, ви хочете слідкувати за звітами про використання. За бажанням ви також можете налаштувати сповіщення про оплату, перейшовши на панель керування CloudWatch та створивши новий сигнал тривоги на загальну суму рахунку. Таким чином, ви отримаєте сповіщення одразу про щось дивне з вашими екземплярами.


Ця відповідь мене трохи вводить в оману або заплутує, оскільки найпоширеніші типи примірників використовують томи SSD. aws.amazon.com/ec2/instan-types
Тейлор Едмістон

2
@tedmiston: Дійсно, ця відповідь уже не застосовується. Я налаштований на відображення нової реальності, але в основному плата за введення-виведення не стягується, тому ввімкнення заміни (чи ні) тепер може здійснюватися на чисто технічній основі.
Gui Ambros

1

Перевірте /etc/fstabфайл, вони, ймовірно, були налаштовані без заміни зображення, яке ви використовуєте. Я думаю, що деякі люди працюють без заміни для серверів, оскільки вони сподіваються, що ніколи не будуть використовувати більше, ніж загальна пам'ять - заміна робить все дуже повільно.

Однак я завжди параноїдний щодо того, що якийсь процес балонується в пам’яті, тому я думаю, що було б доцільно просто встановити диск заміни і відтворити зображення з запущеного екземпляру ec2.


2
Випадкові заміни не роблять систему повільною.
маячка

0

Просте рішення для роботи swapв EC2зображеннях , щоб запустити swapстиснутий lz4в ramс zram-init.

  • службові сценарії доступні для systemd& openrc.

Це рішення ніяк НЕ взяти ramдалеко від host:

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


1
Дуже креативно, але чи не використовувати вашу оперативну пам’ять як фактичну оперативну пам’ять має більше сенсу, ніж використовувати її як файлову систему в пам'яті для обміну? (що в першу чергу звикає, коли у вас не
вистачає

Цікава відповідь, але я думаю, що використання EBS / store store - це, мабуть, краще рішення загального призначення. У мене є t2.nano з 512 МБ оперативної пам’яті та 512 МБ свопом на EBS, що працює чудово.
Тім

Це, очевидно, займає оперативну пам’ять від хоста (екземпляр EC2) - звідки ще йде ОЗУ? Єдиною перевагою такого підходу є стиснення частини вашої загальної оперативної пам’яті, але це не забезпечує можливість використання SSD як своп. Ви можете замість цього використовувати zswapстислий кеш оперативної пам’яті поверх звичайного файлу / диска підкачки: wiki.archlinux.org/index.php/zswap . Дивіться cnx-software.com/2018/05/14/… для отримання додаткової інформації про zram.
RichVel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.