I DALIS: "GELEŽIES" OPTIMIZAVIMAS SERVERIO ARCHITEKTŪROS MANIFESTAS: NUO STALČIŲ IKI ENTERPRISE KLASĖS INFRASTRUKTŪROS
ĮŽANGA: DIY FILOSOFIJA IR ENTERPRISE ĮRANGA – TOBULAS DERINYS
Kodėl "pasidaryk pats" su profesionalia įranga yra vienintelis logiškas kelias
Informacinėse technologijose egzistuoja keista dichotomija: vieni renkasi pigius vartotojiškus komponentus ir stebisi, kodėl sistema užlūžta po trijų mėnesių; kiti perka brangiausią enterprise įrangą ir paleidžia ant jos vieną "WordPress" svetainę, išnaudodami vos 2% pajėgumo. Abu keliai yra klaidingi. Tikrasis menas yra sujungti "pasidaryk pats" (DIY) laisvę, kūrybiškumą ir gilų supratimą su enterprise įrangos patikimumu, našumu ir ilgaamžiškumu. Tai nėra kompromisas – tai sinergija.
Kodėl enterprise įranga? Nes ji sukurta veikti 24/7/365 neprarasdama našumo. Jos komponentai atrenkami griežčiausiomis kokybės kontrolės sąlygomis, o BIOS ir firmvaras yra išbandomi dešimtimis tūkstančių valandų. Vartotojiška įranga, deja, dažnai suprojektuota taupant – prastesni kondensatoriai, silpnesnės aušinimo sistemos, mažesnis atminties klaidų toleravimas. Namų serveriui, kuris turi veikti kaip šeimos duomenų saugykla, medijos centras, stebėjimo sistema ir dar dešimt funkcijų, stabilumas nėra prabanga – tai būtinybė.
Kita vertus, kodėl DIY? Nes enterprise pasaulis dažnai yra uždarų dėžių pasaulis. Jie parduoda jums techninę įrangą, bet nori, kad už papildomą mokestį samdytumėte jų inžinierius kiekvienam nustatymui. DIY mąstymas reiškia, kad jūs valdote kiekvieną bitą, kiekvieną konfigūracijos failą, kiekvieną grandinę. Jūs suprantate, kodėl kažkas veikia taip, o ne kitaip. Jūs nesate priklausomas nuo trečiųjų šalių pagalbos skambučių. Kai sistema sugenda (o ji sugenda – tai neišvengiama), jūs žinote, nuo ko pradėti paiešką, nes patys kūrėte architektūrą.
Fujitsu PRIMERGY TX2550 M5: Ne pirkimas, o projekto pradas
Kai įsigyjate serverį, dauguma galvoja apie tai kaip apie pabaigą – "nusipirkau, įdiegiau, veikia". Bet TX2550 M5 atveju tai buvo ne pabaiga, o pirmasis architektūrinio sprendimo taškas. Tai ne "geležies gabalas", o platforma, ant kurios kursite savo skaitmeninį pasaulį. Šis serveris buvo pasirinktas ne dėl kainos ar mados, o dėl konkrečių savybių, kurios idealiai atitinka "hibridinio" namų/enterprise naudojimo scenarijų.
Pirma, jo modulinė architektūra. TX2550 M5 leidžia keisti procesorius, atmintį, saugyklos valdiklius ir tinklo plokštes be specialių įrankių. Tai reiškia, kad serveris augs kartu su jūsų poreikiais. Antra, jo triukšmo lygis – tai vienas iš tyliausių stovimų (tower) serverių rinkoje. Jis gali stovėti svetainės kampe, o ne priverstiniame šaldymo ore, kaip dauguma 1U ar 2U RACK modelių. Trečia, jo I/O pralaidumas – 16 SATA/SAS prievadų, 6 PCIe 3.0 lizdai, dvi integruotos 10GbE sąsajos – tai suteikia erdvės eksperimentams, kurių nepasiūlytų joks vartotojiškas "NAS" įrenginys.
Bet svarbiausia – tai simbolinis žingsnis. Įsigydamas TX2550 M5, jūs sakote: "Aš rimtai žiūriu į savo duomenis, savo projektus ir savo ateitį." Tai yra manifestas, kad namų infrastruktūra gali ir turi būti kuriama profesionaliais standartais, išlaikant asmeninį prisilietimą. Tai tiltas tarp hobio ir profesijos, tarp žaislo ir įrankio.
I DALIS: "GELEŽIES" OPTIMIZAVIMAS
96 GB RAM konfigūracijos analizė: Kodėl daugiau nėra visada geriau
96 GB darbinės atminties gali atrodyti kaip perteklius namų serveriui, bet tik tiems, kurie nemato viso vaizdo. Tai ne atminties kiekis, o atminties architektūra. Šiuo atveju naudojama šešių 16 GB DDR4 ECC modulių konfigūracija, išdėstyta taip, kad maksimaliai išnaudotų procesoriaus atminties valdiklius. Kodėl šeši, o ne keturi ar aštuoni? Atsakymas slypi kanalų architektūroje.
"Intel Xeon" procesoriai turi šešis atminties kanalus. Tai reiškia, kad norint pasiekti maksimalų pralaidumą, idealu turėti po vieną modulį kiekviename kanale. Šeši moduliai užtikrina, kad procesorius galėtų vienu metu pasiekti visus kanalus, o ne laukti, kol vienas kanalas bus apkrautas, o kiti tušti. Praktiškai tai reiškia, kad virtualių mašinų migracija, didelių duomenų bazių užklausos ir daugialypės terpės transkodavimas vyksta sklandžiau, nes atminties pralaidumas yra pilnai išnaudojamas.
Be to, ECC (Error-Correcting Code) atmintis yra ne prabanga, o būtinybė, kai kalbame apie duomenų vientisumą. Namų serveriuose, kuriuose nėra reguliarių atsarginių kopijų arba jos daromos retai, viena bito klaida gali sugadinti visą failų sistemą. ECC aptinka ir ištaiso daugumą atminties klaidų, užkirsdama kelią katastrofoms. 96 GB taip pat leidžia naudoti "ZFS" failų sistemą su dideliu talpyklos (ARC) dydžiu, kas žymiai pagreitina prieigą prie dažnai naudojamų duomenų ir sumažina apkrovą 16 HDD diskų NAS saugyklai.
Xeon Silver 4214R: Kodėl šis "workhorse" yra aukso vidurys
"Intel Xeon Silver 4214R" yra 12 branduolių, 24 gijų procesorius, veikiantis 2.4 GHz baziniu dažniu ir galintis pasiekti 3.5 GHz turbo režimu. Šiame kontekste jis atlieka ne "sprintinio", o "maratoninio" bėgiko vaidmenį. 12 branduolių leidžia vienu metu vykdyti kelias virtualias mašinas, LXC konteinerius, atsarginių kopijų darbus ir medijos srautą, išlaikant sistemą reaguojančią.
Kodėl gi ne aukštesnio dažnio procesorius? Atsakymas – šilumos biudžetas ir energijos efektyvumas. 4214R turi 100 W TDP (Thermal Design Power), o tai reiškia, kad jį galima efektyviai aušinti be garsių ventiliatorių. Namų aplinkoje tai kritiška. Be to, šis procesorius palaiko "AVX-512" instrukcijas, kurios yra naudingos virtualizacijai, kriptografijai ir tam tikrų tipų duomenų apdorojimui. Tai ne greičiausias, ne pats galingiausias, bet pats subalansuotas procesorius savo klasėje – tikras "workhorse", kuris gali traukti krovinius metų metus be pertraukų.
hdparm ir 16x HDD NAS saugyklos "spin down" logika
Vienas didžiausių iššūkių su 16 diskų NAS saugykla yra energijos suvartojimas ir triukšmas. Šie diskai nėra sisteminiai – jie skirti vien tik duomenų laikymui: medijos bibliotekai, atsarginėms kopijoms, failų archyvui. 16 diskų, veikiančių 24/7, gali suvartoti apie 100-150 W tik diskuose, jau nekalbant apie šilumą. Todėl "spin down" (disko stabdymo) logika yra esminė. Tačiau tai nėra paprastas įjungimo/išjungimo klausimas – per dažnas diskų užvedimas ir stabdymas juos sugadina greičiau nei nuolatinis darbas.
Čia naudojama sudėtinga logika, valdoma per hdparm ir asmeninius scenarijus. Pagrindinis principas – diskai yra suskirstyti į grupes pagal jų paskirtį. NAS masyvo diskai turi 30 minučių delsa prieš užmiegant, bet jei sistema aptinka, kad bent vienas diskas iš masyvo yra aktyvus (pavyzdžiui, vyksta atsarginė kopija arba srautinis medijos įrašymas), likusieji taip pat lieka aktyvūs, kad išvengtų konvejerinio užvedimo.
Konkretus hdparm nustatymo pavyzdys:
bash#!/bin/bash
# Disko stabdymo logika - /usr/local/bin/disk_power.sh
# Nustatome 20 minučių delsa (120 sekundžių * 10 = 1200 sekundžių = 20 min.)
# -S 120 nustato laiką, po kurio diskas užmiegama (120 * 5 sek = 600 sek = 10 min.)
# Mūsų atveju naudojame -S 180 (15 minučių)
# Tik NAS saugyklos diskai, sisteminiai diskai (SSD) šios logikos nepaklūsta
DISK_LIST="sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn sdo sdp sdq"
for disk in $DISK_LIST; do
# Tikriname, ar diskas šiuo metu yra aktyvus
ACTIVITY=$(sudo hdparm -C /dev/$disk | grep -o "active\|standby")
if [ "$ACTIVITY" == "active" ]; then
# Jei aktyvus, nustatome laikmatį
sudo hdparm -S 180 /dev/$disk
logger "DISK_POWER: /dev/$disk timeout set to 15 minutes"
else
# Jei jau miega, nieko nedarome
logger "DISK_POWER: /dev/$disk already in standby"
fi
done
Išmanioji logika su našumo stebėjimu:
Kad išvengtume "thrashing" efekto (kai diskas nuolat užvedamas ir stabdomas), sukuriame scenarijų, kuris stebi bendrą masyvo aktyvumą:
bash#!/bin/bash
# Išmanusis masyvo valdymas - /usr/local/bin/smart_array.sh
# Jei bent vienas diskas iš masyvo yra aktyvus, visi masyvo diskai
# lieka pabudinti bent 5 minutes, kad išvengtume pakartotinio užvedimo
ARRAY_DISKS="sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn sdo sdp sdq"
while true; do
ACTIVE_COUNT=0
for disk in $ARRAY_DISKS; do
STATE=$(sudo hdparm -C /dev/$disk | grep -o "active")
if [ "$STATE" == "active" ]; then
((ACTIVE_COUNT++))
fi
done
if [ $ACTIVE_COUNT -gt 0 ]; then
# Jei yra aktyvių diskų, nustatome visiems laikmatį 30 min.
for disk in $ARRAY_DISKS; do
sudo hdparm -S 360 /dev/$disk
done
logger "SMART_ARRAY: Array active ($ACTIVE_COUNT disks), timeout extended to 30 min"
fi
sleep 300 # Tikriname kas 5 minutes
done
SSD apsauga: /var/log perkėlimas į tmpfs
SSD diskai yra greiti, bet jų gyvavimo trukmė priklauso nuo įrašymo ciklų. Nuolatinis logų rašymas į /var/log gali žymiai sutrumpinti SSD tarnavimo laiką. Sprendimas – perkelti logus į tmpfs (RAM diska), kuris yra lėtesnis įrašymo prasme, bet nesunaudoja SSD resursų. Taip pat tai padidina sistemos našumą, nes logų rašymas nebelaukia disko operacijų.
Pirmas žingsnis – modifikuojame /etc/fstab:
bash# /etc/fstab pridėjimas
tmpfs /var/log tmpfs defaults,noatime,nosuid,nodev,noexec,mode=0755,size=2G 0 0
Šis nustatymas sukuria 2 GB dydžio RAM diską, kuris bus prijungtas kaip /var/log. Parametras noatime neleidžia rašyti paskutinio prisijungimo laiko, kas sumažina nereikalingus įrašymus. nosuid, nodev, noexec padidina saugumą.
Antras žingsnis – logų persiuntimas į nuolatinę saugyklą:
Kadangi tmpfs netrunka perkrovimo metu, turime užtikrinti, kad svarbūs logai būtų išsaugoti prieš sistemą išjungiant. Tam sukuriame systemd servisą:
bash# /etc/systemd/system/log-sync.service
[Unit]
Description=Sync logs to persistent storage before shutdown
DefaultDependencies=false
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/sync_logs.sh
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target
sync_logs.sh turinys:
bash#!/bin/bash
# /usr/local/bin/sync_logs.sh
LOG_DEST="/mnt/nas/logs/$(date +%Y%m%d_%H%M%S).log"
mkdir -p /mnt/nas/logs/
cp -r /var/log/*.log $LOG_DEST 2>/dev/null
# Išvalome senesnius nei 30 dienų logus iš NAS saugyklos
find /mnt/nas/logs/ -name "*.log" -mtime +30 -delete
logger "LOG_SYNC: Logs synced to $LOG_DEST"
Tačiau net ir geriausiai sukonfigūruota "geležis" yra tik pamatas. Tikrasis serverio potencialas atsiskleidžia tik tada, kai aparatinė įranga susijungia su išmaniu tinklu ir saugumo architektūra – tai ir bus kitos dalies tema.