Palju vaba RAM-i, NVMe Intel P4500 ja kĂ”ik tĂ”mbab tĂ€iesti kinni — lugu ebaĂ”nnestunud vahetusruumi jagamise lisamisest.

Selles artiklis rÀÀgin olukorrast, mis hiljuti juhtus ĂŒhe meie VPS-i pilveserveriga, mis pani mind mitu tundi auku. Olen umbes 15 aastat tegelenud Linuxi serverite seadistamise ja tĂ”rkeotsinguga, kuid see juhtum ei mahtunud absoluutselt minu tavapĂ€rasesse praktikas — tegin mitmeid vale eeldusi ja olin veidi meeleheitel, enne kui suutsin Ă”igesti tuvastada probleemi pĂ”hjuse ja selle lahendada.

Eesliide

Kasutame keskmise suurusega pilve, mille ehitame tĂŒĂŒpiliste serverite jĂ€rgmise konfiguratsiooni peale — 32 tuuma, 256 GB RAM-i ja 4TB PCI-E Intel P4500 NVMe mĂ€luseadet. Meile meeldib see konfiguratsioon vĂ€ga, kuna see vĂ”imaldab meil mitte muretseda IO puudumise pĂ€rast, tagades Ă”iged piirangud VM-i (virtuaalmasinate) tĂŒĂŒbi tasemel. Kuna Intel NVMe P4500 omab muljetavaldavat jĂ”udlust, saame samaaegselt pakkuda nii tĂ€ielikku IOPS-i masinatele kui ka varundada andmeid varundusseeriale nulli IOWAIT-iga.

Me kuulusime nende seas, kes ei kasuta hĂŒperkonvergeeritud SDN-e ja muid stiilseid, moodsaid, noortepĂ€raseid vidinaid VM-i mahutamiseks, arvestades, et mida lihtsam on sĂŒsteem, seda lihtsam on seda tĂ”rkeotsida olukordades "peamine guru lĂ€ks mĂ€gedesse". LĂ”ppkokkuvĂ”ttes salvestame VM-i mahud QCOW2 formaadis XFS vĂ”i EXT4, mis on paigaldatud LVM2 peale.

QCOW2 kasutamine on meile hĂ€davajalik ka orkestrimise toote tĂ”ttu — Apache CloudStack.

Varundamise teostamiseks teeme tĂ€ieliku mahupildi LVM2 snapshot'ina (jah, me teame, et LVM2 snapshot'id on aeglased, kuid Intel P4500 aitab meid ka siin). Teeme lvmcreate -s .. ja saadame varukoopia kaugserverisse ZFS-i salvestusse. Siin oleme siiski veidi progressiivsed — ZFS suudab andmeid salvestada kokku pressitud kujul ja saame neid kiiresti taastada lĂ€bi dd vĂ”i eraldada VM-i mahud lĂ€bi DD mount -o loop ... Muidugi saab teha ka mitte tĂ€ielikke LVM2 mahtude pilte, vaid mountida failisĂŒsteemi 'RO' reĆŸiimis..

RO RO ja kopeerida QCOW2 pilte, oleme silmitsi seisnud olukordadega, kus XFS hakkab toimima halvasti, ja seda mitte kohe, vaid ettearvamatult. Me ei meeldi, kui hĂŒperviisorid "hanguvad" ootamatult nĂ€dalavahetustel, öösel vĂ”i pĂŒhal, pĂ”hjustatud vigadest, mille toimumise aeg on teadmata. SeetĂ”ttu ei kasuta me XFS-i jaoks snapshotide mountimist. RO mahselt mahutite vĂ€ljavĂ”tmiseks, vaid kopeerime kogu LVM2 mahuti.

Varundamise kiirus varundusseerial mÀÀratakse meie puhul varundusseeria serveri jĂ”udluse jĂ€rgi, mis on umbes 600-800 MB/s mittekompressitud andmete jaoks, edasine piirang on 10Gbit/s kanal, millega varundusseeria server on klastriga ĂŒhendatud.

Selle juures laadivad ĂŒhele varundusseerial serverile korraga varukoopiad 8 serverid hĂŒperviisorit. Seega, kuna varundusseeria serveri kettasĂŒsteem ja vĂ”rgu sĂŒsteem on aeglasemad, ei vĂ”imalda nad ĂŒlekoormata hĂŒperviisorite kettasĂŒsteeme, kuna nad lihtsalt ei suuda töödelda nĂ€iteks 8 GB/s, mida hĂŒperviisorid mureta suudavad anda.

Ülalnimetatud kopeerimisprotsess on edasise narratiivi jaoks vĂ€ga oluline, sealhulgas ĂŒksikasjad — kiire Intel P4500 salvesti kasutamine, NFS-i kasutamine ja tĂ”enĂ€oliselt ka ZFS-i kasutamine.

Varundamise lugu.

Igal hĂŒperviisori sĂ”lmel on meil vĂ€ike 8 GB SWAP partitsioon, ja ise hĂŒperviisor jaotatakse meile DD standardpildist. Serverite sĂŒsteemide mahuti jaoks kasutame 2xSATA SSD RAID1 vĂ”i 2xSAS HDD RAID1 LSI vĂ”i HP riistvarakontrolleril. Üldiselt ei huvita meid, mis seal sees on, kuna meie sĂŒsteemide mahuti töötab peaaegu "readonly" reĆŸiimis, vĂ€lja arvatud SWAP. Ja kuna meie serveris on vĂ€ga palju RAM-i ja see on 30-40% vaba, ei mĂ”tle me SWAP-ile.

