2009. április 28., kedd

Merevlemez diagnosztika: S.M.A.R.T.

Raw Read Error Rate: Azon olvasási hibák száma, amiket az ECC (Error Checking and Correction) nem tudott menet közben (on-the-fly) visszaállítani. A mérés minden 5E+09 bit után újraindul. Az érték átlagon felüli csökkenése átalában a mágneses felület vagy a fejek hibájára utal.

Soft Read Error Rate: Szoftveres hibára visszavezethető olvasási hibák száma. Overclock? Kábelhiba? Driverek?

Throughput Performance: 1.0E+10 bit olvasásához szükséges idő. A mérés az off-line teszt alatti lineáris olvasásra vonatkozik.

Seek Time Performance: 1628 seek művelet elvégzéséhez szükséges idő. Szintén off-line teszt alatt kerül mérésre.

Spin Up Time: Teljes felpörgéshez szükséges idő. Minden ötödik felpörgésnél újraszámolásra kerül. Az érték lehet alacsony és kissé változó néhány gyártónál (60-70, pl. Maxtor-Quantum), ez normális.

Start/Stop Count: Felpörgések (leállások) számlálója. Csak statisztikai célokat szolgál.

Read Channel Margin: az adatfolyam tulajdonságait méri használat közben. Pontos céljáról és működéséről egyelőre nincsenek adatok...

Reallocated Sector Count: A valamilyen okból hibásnak vélt és ezért áthelyezett szektorok számlálója (nem tartalmazza a függőben lévő szektorok számát, ezekről később). Az off-line scan vagy egy olvasási próbálkozás során rossznak ítélt szektorokból a HDD megpróbálja a még dekódolható adatokat lementeni, a szektort pedig áthelyezni és a használatból kivonni. Az áthelyezett szektorok rohamos növekedése a lemezfelületre romló fizikai állapotára utal (Barracuda IV-eknél gyakran előfordul lassú növekedés - :confused: ). A régebbi merevlemezeknél az erre a célra fenntartott tartalék szektorok a lemez belső felén helyezkedtek el, ezért ezeknél a nagyobb számú szektoráthelyezések jelentős (10%+) teljesítménycsökkenést okoztak. A mai drive-ok ún. sector sparing scheme-mel működnek, ami azt jelenti, hogy a lemez felületén megadott sávonként van egy tartalék sáv, így az áthelyezések nem okoznak a teljesítményben változást.

Reallocation Event Count: Áthelyezési események számlálója, függetlenül attól, hogy hány szektor helyeződött át egy esemény alkalmával, illetve hogy sikeres volt-e a művelet.

Seek Error Rate: 1000000 seek művelet alatti hibákat számolja. Minden 5000000 seek művelet után újraszámolódik. Túl alacsony érték elméletileg a servo vagy a vezérlés hibájára utalhat, de Seagate drive-oknál felvehet alacsony (és általában lassan növekvő) értékeket.

Spin Retry Count: Felpörgési próbálkozások száma. Minden 5 felpörgés után újraszámításra kerül.

Device Power Cycle Count: Üzemciklusok száma, általában megegyezik a Start/Stop Count-tal. Statisztikai célokat szolgál.

Drive Temperature: Aktuális hőmérséklet, amit a vezérlőpanelre épített szenzor mutat. A RAW érték átváltása után általában °C-ban kapjuk meg a hőmérsékletet. A mai gyártók közül egyedül a Western Digital az, ami ezt még nem támogatja.

Current Pending Sector Count: Az olyan szektorok száma, amik a meghajtó "pending" listájában vannak. A függésben levő szektor egy olyan bad szektor, amelyet a következő kell érvényesíteni (használatba visszahelyezés vagy használatból való végleg kivonás és áthelyezés - reallocate). Magyarán szólva ez egy magnetoszatikailag instabilabb szektor, amiről még a meghajtó sem döntötte el, hogy rossz-e, vagy sem.

Offline Scan Uncorrectable Sector Count: Azon szektorok száma, melyeknél a meghajtó javíthatatlan olvasási hibát észlelt a legutóbbi off-line scan során.

