Как да създадете суап файл в Linux

Добавете суап пространство към компютър с Linux или увеличете пространството за размяна, което вече присъства, без да се забърквате с дяловете. Ние ви показваме лесния начин да персонализирате вашето пространство за смяна.

Размяна на файлове срещу размяна на дялове

Има няколко сценария, при които може да искате да увеличите съществуващото или да добавите ново пространство за суап към вашия компютър с Linux.

Може би вашето пространство за размяна често работи на максимум или близо до максимум.
Лесно е да щракнете върху грешната опция по време на инсталационния процес и да откажете неволно добавяне на суап към вашата система.
Може би по-рано сте решили, че имате толкова много оперативна памет (RAM) нямате нужда от смяна и сте променили решението си.
Понякога наследявате администрирането на система, която няма суап, по причини, които никога няма да можете да откриете.

Простото решение на всичко това е да добавите a разменете файл на вашия компютър. Това е специален файл, предварително разпределен и запазен за използване като суап пространство. Суап файл ще работи в тандем с всеки съществуващ суап, който може да имате, независимо дали това е суап файл или суап дял.

Едно време имаше спад в производителността за използване на суап файл в сравнение със суап дял. Това вече не е така с подобренията в производителността на механичните (въртящи се) твърди дискове и по-голяма ефективност на функциите за размяна в операционната система Linux. Всъщност някои дистрибуции на Linux вече по подразбиране създават суап файлове, а не разменящи дялове.

Размяната не се използва само като средство за освобождаване на RAM, когато паметта ви липсва. Това е важна част от добре функциониращата система. Без каквато и да е размяна, разумното управление на паметта става много трудно за постигане от ядрото. Нека разгледаме лесния начин да добавите малко пространство за размяна.

Преди да се потопим: Btrfs и SSD

Има две точки, които бихме искали да обсъдим бързо.

В Btrfs файлова система има определени предупреждения относно суап файловете. По едно време имаше конфликт между копиране при запис природата на Btrfs, който иска да работи по един начин и да разменя файлове, които трябва да работят по друг. Някои функции, от които зависят суап файловете, не бяха внедрени и някои предположения, които бяха направени относно номерирането на блокове в суап файловете, не бяха верни с Btrfs. Така че суап файловете не се поддържаха.

От ядрото 5.0, вие може да има суап файлове във файлови системи Btrfs ако са създадени със следните изисквания:

Няма файлове за копиране при запис (NOCOW).
Не са компресирани.
Те не се свързват с различни твърди дискове.

Повечето читатели ще използват файловата система по подразбиране ext4, така че това няма да ги притеснява.

  Как да инсталирате PHP на Linux

Когато твърдите дискове (SSD) бяха достъпни за първи път, имаше опасения относно използването им в ситуации, при които често се записва файловата система. Хората бяха предупредени да не поставят суап пространство на SSD дискове и дори да избягват системно регистриране на SSD.

Това е много по-малко проблем в днешно време и много SSD дискове, които се продават, имат продължителност на живота, която ще надживее повечето компютри. Суап файл на SSD ще има много по-добра производителност от суап дял на механичен твърд диск.

Проверка на съществуващо пространство за размяна

Погледни преди да скочиш. Нека проверим какво пространство за размяна е налично на вашия компютър. Можете да направите това по два начина и ние ще използваме и двата. Командата free ще покаже използваната и свободната памет. Опцията -h (четима от човека) ще доведе до свободното използване на разумни единици, когато показва стойностите на паметта.

free -h

Резултатът от free показва, че няма конфигурирано пространство за размяна на тази машина.

Смяната никога не се обсъжда без RAM и безплатна RAM памет. Затова си струва да се отбележи, че безплатната RAM се дава като 237 MB. Не бъркайте това с общата налична за използване RAM памет. Тази стойност се осигурява от цифрата „налично“, която е 881 MB.