Varundamise loomise protsess.. See ĂŒlesanne nĂ€eb vĂ€lja umbes nii:

#!/bin/bash

mkdir -p /mnt/backups/volumes

DIR=/mnt/images-snap
VOL=images/volume
DATE=$(date "+%d")
HOSTNAME=$(hostname)

lvcreate -s -n $VOL-snap -l100%FREE $VOL
ionice -c3 dd iflag=direct if=/dev/$VOL-snap bs=1M of=/mnt/backups/volumes/$HOSTNAME-$DATE.raw
lvremove -f $VOL-snap

Pange tÀhele ionice -c3, tegelikult on see NVMe-de jaoks tÀiesti kasutu, kuna IO ajakava on nende jaoks seadistatud jÀrgnevalt:

cat /sys/block/nvme0n1/queue/scheduler
[none] 

Kuid meil on rida pĂ€randiga sĂ”lmi tavapĂ€raste SSD RAID-idega, nende jaoks on see asjakohane, seega kolib see AS IS. Üldiselt on see lihtsalt huvitav koodijupp, mis selgitab ionice pĂŒĂŒdlusi sellise konfiguratsiooni korral.

Pöörake tĂ€helepanu lipule iflag=direct jaoks DD. Me kasutame direct IO-d vahebufferist mööda, et vĂ€ltida IO vahebufferite asendamise ĂŒlekoormust lugemise ajal. Kuid oflag=direct me ei tee seda, kuna oleme kohanud ZFS-iga seotud jĂ”udlusprobleeme selle kasutamisel.

Oleme seda skeemi edukalt kasutanud juba mitu aastat probleemideta.

Ja siis see algas
 Me avastasime, et ĂŒhe sĂ”lme varundamine ei toiminud enam ning eelmine varundamine toimus kohutava 50% IOWAIT all.

Kogumite gruppi "images" ei leitud

Hakkasime mĂ”tlema, et "Intel P4500 aeg on ĂŒmber", kuid enne serveri vĂ€lja lĂŒlitamist kĂ”vaketta vahetamiseks oli siiski vajalik varundamine lĂ”pule viia. Parandame LVM2 metadata taastamise abil LVM2 varundusest:

vgcfgrestore images

KÀivitasime varundamise ja nÀgime sellist joonist:
Palju vaba RAM-i, NVMe Intel P4500 ja kĂ”ik tĂ”mbab tĂ€iesti kinni — lugu ebaĂ”nnestunud vahetusruumi jagamise lisamisest.

JĂ€lle vĂ€ga kurvaks – oli selge, et niimoodi ei saa elada, kuna kĂ”ik VPS-id kannatavad, ja seega kannatame ka meie. Mis juhtus, oli tĂ€iesti ebaselge – iostat nĂ€itas vaevu elujĂ”ulisi IOPS-e ja ĂŒli kĂ”rget IOWAIT-i. Ideed, peale "asendame NVMe", ei olnud, kuid Ă”igel ajal tuli Ă€kki selgus.

Probleemi analĂŒĂŒs samm-sammult

Ajalugu. MĂ”ned pĂ€evad tagasi oli sellel serveril vajalik luua suur VPS 128 GB RAM-iga. MĂ€lu nĂ€is olevat piisavalt, kuid ettevaatusabinĂ”una eraldati veel 32 GB vahetusmĂ€lu jaoks. VPS loodi, lahendas oma ĂŒlesande ja juhtum unustati, kuid SWAP jaotis jĂ€i.

Konfiguratsiooni omadused. KÔikide pilveserverite parameeter vm.swappiness oli seadistatud vaikeseadmestuseks 60. Ja SWAP loodi SAS HDD RAID1-l.

Mida arvatakse juhtunust (toimetuse arvates). Varundamise kĂ€igus DD edastas palju andmeid kirjutamiseks, mis paigutati RAM-i vahebufferitesse enne NFS-i kirjutamist. SĂŒsteemi tuum, jĂ€rgides swappinesspoliitikat, tĂ”stis palju VPS-i mĂ€lulehti vahetusala, mis asus aeglasel HDD RAID1 mahutul. See pĂ”hjustas IOWAIT-i jĂ€rsu suurenemise, kuid mitte NVMe IO tĂ”ttu, vaid HDD RAID1 IO tĂ”ttu.

Kuidas probleem lahendati. 32 GB vahetusala vĂ€lja lĂŒlitamine vĂ”ttis 16 tundi. Kuidas ja miks see SWAP nii aeglaselt vĂ€lja lĂŒlitub, saab lugeda eraldi. Parameetrid swappiness muudeti vÀÀrtuseks, mis on 5 kogu pilves.

Kuidas see vĂ”is juhtudaEsiteks, kui SWAP oleks SSD RAID vĂ”i NVMe seadmes, teiseks, kui NVMe seadet ei oleks, vaid mingi aeglasem seade, mis ei toodaks nii suurt andmevoogu — iroonia on selles, et probleem tekkis just sellest, et NVMe on liiga kiire.

PĂ€rast seda hakkas kĂ”ik uuesti tööle nagu varem — null IOWAIT'iga.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster