Виртуалната памет е едно от онези неща, които са в основата на съвременните операционни системи, но обикновено не мислите за това, освен ако нямате проблем. Дистрибуциите на Linux ви молят да настроите вашето виртуално пространство в паметта (swap partitions) по време на инсталацията, но повечето начинаещи не знаят колко полезно е това.

Ето всичко, което трябва да знаете за виртуалната памет в Linux.

Какво е виртуална памет?

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

В Linux това се прави на ниво ядро ​​и хардуер. Централният процесор има хардуерна част, наречена единица за управление на паметта (MMU), която преобразува адресите на физическата памет във виртуални. Тези адреси не зависят от това къде се намират физически на машината. Тези адресни пространства са известни като „страници“ и могат да бъдат в RAM или на вашия твърд диск или SSD. Операционната система вижда тези адреси като един голям пул памет, известен като "адресно пространство".

instagram viewer

Виртуалната памет се възползва от факта, че не цялата памет, която се използва на теория, се използва през цялото време. Програмите в паметта се разбиват на страници и частите, които ядрото счита за ненужни, се „разменят“ или се преместват на твърдия диск. Когато са необходими, те могат да бъдат "разменени" или върнати обратно в RAM.

Пространството, използвано за виртуална памет на устройство, е известно като "backing store" или "swap space". В света на Windows е така обикновено се реализира като файл, известен като "swap файл". Възможно е да направите това и в Linux, но е много по-често срещано да се използвайте специален дисков дял.

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

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

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

Основният недостатък в исторически план с виртуалната памет е, че твърдите дискове са били по-бавни от RAM. Ако една машина няма достатъчно RAM, системата може да продължи да сменя страниците безкрайно, процес, известен като "разбиване". Това е по-малко проблем при съвременните компютри с повече RAM и по-бързи SSD дискове, които изместват механичните твърди дискове, но все пак е нещо, което трябва да знаете на.

Linux суап дялове

Както споменахме по-рано, обичайният метод за настройка на виртуална памет в Linux е използването на специален дисков дял. Помощната програма за инсталиране ще провери вашия хардуер и ще предложи схема за разделяне, която включва суап дял.

Можете също да добавите суап дялове след инсталацията. Ако искате да добавите нов дял към съществуващо устройство, ще трябва да го направите използвайте инструмент за неразрушително разделяне като GParted. Уверете се, че сте избрали "Linux swap" като файлова система за вашия дял.

Архивирайте важните данни, преди да разделите диска си.

След като създадете вашия дял, използвайте командата mkswap, за да форматирате своя дял.

sudo mkswap /dev/sdX

Сега ще трябва да редактирате своя /etc/fstab като root, за да добавите вашия суап дял. Този ред, добавен към файла, ще настрои суап дял, който да бъде монтиран по време на зареждане:

/dev/sdX няма суап по подразбиране 0 0

Сега използвайте суапон команда за активиране на вашето ново суап пространство, където sdX е името на вашия суап дял:

sudo swapon /dev/sdX

Използване на файлове за размяна на Linux

Лесно е да настройте суап файл в Linux с помощта на командния ред. Може да искате да направите това, ако не искате да си правите труда да разделяте диска или да редактирате /etc/fstab. Един от методите е да използвате изпадам:

Например, за да създадете 2GB суап файл:

sudo fallocate -l 2G /path/to/swapfile

Като алтернатива можете да използвате командата dd, за да създадете суап файла.

sudo dd ако=/dev/нула на=/path/към/swapfile bs=1024 брой =2048

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

The /dev/zero устройство е специално устройство, което извежда "0." Това, което тази команда dd прави, е да създаде празен блоков файл от два гигабайта, използвайки блокове от 1024 килобайта, подходящи за използване като пространство за суап.

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

sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile

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

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

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

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

В много системи, ако поставите отметка върху top или htop, може дори да забележите, че вашето суапово пространство изобщо не се използва, ако настроите системата си по този начин.

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

Компютърът може да продължи да влиза и излиза, процес, известен като разбиване, което го кара да изглежда бездействащ. Ако все още имате механичен твърд диск, често можете да чуете непрекъснат достъп до него.

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

Най-лесният начин да поправите това е просто да добавите повече RAM към вашата машина. Ако това не е възможно, можете да опитате да коригирате "swappiness" на ядрото на Linux.

Числото на swappiness определя колко ядрото потапя във виртуалната памет. Варира от 0 до 100. Задаването му на 0 означава, че Linux няма да разменя изобщо, докато при 100 ще се разменя при всяка възможност. По подразбиране в повечето системи е 60.

За да промените временно swappiness, използвайте командата sysctl:

sudo sysctl vm.swappiness=20

„20“ в тази команда ще бъде номерът за размяна, докато не рестартирате. За да го промените за постоянно, редактирайте /etc/sysctl.conf файл като root и поставете реда "vm.swappiness=[swappiness number]", където "[swappiness number]" е номерът за swappiness, който искате. Това ще бъде временно прекъсване, докато можете да инсталирате повече RAM.

Виртуалната памет поддържа вашата Linux система да работи гладко

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

Много от тези съвети са приложими и за други системи, включително Windows, дори ако методите за настройка на виртуалната памет са различни.