Ultra ATA CRC Error Count: Az utolsó 8000 szektor UDMA módban történő átvitele során észlelt CRC hibák számlálója. A hibaarány 4000 szektoronként újraszámításra kerül. Szokatlan érték esetén érdemes kábelcserével indítani, de tuning és drivergond is okozhatja.

Write Error Rate: Adatok rögzítése közben észlelt hibák. Az érték csökkenése a mágneses felület és/vagy a mechanika rossz állapotára utal.

Power Off Retract Count: Kikapcsolások során a hardveres fejparkolási (IBM: kifésülési) folyamatok számlálója.

G-Sensor Error Rate: Fizikai behatások száma. A SMART egy gyorsulásérzékelő szenzorból veszi az adatokat, ilyen csak notebook merevlemezeken található meg.

Torque Amplification Count: 'Fogatónyomaték erősítések' száma. Csapágyproblémák vagy letapadt fej esetén a meghajtó erős rántásokkal próbálja a sikeres felpörgést elérni, ez a torque amplification. Az érték csökkenése komoly mechanikai problémákra utal.

GMR Head Amplitude: GMR (Giant-MagnetoResistive) fejek vibrációjának amplitúdója. Az érték csökkenése mechanikai problémákra utal. DTLA-knál véletlenül elég divatos

Disk Shift: A lemezek elmozdulása a forgástengelyhez képest. Sem a mértékegységek, sem az érték esetleges csökkenésének pontos okai nem ismertek. Ez is kizárólag notebook meghajtókban használt.

Loaded Hours: Csak IBM merevlemezekre vonatkozik (Exelstor?). Azon órák számlálójra, amikor a fejek a lemezek fölött (működési pozícióban) voltak. Tudni kell, hogy az IBM újabb notebook merevlemezeiben illetve a DTLA óta desktop drive-okban (és persze SCSI vonalon is) bevezette azt, hogy a fejek a kikapcsolást követően kiemelésre kerülnek a lemezekről, és egy rámpára kerülnek. Így normális esetben a fejek soha nem kerülnek fizikai kapcsolatba a lemezekkel, ami többek között megnövelt élettartamot biztosít. A fejek rámpáról való behúzása a továbbiakban "betöltés".

Load Cycle Count: Betöltési ciklusok számlálója. Csak statisztikai szerepet tölt be.

Load-in Time: Betöltéshez szükséges idő. Az attribútum megmutatja mennyi időre van szükség induláskor a fejek teljes készenléti állapotához.

Load Retry Count: Betöltési próbálkozások száma. Általában valamilyen mechanikai elváltozásra utal a csökkenése.

Load Friction: A rámpákról a fejek betöltése közben mért súrlódás.

Forrás: sulinet

2009. április 16., csütörtök

Hangoljunk bagolyúr segítségével

Ha a Linux terjesztésünk készítői és mi is egyöntetűen akarjuk, jóllakott pingvinünk képes jó aszkéta módjára minél kevesebb elektront enni. Ennek hatása hosszabb akkumulátoros üzemidő, és/vagy kevesebb fogyasztás lehet. Az alábbiakban pár egyszerű példát mutatok be, amelynek segítségével tuningolhatjuk a Linuxot alacsonyabb fogyasztásra. Ennek hatására kevesebbet kell termelnie az erőműveknek, kisebb lesz a légszennyezettség, az ózonlyuk begyógyul és a sarkkörökre visszanőnek a jéghegyek (már amelyik elolvadt eddigre).

A lényeg tehát, hogy a számítógépünk hardverei már nagy valószínűséggel felkészültek, hogy kicsit zöldek legyenek. Jó esetben nekünk ezt csak be kell kapcsolni.

Merevlemezek

1. Diszkek lekapcsolása

root@tarantula:~# hdparm -i /dev/sda

/dev/sda:

Model=FUJITSU MHV2040AH , FwRev=00000096, SerialNo= NT04T6A2MHJ0
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78140160
IORDY=yes, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a: ATA/ATAPI-2,3,4,5,6

* signifies the current active mode

Az UDMA-val kezdődő sor alatt láthatjuk, hogy hogyan áll merevlemezünk az energiagazdálkodással. Ha AdvancedPM=yes, akkor beállíthatjuk, hogy bizonyos tétlenség után kapcsoljon le a merevlemezünk. Jó tudni, hogy kb. 10-30 másodperc, mire feltápászkodik, tehát nem érdemes mondjuk 1 percet megadni... A bekapcsolás a "-B", az idő megadása a "-S" paraméterrel történik, utána nem percben vagy másodpercben kell megadni az értéket, hanem egy igen elborult algoritmus szerint, akit érdekel, keresse ki a man-ban. Mivel nekem a teljes üzemidő másfél óra akksin, de túl korán sem állítanám le, ezért húsz percet adtam meg:

hdparm -B 1 -S 240 /dev/sda

A fél óra 241, egy óra 242. Ha véglegesen is be szeretnénk állítani, akkor a /etc/hdparm.conf-ban a "spindown_time" értéket keressük meg, kommentezzük ki és állítsuk be a megfelelő értéket.

2. Gyakori I/O csökkentése

Másik megoldás az, ha megmentjük a merevlemezünket a túl gyakori írástól. A POSIX szabvány alapján (amelyhez a Linux is igazodik) a fájloknak kell legyen egy ún. atime, azaz access time, elérési idő tulajdonsága, ami értelemszerűen az utolsó elérési időt jelzi. Ebből már lehet kapisgálni, hogy minden fájlnál, amelyet vagy írásra, olvasásra megnyitunk, ezt a kis paramétert mindig le kell generálni és kiírni a diszkre. Még viccesebb, hogy ha egy ls paranccsal listázzuk egy könyvtár tartalmát, akkor is megváltozik annak az atime-ja! Most ha hozzávesszük, hogy nem csak a felhasználók, hanem bármely program ugyanezeket okozza, akkor rájövünk hogy ez jelentős tétel is lehet.

Van egy olyan felcsatolási paraméter az ext3 fájlrendszeren, amely jó kompromisszumot ad: csak időről időre frissíti az atime-ot. Az Ubuntun szerencsére ez az alapértelmezett, de azért ellenőrizzük le:

root@tarantula:~# mount
/dev/sda3 on / type ext3 (rw,relatime,errors=remount-ro)

...Ha nincs ott a relatime, akkor a /etc/fstab-ba beleírhatjuk. Ha úgy érezzük, egyáltalán nincs szükség az atime-ra, akkor cseréljük ki a relatime-ot noatime-ra. Figyeljünk, hogy milyen fájlrendszert írunk át, én ext3-at használok, azon tuti.

Beállítható ezen a furmányos Linuxon az is, hogy hány századmásodpercenként írjon a diszkre. (Ugye odáig világos, hogy nem azonnal kerül minden a lemezre, hanem egy pici késleltetéssel, addig egy átmeneti cache-ben csücsül). Alapértelmezetten ez 5 másodperc, lekérdezhetjük így:

cat /proc/sys/vm/dirty_writeback_centisecs 499

Ha laptopon vagyunk, és jó az akksi, és nem számítunk túl sűrűn kernel panic-ra, akkor miért ne vennénk nagyobbra? Semmit nem veszthetünk vele. Írjuk hát be a /etc/sysctl.conf-ba:

sys.vm.dirty_writeback_centisecs 1000

Ezzel nagy bátran duplájára emeltük az időt, azaz felére az írások számát.

3. I/O csökkentése a syslog hangolásával

A syslog lényege az, hogy minden naplózott esemény a diszkre kerüljön, mivel onnan kevesebb valószínűséggel veszik el. Emiatt minden esemény diszkre írásakor meghívja a sync I/O-funkciót, amely a cache-ben lévő, kiírandó adatokat egyből kiírja (normál esetben éppen annyi időnként írja ki, mint amit az előbbi pontban állítottunk be). Van egyébként erre egy kézzel bármikor futtatható parancssori utasítás is, el nem hinnétek, hogy sync a neve... Ha éppen nem egy szuperbiztonságos szervert üzemeltetünk és nem épp egy kernel betérdelést debugolunk, akkor szerintem felesleges ennyire vergődni a logokon. Nyissuk meg a /etc/syslog.conf fájlt, és a target-ek (ez a jobb oldali oszlop) elé tegyünk végig szóközt. Elég soknál már ott is van! Lássuk, hogy néz ez ki előtte:

auth,authpriv.* /var/log/auth.log

...és utána:

auth,authpriv.* -/var/log/auth.log

4. Laptop-mód bekapcsolása

Ez a Linux kernel olyan fícsöre, hogy igyekszik optimalizálni az I/O műveleteket úgy, hogy a diszkek minél többet pihenjenek. A /etc/defaults/acpi-support fájlban láthatjuk is, hogy van egy ENABLE_LAPTOP_MODE paraméter, ami alapból false. Olvashatunk egy figyelmeztetést, hogy néhány gépen ez bizony fagyást okozhat - én nem kockáztattam, nem kapcsoltam be.

Spórolás hangkártyával

Ha az ac97 hangkódekkel rendelkező felhasználók népes táborába tartozunk, akkor beállíthatjuk azt is, hogy amikor nem szól a hangkártya, akkor egyúttal takarítson meg némi energiát önmaga lekapcsolásával. Győződjünk meg arról, hogy ilyen kártyánk van-e, és tudja-e a spórolást, valamint mindez be van-e állítva:

root@tarantula:~# cat /sys/module/snd_ac97_codec/parameters/power_save
0

Ha nem azt írja, hogy ilyen fájl nem létezik, akkor már jók vagyunk.
Ha itt 1-et látunk, akkor minden rendben; ellenkező esetben írhatjuk a
/etc/rc.local fájlba, az "exit" sor elé:# echo 1 > /sys/module/snd_ac97_codec/parameters/power_save

Megtakarítás a laptop-kijelzővel

Gondolom, nem kell hosszan ecsetelnem, hogy a kijelző háttérvilágítása a laptopon gyakran az áramfelvétel felét kiteszi; nem ritka a 4-5W fogyasztás, miközben a laptop 10-11W-ot fogyaszt. Gondoljunk a kijelző háttérvilágításának csökkentésére, valamint akkumulátoros üzemben a gyors kikapcsolásra. Ez utóbbit például ezzel tehetjük meg:

bagoj@tarantula:~$ xset dpms 0 0 60

(Figyeljünk, ezt sima felhasználóként csináltam! Mivel ez az apróbetűs rész amit senki se olvas el, ide írom, hogy ezentúl a root-ként végzendő dolgokat simán #-tel, a felhasználóként végzendőket $ jellel jelölöm, ahogyan általában szokás.)

Ez 60 másodperc inaktivitás után lekapcsolja a kijelzőt, a normál képernyővédő bekapcsolást pedig nem befolyásolja (maximum annyiban, hogy a vicces cicák képei nem látszanak, he-he). A visszakapcsolás meg azonnali. Vészhelyzetben a 15 másodpercet sem tartom hülyeségnek...

Az első dologra pedig az Ubuntu alapból tud megoldást, hiszen beállítható minden a Rendszer/Beállítások/Energiagazdálkodás alatt; másoknak pedig az xbacklight programocska segíthet - már amennyiben a laptopon nincs a háttérvilágítást állító billentyű.

Fukar processzorok

Ha netán több magos rendszerünk van, akksis üzemidőben letilthatjük a teljesítményre optimalizált működést. Ezzel is nyerhetünk valamit:

# echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
# echo 1 > /sys/devices/system/cpu/sched_smt_power_savings

Uniprocesszoros gépeken is alkalmazható a CPU órajel-gazdálkodásának beállítása; további fortélyként. Ennek lekérdezésére létezik a Gnome alatt egy panel-applet, "CPU órajel-változás figyelő" néven, beállítani azonban ott semmit sem lehet. Bezzeg itt:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors conservative ondemand userspace powersave performance

Ezek a lehetőségeink. Az "ondemand" olyan 50%-on tartja a processzor órajelét, és szükség esetén felemeli maximumra, csak amíg szükséges. Ubuntun ez az alapértelmezett. A "powersave" igyekszik a minimumon tartani, a "performance" pedig maximális teljesítményt ad le. Fogalmam sincs, a maradék kettő mit csinál. :-) A "userspace"-szel gondolom, lehetőséget adunk hogy felhasználói programokkal egy-egy konkrét értékre lőjük be az órajelet, de a conservative...?
Lekérdezni és beállítani így lehet:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Fösvény kommunikáció

