această pagină oferă o introducere pentru a schimba spațiul și paginarea pe GNU / Linux. Acesta acoperă crearea și activarea partițiilor swap și a fișierelor swap.
From All about Linux swap space:
Linux își împarte memoria RAM fizică (random access memory) în bucăți de memorie numite pagini. Schimbarea este procesul prin care o pagină de memorie este copiată în spațiul preconfigurat de pe hard disk, numit swap space, pentru a elibera acea pagină de memorie. Dimensiunile combinate ale memoriei fizice și spațiul de swap este cantitatea de memorie virtuală disponibilă.
Suportul pentru swap este furnizat de kernel-ul Linux și utilitățile spațiu utilizator din pachetul util-linux.
Swap space
swap space poate lua forma unei partiții de disc sau a unui fișier. Utilizatorii pot crea un spațiu swap în timpul instalării sau în orice moment ulterior, după cum doriți. Spațiul Swap poate fi utilizat în două scopuri, pentru a extinde memoria virtuală dincolo de memoria fizică instalată (RAM) și, de asemenea, pentru suportul de suspendare pe disc.
dacă este benefică extinderea memoriei virtuale cu swap depinde de cantitatea de memorie fizică instalată. Dacă cantitatea de memorie fizică este mai mică decât cantitatea de memorie necesară pentru a rula toate programele dorite, atunci poate fi benefic să activați swap. Acest lucru evită condițiile de memorie, în care mecanismul kernel-ului Linux Oom killer va încerca automat să elibereze memoria prin uciderea proceselor. Pentru a crește cantitatea de memorie virtuală la cantitatea necesară, adăugați diferența necesară (sau mai mult) ca spațiu swap.
cel mai mare dezavantaj al activării swap-ului este performanța sa mai mică, vezi secțiunea #Performanță. Prin urmare, activarea swap este o chestiune de preferință personală: unii preferă ca programele să fie ucise peste activarea swap-ului, iar alții preferă activarea swap-ului și a sistemului mai lent atunci când memoria fizică este epuizată.
pentru a verifica starea swap-ului, utilizați:
$ swapon --show
sau pentru a afișa memoria fizică, precum și utilizarea swap-ului:
$ free -h
partiție Swap
acuratețea faptică a acestui articol sau secțiune este contestată.
82
este tipul de partiție swap pe MBR, nu există autodetecție partiție swap pe MBR. Comenzile / TRIM pe partițiile swap par să fie emise automat de Kernel dacă sunt acceptate, consultați ghidurile de implementare Fedora. (Discutați în discuție: Swap # Clarify swap discovery) o partiție swap poate fi creată cu majoritatea instrumentelor de partiționare GNU / Linux. Partițiile Swap sunt de obicei desemnate ca tip 82
. Chiar dacă este posibil să utilizați orice tip de partiție ca swap, este recomandat să utilizați tipul 82
în majoritatea cazurilor, deoarece systemd îl va detecta automat și îl va monta (vezi mai jos).
pentru a configura o partiție ca zonă de swap Linux, se folosește comanda mkswap(8). De exemplu:
# mkswap /dev/sdxy
pentru a activa dispozitivul pentru paginare:
# swapon /dev/sdxy
pentru a activa această partiție swap la pornire, Adăugați o intrare la /etc/fstab
:
UUID=device_UUID none swap defaults 0 0
undedevice_UUID
este UUID-ul spațiului swap.
consultați fstab pentru sintaxa fișierului.
- intrarea fstab este opțională dacă partiția swap este localizată pe un dispozitiv care utilizează GPT. A se vedea subsecțiunea următoare.
- dacă utilizați un SSD cu suport TRIM, luați în considerare utilizarea
discard
în linia de swap din fstab. Dacă activați swap manual cu swapon, utilizând parametrul-d
--discard
se obține același lucru. A se vedea swapon(8) pentru detalii.
activarea prin systemd
systemd activează partițiile swap bazate pe două mecanisme diferite. Ambele sunt executabile în/usr/lib/systemd/system-generators
. Generatoarele sunt rulate la pornire și creează unități systemd native pentru monturi. Primul, systemd-fstab-generator
, citește fstab pentru a genera unități, inclusiv o unitate pentru swap. Al doilea,systemd-gpt-auto-generator
inspectează discul rădăcină pentru a genera unități. Funcționează numai pe discuri GPT și poate identifica partițiile swap după tipul lor GUID, vezi systemd#GPT partition automounting pentru mai multe informații.
dezactivarea swap-ului
pentru a dezactiva spațiul de swap specific:
# swapoff /dev/sdxy
utilizați alternativ comutatorul-a
pentru a dezactiva tot spațiul de swap.
deoarece swap este gestionat de systemd, acesta va fi activat din nou la următoarea pornire a sistemului. Pentru a dezactiva permanent activarea automată a spațiului swap detectat, rulați systemctl --type swap
pentru a găsi responsabilul .schimbați unitatea și mascați-o.
fișier Swap
ca alternativă la crearea unei partiții întregi, un fișier swap oferă posibilitatea de a-și varia dimensiunea din mers și este mai ușor eliminat cu totul. Acest lucru poate fi de dorit în special dacă spațiul pe disc este la o primă (de exemplu, un SSD de dimensiuni modeste).
manual
Creare fișier Swap
utilizați dd pentru a crea un fișier swap de dimensiunea dorită. De exemplu, crearea unui fișier swap de 512 MiB:
# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
Setați permisiunile potrivite (un fișier swap care poate fi citit în lume este o vulnerabilitate locală uriașă):
# chmod 600 /swapfile
după crearea fișierului de dimensiuni corecte, formatați-l pentru a schimba:
# mkswap /swapfile
activați fișierul swap:
# swapon /swapfile
în cele din urmă, editați configurația fstab pentru a adăuga o intrare pentru fișierul swap:
/etc/fstab
/swapfile none swap defaults 0 0
informații, consultați fstab#utilizare.
- fișierul swap trebuie specificat prin locația sa în sistemul de fișiere, nu prin UUID sau etichetă.
- când utilizați Btrfs, nu uitați să adăugați și subvolumul creat în listă și să eliminați
discard,autodefrag
și opțiunile de compresie.
eliminați fișierul swap
pentru a elimina un fișier swap, acesta trebuie mai întâi oprit și apoi poate fi eliminat:
# swapoff /swapfile# rm -f /swapfile
eliminați în cele din urmă intrarea relevantă din/etc/fstab
.
automat
ZRAM-generator
scopul acestui instrument este crearea de dispozitive zram. Este scris în Rust și se află în GitHub systemd lui. Acesta poate fi instalat cu pachetul zram-generatorAUR.Configurația este simplă și explicată în README.
systemd-swap
systemd-swap este un script pentru crearea de spațiu swap hibrid de swap-uri zram, fișiere swap și partiții swap. Nu este afiliat cu proiectul systemd.
Instalați pachetul systemd-swap. Decomentați și setați swapfc_enabled=1
în secțiunea Chunked a fișierului Swap din /etc/systemd/swap.conf
. Porniți/activați serviciul systemd-swap
.
vizitați pagina autori GitHub pentru mai multe informații și configurarea configurației recomandate.
- dacă jurnalul continuă să afișeze următorul avertisment
systemd-swap: WARN: swapFC: ENOSPC
și nu se creează niciun fișier swap, trebuie să decomentați și să setațiswapfc_force_preallocated=1
în/etc/systemd/swap.conf
. - fișierul swap creat de systemd-swap nu poate fi utilizat cu ușurință pentru hibernare. A se vedea problema systemd-swap 85.
criptare Swap
a se vedea criptarea dm-crypt / Swap.
performanță
operațiunile de Swap sunt de obicei semnificativ mai lente decât accesarea directă a datelor în memoria RAM. Dezactivarea swap-ului în întregime pentru a îmbunătăți performanța poate duce uneori la o degradare, deoarece scade memoria disponibilă pentru cache-urile VFS, provocând I/o de disc mai frecvente și mai costisitoare.
Valorile Swap pot fi ajustate pentru a ajuta performanța:
Swappiness
parametrul swappiness sysctl reprezintă preferința (sau evitarea) kernel-ului de spațiu swap. Swappiness poate avea o valoare între 0 și 200 (max 100 dacă Linux < 5.8), valoarea implicită este 60. O valoare scăzută face ca nucleul să evite schimbarea, o valoare ridicată determină nucleul să încerce să utilizeze spațiul swap, iar o valoare de 100 înseamnă că costul IO este egal. Utilizarea unei valori scăzute pe o memorie suficientă este cunoscută pentru a îmbunătăți capacitatea de reacție pe multe sisteme.
pentru a verifica valoarea swappiness curentă:
$ sysctl vm.swappiness
alternativ, fișierele /sys/fs/cgroup/memory/memory.swappiness
sau /proc/sys/vm/swappiness
pot fi citite pentru a obține valoarea întreagă brută.
/proc
este mult mai puțin organizat și este păstrat doar în scopuri de compatibilitate, sunteți încurajat să utilizați /sys
în schimb.pentru a seta temporar valoarea swappiness:
# sysctl -w vm.swappiness=10
pentru a seta permanent valoarea swappiness, creați un sysctl.D (5) Fișier de configurare. De exemplu:
/etc/sysctl.d / 99-swappiness.conf
vm.swappiness = 10
pentru a testa și mai multe despre motivul pentru care acest lucru poate funcționa, aruncați o privire la acest articol.
presiune cache VFS
un alt parametru sysctl care afectează performanța swap estevm.vfs_cache_pressure
, care controlează tendința kernel-ului de a recupera memoria care este utilizată pentru cache-ul cache-urilor VFS, față de pagecache și swap. Creșterea acestei valori crește rata la care sunt recuperate cache-urile VFS. Pentru mai multe informații, consultați documentația kernel-ului Linux.
prioritate
Dacă aveți mai multe fișiere swap sau partiții swap, ar trebui să luați în considerare atribuirea unei valori de prioritate (de la 0 la 32767) pentru fiecare zonă swap. Sistemul va utiliza zone de swap cu prioritate mai mare înainte de a utiliza zone de swap cu prioritate mai mică. De exemplu, dacă aveți un disc mai rapid (/dev/sda
) și un disc mai lent (/dev/sdb
), atribuiți o prioritate mai mare zonei de swap situate pe cel mai rapid dispozitiv. Prioritățile pot fi atribuite în fstab prinpri
parametru:
/dev/sda1 none swap defaults,pri=100 0 0/dev/sdb2 none swap defaults,pri=10 0 0
sau prin --priority
parametru de swapon:
# swapon --priority 100 /dev/sda1
Dacă două sau mai multe zone au aceeași prioritate și este cea mai mare prioritate disponibilă, paginile sunt alocate pe o bază rotundă între ele.
folosind zswap sau zram
Zswap este o caracteristică de kernel Linux care oferă o memorie cache de scriere înapoi comprimată pentru paginile schimbate. Aceasta crește performanța și scade operațiile IO. ZRAM creează un fișier Swap comprimat virtual în memorie ca alternativă la un fișier swap pe disc.
Striping
nu este necesară utilizarea RAID din motive de performanță swap. Kernel-ul în sine poate schimba banda pe mai multe dispozitive, dacă le dați aceeași prioritate în fișierul /etc/fstab
. Consultați software-RAID HOWTO pentru detalii.