Å ajÄ rakstÄ es runÄÅ”u par situÄciju, kas nesen notika ar vienu no mÅ«su VPS mÄkonÄ« esoÅ”ajiem serveriem, kas mani samulsinÄja vairÄkas stundas. Es konfigurÄju un veicu Linux serveru problÄmu novÄrÅ”anu aptuveni 15 gadus, taÄu Å”is gadÄ«jums manÄ praksÄ nekÄdi neiederas - es izdarÄ«ju vairÄkus nepareizus pieÅÄmumus un mazliet izmisumÄ, pirms varÄju pareizi noteikt problÄmas cÄloni un to atrisinÄt. .
Preambula
Darbojamies ar vidÄja izmÄra mÄkoni, kuru veidojam uz standarta serveriem ar Å”Ädu konfigurÄciju - 32 kodoli, 256 GB RAM un 4500TB PCI-E Intel P4 NVMe diskdzinis. Mums ļoti patÄ«k Ŕī konfigurÄcija, jo tÄ novÄrÅ” nepiecieÅ”amÄ«bu uztraukties par IO pieskaitÄmajÄm izmaksÄm, nodroÅ”inot pareizos ierobežojumus VM instances tipa lÄ«menÄ«. TÄ kÄ NVMe Intel
MÄs esam vieni no tiem vecticÄ«bniekiem, kuri VM sÄjumu glabÄÅ”anai neizmanto hiperkonverÄ£Ätu SDN un citas stilÄ«gas, modernas, jaunieÅ”u lietas, uzskatot, ka jo vienkÄrÅ”Äka sistÄma, jo vieglÄk to novÄrst apstÄkļos, kad āgalvenais guru ir aizgÄjis. uz kalniem." RezultÄtÄ mÄs glabÄjam VM sÄjumus QCOW2 formÄtÄ XFS vai EXT4 formÄtÄ, kas tiek izvietots virs LVM2.
MÅ«s piespiež izmantot arÄ« QCOW2 produkts, ko izmantojam orÄ·estrÄÅ”anai - Apache CloudStack.
Lai veiktu dublÄÅ”anu, mÄs uzÅemam pilnu skaļuma attÄlu kÄ LVM2 momentuzÅÄmumu (jÄ, mÄs zinÄm, ka LVM2 momentuzÅÄmumi ir lÄni, taÄu Intel P4500 mums palÄ«dz arÄ« Å”eit). MÄs darÄm lvmcreate -s ..
un ar palīdzību dd
mÄs nosÅ«tÄm rezerves kopiju uz attÄlo serveri ar ZFS krÄtuvi. Å eit mÄs joprojÄm esam nedaudz progresÄ«vi - galu galÄ ZFS var uzglabÄt datus saspiestÄ veidÄ, un mÄs varam tos Ätri atjaunot, izmantojot DD
vai iegÅ«stiet atseviŔķus VM sÄjumus, izmantojot mount -o loop ...
.
Protams, jÅ«s varat noÅemt nevis pilnu LVM2 sÄjuma attÄlu, bet gan uzstÄdÄ«t failu sistÄmu
RO
un kopÄt paÅ”us QCOW2 attÄlus, tomÄr mÄs saskÄrÄmies ar faktu, ka XFS no tÄ kļuva slikts, un ne uzreiz, bet gan neparedzamÄ veidÄ. Mums ļoti nepatÄ«k, ja hipervizoru saimnieki pÄkÅ”Åi āpielÄ«pā nedÄļas nogalÄs, naktÄ«s vai brÄ«vdienÄs kļūdu dÄļ, kuras nav skaidrs, kad tÄs notiks. TÄpÄc XFS mÄs neizmantojam momentuzÅÄmuma montÄžuRO
lai iegÅ«tu apjomus, mÄs vienkÄrÅ”i nokopÄjam visu LVM2 sÄjumu.
DublÄÅ”anas Ätrumu uz rezerves serveri mÅ«su gadÄ«jumÄ nosaka rezerves servera veiktspÄja, kas ir aptuveni 600-800 MB/s nesaspiežamiem datiem, vÄl viens ierobežotÄjs ir 10Gbit/s kanÄls, ar kuru ir savienots rezerves serveris. uz klasteru.
Å ajÄ gadÄ«jumÄ 8 hipervizora serveru rezerves kopijas vienlaikus tiek augÅ”upielÄdÄtas vienÄ rezerves serverÄ«. TÄdÄjÄdi rezerves servera diska un tÄ«kla apakÅ”sistÄmas, bÅ«dami lÄnÄkas, neļauj hipervizora saimniekdatoru diska apakÅ”sistÄmÄm pÄrslogot, jo tÄs vienkÄrÅ”i nespÄj apstrÄdÄt, teiksim, 8 GB/s, ko hipervizora resursdatori var viegli. ražot.
AugstÄk minÄtais kopÄÅ”anas process ir ļoti bÅ«tisks tÄlÄkajam stÄstam, tai skaitÄ detaļÄm - izmantojot Ätro Intel P4500 disku, izmantojot NFS un, iespÄjams, izmantojot ZFS.
Rezerves stÄsts
KatrÄ hipervizora mezglÄ mums ir mazs SWAP nodalÄ«jums 8 GB lielumÄ, un mÄs āizlaižamā paÅ”u hipervizora mezglu, izmantojot DD
no atsauces attÄla. SistÄmas apjomam serveros mÄs izmantojam 2xSATA SSD RAID1 vai 2xSAS HDD RAID1 uz LSI vai HP aparatÅ«ras kontrollera. KopumÄ mums ir vienalga, kas ir iekÅ”Ä, jo mÅ«su sistÄmas apjoms darbojas āgandrÄ«z tikai lasÄ«Å”anasā režīmÄ, izÅemot SWAP. Un tÄ kÄ mums serverÄ« ir daudz RAM un tÄ ir 30ā40% bez maksas, mÄs nedomÄjam par SWAP.
DublÄÅ”anas process. Å is uzdevums izskatÄs apmÄram Å”Ädi:
#!/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
Å
emiet ionice -c3
, patiesÄ«bÄ Å”Ä« lieta ir pilnÄ«gi bezjÄdzÄ«ga NVMe ierÄ«cÄm, jo āātÄm ir iestatÄ«ts IO plÄnotÄjs:
cat /sys/block/nvme0n1/queue/scheduler
[none]
TomÄr mums ir vairÄki mantoti mezgli ar parastajiem SSD RAID, tiem tas ir svarÄ«gi, tÄpÄc tie pÄrvietojas KÄ IR. KopumÄ tas ir tikai interesants koda fragments, kas izskaidro bezjÄdzÄ«bu ionice
Å”Ädas konfigurÄcijas gadÄ«jumÄ.
PievÄrsiet uzmanÄ«bu karogam iflag=direct
par DD
. MÄs izmantojam tieÅ”o IO, apejot bufera keÅ”atmiÅu, lai lasÄ«Å”anas laikÄ izvairÄ«tos no nevajadzÄ«gas IO buferu nomaiÅas. tomÄr oflag=direct
mÄs to nedarÄm, jo, to lietojot, esam saskÄruÅ”ies ar ZFS veiktspÄjas problÄmÄm.
Å o shÄmu veiksmÄ«gi lietojam jau vairÄkus gadus bez problÄmÄm.
Un tad tas sÄkÄs... MÄs atklÄjÄm, ka viens no mezgliem vairs nav dublÄts, un iepriekÅ”Äjais darbojÄs ar milzÄ«gu IOWAIT 50%. MÄÄ£inot saprast, kÄpÄc kopÄÅ”ana nenotiek, mÄs saskÄrÄmies ar Å”Ädu parÄdÄ«bu:
Volume group "images" not found
SÄkÄm domÄt par āIntel P4500 beigasā, tomÄr pirms servera izslÄgÅ”anas, lai nomainÄ«tu disku, tomÄr bija nepiecieÅ”ams veikt dublÄÅ”anu. MÄs labojÄm LVM2, atjaunojot metadatus no LVM2 dublÄjuma:
vgcfgrestore images
MÄs uzsÄkÄm dublÄÅ”anu un redzÄjÄm Å”o eļļas gleznu:
Atkal bijÄm ļoti skumji ā bija skaidrs, ka tÄ dzÄ«vot nevaram, jo āācietÄ«s visi VPS, tas nozÄ«mÄ, ka cietÄ«sim arÄ« mÄs. Kas notika, ir pilnÄ«gi neskaidrs - iostat
parÄdÄ«ja nožÄlojamu IOPS un augstÄko IOWAIT. Nebija citu ideju kÄ vien ānomainÄsim NVMeā, taÄu ieskats radÄs tieÅ”i laikÄ.
SituÄcijas analÄ«ze soli pa solim
VÄsturisks žurnÄls. Dažas dienas iepriekÅ” Å”ajÄ serverÄ« bija nepiecieÅ”ams izveidot lielu VPS ar 128 GB RAM. Å Ä·ita, ka atmiÅas ir pietiekami daudz, taÄu, lai bÅ«tu droŔībÄ, mÄs pieŔķīrÄm vÄl 32 GB mijmaiÅas nodalÄ«jumam. VPS tika izveidots, veiksmÄ«gi izpildÄ«ja savu uzdevumu un incidents tika aizmirsts, bet SWAP nodalÄ«jums palika.
KonfigurÄcijas lÄ«dzekļi. Visiem mÄkoÅa serveriem parametrs vm.swappiness
tika iestatÄ«ts uz noklusÄjuma 60
. Un SWAP tika izveidots SAS HDD RAID1.
Kas notika (pÄc redaktoru domÄm). Veicot dublÄÅ”anu DD
radÄ«ja daudz rakstÄ«Å”anas datu, kas tika ievietoti RAM buferos pirms rakstÄ«Å”anas uz NFS. SistÄmas kodols, vadoties pÄc politikas swappiness
, pÄrvietoja daudzas VPS atmiÅas lapas uz mijmaiÅas apgabalu, kas atradÄs lÄnÄ HDD RAID1 sÄjumÄ. Tas noveda pie tÄ, ka IOWAIT ļoti strauji pieauga, bet ne IO NVMe, bet gan IO HDD RAID1 dÄļ.
KÄ problÄma tika atrisinÄta. 32 GB mijmaiÅas nodalÄ«jums tika atspÄjots. Tas aizÅÄma 16 stundas; varat lasÄ«t atseviŔķi par to, kÄ un kÄpÄc SWAP izslÄdzas tik lÄni. IestatÄ«jumi ir mainÄ«ti swappiness
lÄ«dz vÄrtÄ«bai, kas vienÄda ar 5
pa visu mÄkoni.
KÄ tas varÄja nenotikt?. PirmkÄrt, ja SWAP bÅ«tu SSD RAID vai NVMe ierÄ«cÄ, un, otrkÄrt, ja nebÅ«tu NVMe ierÄ«ces, bet gan lÄnÄka ierÄ«ce, kas neradÄ«tu tÄdu datu apjomu - ironiskÄ kÄrtÄ problÄma radÄs tÄpÄc, ka NVMe ir pÄrÄk Ätrs.
PÄc tam viss sÄka darboties kÄ iepriekÅ” - ar nulli IOWAIT.
Avots: www.habr.com