Ha éppen nem szükséges használni a vezetékmentes hálózatunkat, vagy a Bluetooth kapcsolatot, és nincs a laptopon megfelelő gomb ezek leállítására / elindítására, akkor letilthatjuk ezeket a parancssorból. Történetesen ugyanis egyes wifi driverek több energiát használnak, ha nem vagyunk kapcsolódva, mint ha fent lennénk a wifi hálón (!). Ha nagyon kell az energia, akkor futtassuk ezt le:

for i in `find /sys -name "rf_kill"`; do echo 1 > $i ; done
hciconfig hci0 down
rmmod hci_usb

(Feltéve, ha a Bluetooth eszközünk neve hci0. Ellenőrizni a hciconfig paranccsal lehet.)

Visszakapcsolás:

for i in `find /sys -name "rf_kill"`; do echo 0 > $i ; done
modprobe hci_usb
hciconfig hci0 up

És természetesen a felsorolt beállításokra egy szkriptet is fabrikálhatunk, amely megtesz nekünk mindent, ha nagy szükség van az utolsó millivoltra is:

#!/bin/bash
if [ `id -u` != "0" ]; then
echo "Csak root-kent futtathato!"
exit 1
fi
/sbin/hdparm -B 1 -S 240 /dev/sda
/bin/mount -o remount,relatime /
/bin/echo 1000 > /proc/sys/vm/dirty_writeback_centisecs
/bin/echo 1 > /sys/module/snd_ac97_codec/parameters/power_save
/bin/echo 1 > /dev/dsp
/bin/echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
/bin/echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
/bin/echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
/usr/bin/xset dpms 0 0 60
for i in `find /sys -name "rf_kill"`; do echo 1 > $i ; done
/usr/sbin/hciconfig hci0 down
/sbin/rmmod hci_usb
A visszakapcsoláshoz pedig:

#!/bin/bash
if [ `id -u` != "0" ]; then
echo "Csak root-kent futtathato!"
exit 1
fi
/sbin/hdparm -B 0 /dev/sda
/bin/echo 500 > /proc/sys/vm/dirty_writeback_centisecs
/bin/echo 0 > /sys/module/snd_ac97_codec/parameters/power_save
/bin/echo 0 > /sys/devices/system/cpu/sched_mc_power_savings
/bin/echo 0 > /sys/devices/system/cpu/sched_smt_power_savings
/bin/echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
for i in `find /sys -name "rf_kill"`; do echo 0 > $i ; done
/sbin/modprobe hci_usb
/usr/sbin/hciconfig hci0 up

Nevezzük el őket, készítsünk neki parancsikont az asztalunkra oszt máris jóidő. Felelősséget, szokás szerint, nem tudok vállalni a dologért. :-)

(Megjegyzés: már 1-2 napja megírtam ezt a postot, azóta szeretném kipróbálni, hogy ténylegesen van-e különbség a kisülés idejében, ha beállítom ezt a sok mindent. Azóta sem sikerült csalhatatlan bizonyítékot találnom. Szóval lehet, hogy ez olyasmi, mint a tuning autók hátsó ledes lámpái, amik a foton kibocsátással is "hozzájárulnak" az autó gyorsulásához.

Forrás

Rootkit ellen pedig gyökérfű...

Rootkit Hunter, ami jó.

Rootkit szkenner egy egyszerű eszköz, ami körülbelül 99.9* százalékban felderiti a gonosz kis dögöket. A program felderíti a rootkiteket, a hátsó ajtókat (backdoor) és exploitokat.A Rootkit Huntert ingyen használhatók.
(*Nem, nem igazán 99.9 százalék, a program csak egy plusz biztonsági réteg:)


http://www.rootkit.nl