Vaihtotilan lisääminen Ubuntu 18.04:ssä

author
7 minutes, 10 seconds Read

Tämän ohjeen edellisen version on kirjoittanut Justin Ellingwood

Esittely

Yksi helpoimmista tavoista suojautua sovellusten muistin loppumisen aiheuttamilta virheiltä on lisätä palvelimelle vaihtotilaa. Tässä oppaassa käsittelemme, kuinka lisätä swap-tiedosto Ubuntu 18.04 -palvelimeen.

Varoitus: Vaikka swap-tilaa suositellaan yleensä perinteisiä pyöriviä kiintolevyjä käyttäviin järjestelmiin, swap-tilan käyttäminen SSD-levyjen kanssa voi aiheuttaa ongelmia laitteiston heikkenemisessä ajan myötä. Tämän seikan vuoksi emme suosittele swapin ottamista käyttöön DigitalOceanilla tai muilla SSD-tallennustilaa hyödyntävillä palveluntarjoajilla. Se voi vaikuttaa taustalla olevan laitteiston luotettavuuteen sinulle ja naapureillesi. Tämä opas on tarkoitettu viitteeksi käyttäjille, joilla saattaa olla pyöriviä levyjärjestelmiä muualla.

Jos haluat parantaa DigitalOcean-palvelimesi suorituskykyä, suosittelemme Droplet-järjestelmän päivittämistä. Tämä johtaa yleisesti parempiin tuloksiin ja vähentää todennäköisyyttä vaikuttaa laitteisto-ongelmiin, jotka voivat vaikuttaa palveluun.

Mikä on Swap?

Swap on kiintolevyllä oleva alue, joka on nimetty paikaksi, johon käyttöjärjestelmä voi tilapäisesti tallentaa tietoja, joita se ei voi enää säilyttää RAM-muistissa. Periaatteessa tämä antaa sinulle mahdollisuuden lisätä sitä tietomäärää, jonka palvelimesi voi pitää työ ”muistissaan”, tietyin varauksin. Kiintolevyllä olevaa swap-tilaa käytetään lähinnä silloin, kun RAM-muistissa ei ole enää riittävästi tilaa käytössä olevan sovellusdatan säilyttämiseen.

Levylle kirjoitettu tieto on huomattavasti hitaampaa kuin RAM-muistissa säilytettävä tieto, mutta käyttöjärjestelmä pitää käynnissä olevan sovellusdatan mieluummin muistissa ja käyttää swap-tilaa vanhemmalle tiedolle. Kaiken kaikkiaan swap-tilan pitäminen varavaihtoehtona silloin, kun järjestelmän RAM-muisti tyhjenee, voi olla hyvä turvaverkko muistin loppumista koskevia poikkeuksia vastaan järjestelmissä, joissa ei ole käytettävissäSD-muistia.

Vaihe 1 – Järjestelmän tarkistaminen swap-tiedon varalta

Ennen kuin aloitamme, voimme tarkistaa, onko järjestelmässä jo swap-tilaa käytettävissä. Swap-tiedostoja tai swap-osioita voi olla useita, mutta yleensä yhden pitäisi riittää.

Voidaan tarkistaa, onko järjestelmään määritetty swap-tilaa kirjoittamalla:

  • sudo swapon --show

Jos tulostetta ei tule takaisin, tämä tarkoittaa, että järjestelmässä ei ole tällä hetkellä swap-tilaa käytettävissä.

Voit tarkistaa, ettei aktiivista swap-tilaa ole, käyttämällä free-apuohjelmaa:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Kuten näet tulosteen Swap-riviltä, järjestelmässä ei ole aktiivista swap-tilaa.

Vaihe 2 – Käytettävissä olevan tilan tarkistaminen kiintolevyn osiosta

Ennen swap-tiedoston luontia tarkistamme levyn tämänhetkisen tilan käytön varmistaaksemme, että tilaa on riittävästi. Tee tämä kirjoittamalla:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

Laite, jonka Mounted on-sarakkeessa on /, on tässä tapauksessa levymme. Tässä esimerkissä meillä on runsaasti tilaa käytettävissä (vain 1,4G käytössä). Sinun käyttösi on luultavasti erilainen.

