Portál AbcLinuxu, 1. května 2025 16:30
Po té, co jsem vyměnil server (a upgradnul ho na Jessie) jsem ho zhruba dva měsíce provozoval jen s fleškou. Úžasné bylo, že byl 100% tichý (opravdu 0 dB, žádný ventilátor, vše v pasivu, žádné otáčející se součástky). Nicméně z ničeho nic mi nešel nainstalovat ethtool, protože poškozený soubor /var/lib/dpkg/available. Co se z toho vyklubalo se dozvíte níže.
Něco špatného se asi děje s filesystémem. Takže přerušit nadějný uptime, flešku do počítače, dd a jde se na to. Jaké ale bylo moje překvapení, když fsck.ext4 zahlásil, že je vše v pořádku. Nu dobrá. Tak to zkusíme, start serveru z flešky, smazání /var/lib/dpkg/available a jeho znovuvytvoření pomocí sudo dpkg --clear-avail. Apt-get upgrade ale zase spadnul, navíc se souborový systém re-mountul jako read-only. A jsme doma. Fleška umírá pomalou smrtí (i když měl fs noatime a logování bylo celkem mírné). Naštěstí se mi doma válí mezi různým bincem i pár disků, takže jsem našel jeden mírně jetý 40GB:Western Digital Caviar WDC WD400BB-00DEA0 ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE 1 Raw_Read_Error_Rate PO-R-- 200 200 051 - 0 3 Spin_Up_Time POS--- 100 095 021 - 2375 4 Start_Stop_Count -O--CK 100 100 040 - 870 5 Reallocated_Sector_Ct PO--CK 199 199 140 - 3 7 Seek_Error_Rate PO-R-- 100 253 051 - 0 9 Power_On_Hours -O--CK 100 100 000 - 647 10 Spin_Retry_Count PO--C- 100 100 051 - 0 11 Calibration_Retry_Count PO--C- 100 100 051 - 0 12 Power_Cycle_Count -O--CK 100 100 000 - 865 196 Reallocated_Event_Count -O--CK 199 199 000 - 1 197 Current_Pending_Sector -O--C- 200 200 000 - 0 198 Offline_Uncorrectable -O--C- 200 200 000 - 0 199 UDMA_CRC_Error_Count -O-R-- 200 253 000 - 1500 200 Multi_Zone_Error_Rate P--R-- 200 200 051 - 0 ||||||_ K auto-keep |||||__ C event count ||||___ R error rate |||____ S speed/performance ||_____ O updated online |______ P prefailure warning650 hodin je opravdu málo, ten disk byl jako externí párkrát použit, takže vzhledem k jeho stáří a na dnešní dobu směšné kapacitě může důstojně dosloužit v domácím serveru (nejojetější disk, který zatím v pohodě jede má za sebou úctyhodných 53705 hodin a je to taky WD
Takže dd na nový disk. instalace PATA disku do servříku a start do single-usera. Fsck i nadále zarytě tvrdí, že je vše v nejlepším pořádku. Nicméně instalace furt padá s podivnou chybou podproces nový pre-installation skript byl zabit signálem (Nedovolená instrukce (SIGILL)). Po zjištění, že to dělá pre-instalation skript libovolného balíku jsem zjistil, že podobný bug už v Debianu znají a souvisí s libc. hmm. Trasování mne z postinst skriptů dovedlo do /usr/share/debconf/confmodule. Ten padá při volání /usr/share/debconf/frontend. A ten spadne hnedka na začátku. Protože stejně spadne /usr/bin/perl. A mám ho, syčáka. Takže výlet do /var/cache/apt a pokus o dpkg -i perl_base . Další chybová hláška, že něco není aktuální blablabla. Takže ruční dpkg -i dpkg - ten prošel a pak druhý pokus o instalaci perlu. V okamžiku, kdy perl začal fungovat, zase se root přemountoval RO. Tak jsem nahodil fsck, který opravil mraky chyb (úplně nechápu, kde se vzaly, ale budiž), výzva k restartu. Systém bez problémů naběhl a další apt-get update;apt-get upgrade;apt-get -f install proběhly už bez problémů.
Server teďka sice trošku šumí (alespoň je kontrola, že je zapnutej ), ale nejbližších pár let nebudu muset řešit odcházející SDHC/flešky/SSD_disk a můžu zapisovat kolik chci. S točícími disky přichází nutnost smartmontools, do /etc/smartd.conf píšu /dev/hda -H -C 0 -U 0 -m mujmejl@example.net -s L/../../7/9 (nějaké tipy na parametry smarmontoolss na serveru ?). Vzhledem k tomu, že je to mimo jiné mailserver (byť s poměrně malým provozem několika mailů denně), váhám, jestli si hrát s hdparm - t.j. jestli s vypínáním disku nenadělám víc škody než užitku ?
Co se týče úspory energií, tak jsem zakotvil na cpufreq-set -d 800MHz -u 1800MHz -g powersave -c 1 resp -c 0 (nějak mi nechce fungovat -r, které by mělo nastavit všechna jádra), obě CPU se většinu času flákají mezi 900 a 1000 MHz, akorát powertop mne stále neuspokojuje, 100% ukazují zařízení:
Tiskni
Sdílej:
noatime
.
swap
do souboru.
JFFS2
, to je systém přímo dělaný na FLASH paměti bez řadiče (MTD) a má dobře vyřešený wear leveling. Nevýhoda je, že se při mountování musí přečíst spousta údajů a celkem dlouho to trvá (na jednom starém Mikrotiku s OpenWRT trvalo namountování pouhých 64MB skoro minutu). Případně by se mohl použít LogFS
, který by se měl rychleji mountovat, ale i v současné verzi jádra je označovaný za silně experimentální.
Alternativa je vykašlat se na souborový systém a použít rešení a lá černá skříňka - prostě zapisovat do syrového zařízení bloky s timestampem na začátku (nebo nějakým čítačem, důležité je jen, aby to bylo monotóní) a když se dojde na konec, tak začít zas od začátku zařízení. Na nalezení nejstaršího bloku (tj. místa, kam se bude zapisovat příště) se pak použije modifkované binární vyhledávání, takže se nemusí číst všechno.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.