Linux използва безплатна RAM за свои собствени цели, като например кеширане на файлове и буфери на ядрото. Количеството RAM, предназначено за това, е цифрата „buff/cache“, която е 871 MB. Но тази памет все още се счита – и се счита за – „налична“. Съдържанието на „buf/cache“ RAM може да бъде изхвърлено незабавно и използвано от всяко приложение, което се нуждае от малко памет.

Друг начин да проверите дали има свободно пространство за размяна е да използвате командата swapon. Опцията –show не прави никакви промени в замяната на вашия компютър. Той предоставя само статистика.

swapon --show

Ако няма изход от тази команда, няма конфигуриран суап.

Ако тези команди са разкрили, че някакво суап пространство вече е конфигурирано, размерът на съществуващото суап пространство трябва да се вземе предвид при решенията относно размера на суап файла, който ще създадете.

Колко място за размяна ми трябва?

Традиционният отговор беше „два пъти по-голямо количество RAM, което имате“. Но това е измислено, когато компютрите са имали много ограничена RAM памет. Тъй като RAM паметта стана по-евтина, а програмите и игрите по-взискателни към паметта, спецификациите на компютъра се коригираха съответно. Домашните компютри с 32 GB RAM не са рядкост в днешно време. И няма да заделяте 64 GB пространство на твърдия диск за размяна на пространство, ако имате 32 GB RAM. Това явно е прекомерно.

Количеството суап, от което се нуждаете, е като запалителна тема, сравнима с „кой е най-добрият редактор“. Една от най-разумните дискусии, които сме виждали по тази тема, е в Често задавани въпроси за размяната на Ubuntu. Това е кратък и здрав подход (въпреки че, както много хора, те не разбират как работи swappiness в Linux). Има удобна таблица, която показва препоръчителното количество за суап пространство за количеството RAM, което вашата система има, и дали компютърът ви е в хибернация или не.

  Как да рестартирате или изключите Linux с помощта на командния ред

И добрата новина е, че всъщност няма значение каква стойност ще изберете. Винаги можем да премахнем суап файл и да го заменим с по-голям или, по този въпрос, с по-малък. Или можете просто да добавите друг суап файл.

Изберете размер на суап файл от таблицата, и го стартирайте за известно време. Наблюдавайте използването на вашата система на пространството за размяна. Ако е необходима фина настройка, промените се правят лесно. С суап файлове това е работа за две минути. Сравнете това с коригирането на дялове на жив Linux компютър.

Създаване на Swap файла

Не трябва да използвате командата fallocate за да създадете своя суап файл. Това е от man страницата за swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Така че, въпреки че fallocate е по-бърз, ще използваме dd за създайте суап файла. Машината, използвана за изследване на тази статия, има два GB RAM. Ще създадем файл за размяна от един GB.

Опциите са:

if: Входният файл. В този пример използваме /dev/zero, което ще осигури поток от нулеви байтове.
на: Изходният файл. Ще създадем файл в главната директория, наречен swapfile.
bs: Размерът на блока в байтове. Това определя колко байта да се прочетат от входния файл и да се запишат в изходния файл наведнъж.
count: Колко блока за четене и запис. Умножете това число по стойността bs, за да получите размера на файла.

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

Някои статистически данни се предоставят при създаването на файла.

Можем да видим броя на блоковете (записите), които са записани във файла, размера на файла, времето, необходимо за създаване на файла, и ефективната скорост на трансфер на данни.

Използвайте командата ls, за да видите файла в основната директория:

ls /

Подготовка на Swap файла

Ние трябва да подгответе суап файла с командата mkswap, преди да може да се използва. Не е необходимо да предоставяме никакви параметри на mkswap, освен пътя и името на файла:

sudo mkswap /swapfile

Файлът е подготвен за използване като суап файл. Обърнете внимание на предупреждението относно разрешенията за файлове. Ще трябва да ги променим, така че root потребителят да е единственият, който може да чете и записва в swap файла.

Използване на Swap файла

Разрешенията по подразбиране са твърде либерални, трябва да ги ограничим, така че само root да може да използва суап файла. Използвайте chmod, за да промените разрешенията за файлове:

sudo chmod 600 /swapfile

Това премахва всички разрешения от членовете на файловата група и други, но позволява на собственика на файла, root, да чете и записва във файла.

  Как да инсталирате Deepin Desktop на Linux

Трябва да използваме командата swapon, за да уведомим Linux, че има нов суап файл, наличен за използване. Трябва само да предоставим пътя и името на файла:

sudo swapon /swapfile

Суап файлът вече е активен.

Добавяне на Swap файла към fstab

За да сте сигурни, че вашият суап файл е наличен след рестартиране, добавете го към файла /etc/fstab. Можете да използвате всеки текстов редактор, който предпочитате, но ние ще покажем процеса с графичния текстов редактор Gedit.

sudo gedit /etc/fstab

Редът, който трябва да добавим в долната част на файла, е:

/swapfile    none    swap    sw    0    0

Полетата са:

Файлова система: Пътят и името на файла за размяна.
Точка на монтиране: Файлът не е монтиран като файлова система, така че записът е „няма“.
Тип: Това е „размяна“.
Опции: При стартиране swapon -a (стартиране на всички устройства, маркирани като swap) ще бъде извикан от един от скриптовете за зареждане. Тази опция казва на Linux да третира този запис като суап ресурс, който трябва да бъде под контрола на тази команда swapon -a. Обичайно е да видите използвани тук „подразбирания“, тъй като има погрешно убеждение сред някои потребители на Linux, че това поле се игнорира. Както ще видим, това не е така. Така че има смисъл да използвате правилната опция.
Dump: Това може да бъде настроено на нула. В случая е без значение.
Pass: Това може да бъде настроено на нула. В случая е без значение.

Запазете промените и затворете редактора.

Проверка на използването на суап

За да видите дали вашето суап пространство се използва, използвайте командата swapon с опцията –show:

swapon --show

Колоните са:

Име: Името на суап дяла или суап файл.
Тип: Типът на устройството за смяна.
Размер: Размерът на ресурса за размяна.
Използвано: Количеството използвано пространство за размяна.
Prio: Приоритетът на това пространство за размяна.

Приоритетът за размяна на пространството

Всяко суап пространство се разпределя с приоритет. Ако не предоставите такъв, той автоматично се разпределя. Автоматично разпределените приоритети винаги са отрицателни. Диапазонът от приоритети, които могат да бъдат ръчно разпределени, е от 0 до 32767. Първо се използват суап ресурси с по-висок приоритет.

Ако повече от едно суап пространство имат същия приоритет, те се използват последователно, докато и двете се запълнят, тогава системата търси суап пространството със следващия най-нисък приоритет. Ако имате само едно пространство за размяна, тогава приоритетът е без значение, разбира се. Но ще променим приоритета на файла за размяна, който сме създали, за да демонстрираме как да го направим.

За да зададете приоритет, добавете опцията pri= (приоритет) към записа /etc/fstab. Редактирайте реда, който сте добавили към /etc/fstab, за да изглежда така:

/swapfile    none    swap    sw,pri=10    0    0

Тоест добавете pri=10 към полето с опции, отделено от „sw“ със запетая. Не оставяйте никакви интервали между „sw“, запетаята и „pri=10“. Рестартирайте компютъра си и използвайте командата swapon –show:

swapon -- show

Приоритетът на това пространство за размяна е повишен на 10. Което е положително доказателство, че полето за опции в записа /etc/fstab не се игнорира.

Лесно за размяна на пространството

Прерязвайки изложението и обяснението, можем да създадем нов суап файл толкова лесно и бързо, колкото това:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

И нека проверим дали работи:

swapon --show

Ако искате да направите това постоянно пускане, то във вашия /etc/fstab файл.

Бум. Работата свършена.