Vaikka swap-tilan sopivasta koosta on monia mielipiteitä, se riippuu todella henkilökohtaisista mieltymyksistäsi ja sovellusvaatimuksistasi. Yleensä järjestelmän RAM-muistin määrää vastaava tai kaksinkertainen määrä on hyvä lähtökohta. Toinen hyvä nyrkkisääntö on, että kaikki yli 4G:n swap-tila on luultavasti tarpeeton, jos käytät sitä vain RAM-muistin varajärjestelmänä.

Vaihe 3 – Swap-tiedoston luominen

Nyt kun tiedämme käytettävissä olevan kiintolevytilamme, voimme luoda swap-tiedoston tiedostojärjestelmäämme. Varataan haluamamme kokoinen swap-tiedosto nimeltä swapfile juurihakemistossamme (/).

Swap-tiedoston luominen onnistuu parhaiten fallocate-ohjelmalla. Tämä komento luo välittömästi määritetyn kokoisen tiedoston.

Koska esimerkkimme palvelimessa on 1G RAM-muistia, luomme tässä ohjeessa 1G:n tiedoston. Säädä tämä vastaamaan oman palvelimesi tarpeita:

  • sudo fallocate -l 1G /swapfile

Voidaan tarkistaa, että oikea määrä tilaa on varattu kirjoittamalla:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Tiedostomme on luotu niin, että sille on varattu oikea määrä tilaa.

Vaihe 4 – Vaihtotiedoston käyttöönotto

Nyt kun meillä on oikean kokoinen tiedosto käytettävissä, meidän on itse asiassa muutettava se vaihtotilaksi.

Ensin meidän on lukittava tiedoston käyttöoikeudet niin, että vain käyttäjät, joilla on pääkäyttäjän oikeudet, voivat lukea sen sisältöä. Tämä estää tavallisia käyttäjiä käyttämästä tiedostoa, millä olisi merkittäviä turvallisuusvaikutuksia.

Tehdään tiedosto vain root-käyttäjän käytettävissä kirjoittamalla:

  • sudo chmod 600 /swapfile

Varmennetaan käyttöoikeuksien muutos kirjoittamalla:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Kuten näet, vain root-käyttäjällä on luku- ja kirjoitusliput käytössä.

Voidaan nyt merkitä tiedosto swap-tilaksi kirjoittamalla:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Tiedoston merkitsemisen jälkeen voimme ottaa swap-tiedoston käyttöön, jolloin järjestelmämme voi alkaa käyttää sitä:

  • sudo swapon /swapfile

Varmennetaan, että swap on käytettävissä kirjoittamalla:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

Voimmekin vielä tarkistaa free-apuohjelman tulosteen vahvistaaksemme havaintomme:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

Swap-tiedostomme on perustettu onnistuneesti, ja käyttöjärjestelmämme alkaa käyttää sitä tarpeen mukaan.

Vaihe 5 – Vaihtotiedoston muuttaminen pysyväksi

Viimeaikaiset muutoksemme ovat ottaneet vaihtotiedoston käyttöön nykyistä istuntoa varten. Jos kuitenkin käynnistämme palvelimen uudelleen, se ei säilytä swap-asetuksia automaattisesti. Voimme muuttaa tämän lisäämällä swap-tiedoston /etc/fstab-tiedostoomme.

Varmuuskopioi /etc/fstab-tiedosto siltä varalta, että jokin menee pieleen:

  • sudo cp /etc/fstab /etc/fstab.bak

Lisää swap-tiedoston tiedot /etc/fstab-tiedoston loppuun kirjoittamalla:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Seuraavaksi käymme läpi joitain asetuksia, joita voimme päivittää swap-tilamme säätämiseksi.

Vaihe 6 – Swap-asetusten virittäminen

Voit määrittää muutamia asetuksia, jotka vaikuttavat järjestelmän suorituskykyyn swap-tilaa käsiteltäessä.

Swappiness-ominaisuuden säätäminen

