Linuxové noviny | 05-06/2001 | |||||
| ||||||
SCSI zařízení jsou poměrně vysoce konfigurovatelná a provozujeme-li systém s vícero SCSI zařízeními, většinou se neobejdeme bez aplikací umožňujících kvalitní diagnostiku a konfiguraci těchto zařízení. Uživatelům Linuxu je určitě dobře známá utilita scsiinfo (jejímiž autory jsou M. Weller a E. Youngdale, ke stažení např. na ftp.linux.cz). Méně známá, ale mnohem všestrannější je aplikace Scu, jejímž autorem je Robin Miller.
ScsiinfoBalíček scsiinfo zahrnuje tři utility:
InstalaceInstalace obnáší pouze instalaci příslušného balíčku, grafická nástavba vyžaduje interpret jazyka Tcl/Tk - pokud jej instalován nemáme, musíme se spokojit pouze s používáním utilit scsiinfo a scsiformat.
Příklady použitíPodívejme se nejprve na utilitu scsiinfo. Přehled některých užitečných přepínačů spolu s informacemi, které zpřístupňují, uvádí násedující výpis:
Obecnou informaci o daném SCSI zařízení (identifikace zařízení, šířka sběrnice, zda je zapnuto TCQ apod.) získáme pomocí příkazu Inquiry:
scsiinfo -i /dev/sda Inquiry command ----- Relative Address 0 Wide bus 32 0 Wide bus 16 1 Synchronous neg. 1 Linked Commands 1 Command Queueing 1 SftRe 0 Device Type 0 Peripheral Qualifier 0 Removable? 0 Device Type Modifier 0 ISO Version 0 ECMA Version 0 ANSI Version 3 AENC 0 TrmIOP 0 Response Data Format 2 Vendor: SEAGATE Product: ST39236LW Revision level: 00043BN05G5W Výpis vadných bloků disku získáme pomocí volby -s; Výstupem je výpis vadných bloků ve dvou tabulkách. První tabulka obsahuje seznam vadných bloků od výroby ("manufacturer table"), druhá tabulka obsahuje seznam vadných bloků, které přibyly během provozu disku ("grown table").
scsiinfo -d /dev/sda Data from Defect Lists -------- 127 entries in manufacturer table. Format is: bytes from index [Cyl:Head:Off] Offset -1 marks whole track as bad. 49:1:54001 49:1:235480 129:1:54600 350:1:272776 353:2:253123 365:2:293263 .. zkráceno .. 12346:2:63380 12359:1:97126 12755:0:25399 13683:1:142489 14216:0:81356 0 entries in grown table. Format is: bytes from index [Cyl:Head:Off] Offset -1 marks whole track as bad. Utilitou scsiinfo lze paramtery SCSI zařízení i měnit, ovšem dosti krkolomným způsobem, pro modifikací paramterů zařízení je lepší použít grafickou nástavbu scsi-config. Následující obrázky ukazují scsi-config v akci:
scsi-config: Device Information
scsi-config: Error Recovery Page
ScuBalíček Scu obsahuje interaktivní program pracující pouze v režimu příkazové řádky. Může být spouštěn i "offline" v neinteraktivním režimu. Na rozdíl od utility scsiinfo sice nenabízí grafickou nádstavbu, ale přesto je (zejména pro pokročilého uživatele) uživatelsky mnohem příjemnější. Implementuje celkem 56 příkazů, které umožňují mimo jiné získávat informace a měnit parametry SCSI zařízení, skenovat disky stran vadných bloků, provádět realokaci vadných bloků, umožňuje download firmware, umí pracovat s páskovými či CD-ROM mechanikami (včetně podpory příkazů pro audio) a jukeboxy.
InstalaceScu je distribuován pouze jako spustitelný soubor, protože kvůli licenčním problémům autor nemůže dát k dispozici zdrojový kód (Scu byl vyvinut původně pro Tru64 Unix a obsahuje části hlavičkových souborů chráněných licencí). Distribuce obsahuje kromě binárky scu kvalitní dokumentaci ve formátu HTML. Žádné konfigurace není potřeba, scu pouze volitelně používá proměnnou prostředí SCU_DEVICE}, která může obsahovat standardní jméno SCSI zařízení, se kterým scu bude pracovat a proměnnou SCU_SCRIPT, která může obsahovat cestu ke skriptu, který scu při spuštění provede (skript také může být uložen v souboru $HOME/.scurc nebo v soboru .scurc v aktuálním pracovním adresáři). Scu potřebuje podporu generického ovladače SCSI zařízení v jádře (modul sg).
Příklady použitíPříkazem show s parametry edt capabilities (edt = "equipment device table") vypíše seznam SCSI zařízení:
Aktuální zařízení, se kterým pracujeme, nastavíme a měníme příkazem switch jméno_zařízení. Např. páskovou mechaniku z předchozího příkladu vybereme příkazem switch /dev/nst0. Detailní informace o zařízení vypíšeme příkazem show device:
Pro manipulaci s páskovými mechanikami slouží příkaz mt. Příkaz se jmenuje stejně jako samostatná utilita mt pro práci s páskovými mechanikami, která je dostupná v linuxových distribucích. K dispozici jsou příkazy pro vyhledávání značek, vyhledání pozice, převíjení, mazání apod. Následující příkazy např. pásku nastaví na konec zapsaných dat a vypíší pozici:
scu> mt seod scu> mt rdpos Read Position Information Short Format: First Block: 456795 Last Block: 456795 Number of Blocks: 0 Number of Bytes: 0 Práce s CD-ROM mechanikami: Scu umí pracovat i s audio CD; např. výpis stop z audio CD získáme příkazem show audio toc, příkazem play 1 5 pak přehrajeme skladby 1 až 5.
scu> show audio toc Table of Contents Summary: Track 1: Audio Track, Time: 03:37, LBA: 0, Length: 65349 Track 2: Audio Track, Time: 04:42, LBA: 65348, Length: 84485 .. vynecháno .. Track 13: Audio Track, Time: 03:00, LBA: 884056, Length: 53941 Track 14: Audio Track, Time: 03:49, LBA: 937996, Length: 68613 There are 14 audio tracks and 0 data tracks, with a total time of 55:55. Parametry a konfiguraci SCSI zařízení vypíšeme příkazem show page a jako parametr zadáme druh informací (mode-page, tedy např. error-recovery, disconnect, format-device, geometry, cache-control), např. příkaz show pages error vypíše parametry týkající se detekce a opravy chyb. Pouhé show pages vypíše vše.
scu> show pages error Read-Write Error Recovery Parameters (Page 0x1 - Current Values): Page Header / Data: Page Code: 0x1 Parameters Savable: Yes Page Length: 10 Disable Correction (DCR): No Disable Transfer on Error (DTE): No Post Recoverable Error (PER): No Enable Early Recovery (EER): No Read Continuous (RC): No Transfer Block (TB): No Automatic Read Allocation (ARRE): Yes Automatic Write Allocation (AWRE): Yes Read Retry Count: 11 SCSI zařízení také zpravidla mají počítadla chybových stavů. Je tedy možné zjistit, kolik a jakých druhů chyb zařízení během provozu zaznamenalo příkazem show log pages. Zpravidla jsou k dispozici počty chyb opravených / neopravených chyb při čtení, zápisu a chyby bez návaznosti na médium.
scu> show log pages Buffer Overrun/Underrun Counter Parameters \ (Page 0x1 - Current Cumulative Values): Underruns During Write Operations: 11 Overruns During Read Operations: 0 Write Error Counter Parameters (Page 0x2 - Current Cumulative Values): Total re-Reads or re-Writes: 0 Total Errors Corrected: 0 Total Uncorrected Errors: 0 Read Error Counter Parameters (Page 0x3 - Current Cumulative Values): Errors Corrected w/o Substantial Delay: 354 Total re-Reads or re-Writes: 1521 Total Errors Corrected: 0 Total Uncorrected Errors: 0 Verify Error Counter Parameters (Page 0x5 - Current Cumulative Values): Errors Corrected w/o Substantial Delay: 0 Total re-Reads or re-Writes: 0 Total Errors Corrected: 0 Total Uncorrected Errors: 0 Non-Medium Error Counter Parameters (Page 0x6 - Current Cumulative Values): Parameter 0x0, Counter Value (4): 76 (00 00 00 4c) Pro výpis všech vadných sektorů disku slouží příkaz show defects. Každý disk má dva seznamy vadných bloků - první seznam je inicializován při výrobě ("primary defect list"), druhý seznam ("grown defect list") obsahuje seznam bloků, které se pokazily v průběhu používání disku. Plně funkční disk tedy může obsahovat bloky vadné již od výroby v primárním seznamu, ale druhý seznam by měl být prázdný. Pokud chceme pouze výpis vadných sektorů, které přibyly během provozování disku, použijeme příkaz show defects grown:
scu> show defects Displaying Primary & Grown Defect Lists in Physical Sector Format ( Defect list length is 1080 bytes, containing 135 defects ) Cylinder 49, Head 1, Sector 265 Cylinder 49, Head 1, Sector 460 Cylinder 129, Head 1, Sector 293 .. vynecháno .. Cylinder 14216, Head 0, Sector 17 Pro změnu konfigurace SCSI zařízení slouží příkaz change. Pokud bychom např. chtěli změnit parametry týkající se detekce a opravy a chyb ("Read-Write Error Recover Page"), provedeme příkaz change page error. Je třeba si uvědomit, že ne všechny parametry lze měnit a že SCSI zařízení u měnitelných parametrů používají až tři hodnoty - aktuální nastavení, uložené nastavení a standardní nastavení. Pokud tedy chceme změnit parametr "Read Retry Count" v následujícím příkladu, vidíme, že povolený rozsah hodnot je 0-255 a standardní hodnota daná výrobcem je 33. Můžeme změnit pouze aktuální nastavení a neukládat jej, nebo je i uložit a v tom případě hodnota přetrvá vypnutí a opětovné zapnutí zařízení, ale můžeme také zpětně vyvolat standardní nastavení výrobce.
scu> change page error Changing & Saving Read-Write Error Recovery Parameters \ (Page 0x1 - Current Values): Disable Correction (DCR) [R:0-1 D:0]: Disable Transfer on Error (DTE) [R:0-1 D:0]: Post Recoverable Error (PER) [R:0-1 D:1]: Enable Early Recovery (EER) [R:0-1 D:0]: Transfer Block (TB) [R:0-1 D:1]: Automatic Read Allocation (ARRE) [R:0-1 D:0]: Automatic Write Allocation (AWRE) [R:0-1 D:0]: Read Retry Count [R:0-255 D:33]: 25 Write Retry Count [R:0-255 D:3]: 10
Automatická realokace vadných sektorů, oprava chybKdyž SCSI disk detekuje vadný blok, může jej automaticky přemapovat, pokud je k tomu nakonfigurován. Tato nastavení kontrolují příznaky ARRE (Automatic Read Reallocation Enable) pro chyby při čtení a AWRE (Automatic Write Reallocation Enable) pro chyby při zápisu. Oba tyto parametry jsou přístupné v tzv. "Read-Write Error Recovery Page" (scsiinfo -e anebo Scu příkaz show page error) a musejí být zapnuty. Většina disků je tímto způsobem zpravidla nastavena již výrobcem. V případě, že tomu tak není, je potřeba nejprve zajistit, aby bylo pro automatickou realokaci rezervováno nějaké místo. To zjistíme z "Format Device Page" (scsiinfo -f, Scu příkazem show page format) - zpravidla jsou to parametry "Alternate Tracks per Zone" nebo "Alternate Sectors per Zone" nebo podobné. Po změně těchto parametrů je ovšem zapotřebí provést nízkoúrovňový formát disku (scsiformat, nebo Scu příkaz format) a teprve pak má smysl nastavit příznaky ARRE / AWRE.Kromě příznaků ARRE / AWRE existují další příznaky a parametry, které ovlivňují korekci chyb u SCSI disků:
Používání cache pevných disků pro zápisPoužívání cache pro zápis u obyčejných disků nemusí být zcela bezproblémové. Kromě toho, že může dojít k situaci (např. při výpadku napajení nebo vypnutí počítače), kdy data nemusejí být na disk skutečně zapsána, pak disk některé chyby při zpožděném zápisu hlásí poté, co již signalizoval úspěšné dokončení příkazu. Navíc v minulosti některé ovladače SCSI řadičů v Linuxu měly problémy, pokud disky používaly cache pro zápis. Tyto možné problémy je třeba mít na paměti, chceme-li z výkonnostních důvodů provozovat disky se zapnutou cache pro zápis. Obvykle mají disky zapnutou cache pro čtení a vypnutou cache pro zápis, i když v poslední době se více objevují disky, které mají od výrobce zapnutou cache jak pro čtení tak i pro zápis.Parametry kontrolující používání cache nalezneme v "Cache Control Page" (scsiinfo -c, scu příkaz show page cache):
ZávěremCílem tohoto článku bylo na příkladech ukázat práci se dvěma utilitami pro konfiguraci/diagnostiku SCSI zařízení a nastínit, co všechno je možné u SCSI zařízení konfigurovat, případně jak zjisťovat "zdraví" SCSI zařízení. Ve srovnání s Scu toho utilita scsiinfo nabízí mnohem méně, ale i tak pro běžnou údržbu či konfiguraci SCSI zařízení postačuje.Vzhledem k rozsáhlosti problematiky diagnostiky a konfigurace SCSI zařízení pak zájemce o hlubší informace odkazujeme na dokumentaci utilit Scu a scsiinfo, případně na specifikace SCSI na serverech http://www.t10.org/drafts.htm a http://www.scsita.org/. Také existuje přehledný "slovníček" termínů souvisejicích s problematikou SCSI. A ještě jedna poznámka, nebo spíše varování, úplně na závěr: uvedené utility jsou určeny především zkušeným uživatelům, kteří vědí co dělají. Nepozorný uživatel si chybným použitím může přivodit přinejmenším ztrátu dat. |