Parametrin swappiness avulla määritetään, kuinka usein järjestelmäsi vaihtaa dataa RAM-muistissa olevasta muistista swap-tilaan. Kyseessä on arvo 0:n ja 100:n välillä, joka edustaa prosenttiosuutta.

Lähellä nollaa olevilla arvoilla ydin ei vaihda dataa levylle, ellei se ole ehdottoman välttämätöntä. Muista, että vuorovaikutus swap-tiedoston kanssa on ”kallista” siinä mielessä, että se kestää paljon kauemmin kuin vuorovaikutus RAM-muistin kanssa, ja se voi aiheuttaa merkittävää suorituskyvyn heikkenemistä. Järjestelmän käskeminen olemaan turvautumatta swap-tiedostoon paljolti tekee järjestelmästäsi yleensä nopeamman.

Lukemat, jotka ovat lähempänä 100:aa, pyrkivät sijoittamaan enemmän dataa swap-tiedostoon pyrkien pitämään enemmän RAM-tilaa vapaana. Riippuen sovelluksesi muistiprofiilista tai siitä, mihin käytät palvelintasi, tämä saattaa olla joissakin tapauksissa parempi vaihtoehto.

Voidaan nähdä nykyinen swappiness-arvo kirjoittamalla:

  • cat /proc/sys/vm/swappiness
Output
60

Käytössä työpöydällä swappiness-asetus 60 ei ole huono arvo. Palvelimelle se kannattaa ehkä siirtää lähemmäs 0:ta.

Voidaan asettaa swappiness-arvo eri arvoon komennolla sysctl.

Voidaan esimerkiksi asettaa swappiness-arvoksi 10 kirjoittamalla:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Tämä asetus säilyy seuraavaan uudelleenkäynnistykseen asti. Voimme asettaa tämän arvon automaattisesti uudelleenkäynnistyksen yhteydessä lisäämällä rivin /etc/sysctl.conf-tiedostoomme:

  • sudo nano /etc/sysctl.conf

Alareunaan voit lisätä:

/etc/sysctl.conf
vm.swappiness=10

Tallenna ja sulje tiedosto, kun olet valmis.

Välimuistipaineen asetuksen säätäminen

Toinen tähän liittyvä arvo, jota saatat haluta muuttaa, on vfs_cache_pressure. Tämä asetus määrittää, kuinka paljon järjestelmä valitsee inode- ja dentry-tietojen välimuistiin tallentamisen muiden tietojen sijaan.

Periaatteessa kyse on tiedostojärjestelmän käyttötiedoista. Näiden tietojen etsiminen on yleensä hyvin kallista ja niitä kysytään hyvin usein, joten ne ovat erinomaisia tietoja järjestelmän välimuistiin. Voit nähdä tämänhetkisen arvon kysymällä uudelleen proc-tiedostojärjestelmästä:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

Nykymuodossaan järjestelmämme poistaa inode-tiedot välimuistista liian nopeasti. Voimme asettaa tämän varovaisempaan asetukseen, kuten 50, kirjoittamalla:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Jälleen, tämä on voimassa vain nykyisen istuntomme ajan. Voimme muuttaa sen lisäämällä sen konfiguraatiotiedostoomme kuten teimme swappiness-asetuksen kanssa:

  • sudo nano /etc/sysctl.conf

Lisää alareunaan rivi, joka määrittää uuden arvosi:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Tallenna ja sulje tiedosto, kun olet valmis.

Johtopäätös

Tässä oppaassa esitettyjen vaiheiden noudattaminen antaa sinulle hieman hengähdystaukoa tapauksissa, jotka muutoin johtaisivat muistin loppumiseen johtaviin poikkeuksiin. Vaihtotilasta voi olla uskomattoman paljon hyötyä joidenkin näiden yleisten ongelmien välttämisessä.

Jos törmäät OOM-virheisiin (muistin loppuminen) tai jos huomaat, että järjestelmäsi ei pysty käyttämään tarvitsemiasi sovelluksia, paras ratkaisu on optimoida sovelluskokoonpanot tai päivittää palvelimesi.

Similar Posts

Vastaa

Sähköpostiosoitettasi ei julkaista.