LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> Používání starých a nemocných disků

Máte-li na starosti více serverů, začne se vám postupně v šuplíku hromadit množství různých téměř použitelných disků, které jsou pro použití v serveru nespolehlivé, ale je vám líto je vyhodit. Co s nimi? Pokud najdete a opravíte špatné sektory, případně se špatným oblastem na disku vyhnete, můžete takový disk používat pro méně náročné účely ještě dlouhá léta.

19.5.2012 00:00 | Petr Bravenec | Články autora | přečteno 12951×

V praxi se správce linuxových serverů potkává s množstvím různých disků. Většinu svého života disky spořádaně otáčejí plotnami a kmitají hlavičkami sem a tam, ale v životě velké části disků se časem začnou projevovat různé závady.

Tragedií pro data je situace, kdy disk přestane fungovat zcela bez varování - nemáte-li zálohu či diskové pole, jsou vaše data, lidově řečeno, v loji. Na druhou stranu nemusíte mít žádné pochybnosti - data jsou pryč, disk nefunguje a jakékoliv snahy o jeho další využití jsou marné. Máte-li disk v diskovém poli, jednoduše disk vyměníte za nový a vadný disk odešlete na reklamaci, nebo do šrotu.

Jiná je situace, kdy se obvykle po letech spolehlivého fungování začnou na disku hromadit vadné sektory a disk začne zapomínat. V praxi je taková závada často nepříjemnější, než náhlá disková smrt. Disk totiž občas funguje dobře, občas zdržuje při čtení, občas zapomene nějaká data - přestává být na něj spolehnutí. Vyskytne-li se vám takový disk v diskovém poli, může být situace ještě horší, pokud druhý disk umře nebo z pole vypadne. K diskovému poli s jedním "téměř" dobrým diskem totiž další disk nepřipojíte, synchronizace vždy havaruje. A to i v případě, že disk jinak slouží docela dobře, protože nečitelné sektory mohou být na místech, která se nepoužívají (v praxi to nevadí), ale synchronizovat se musí celý disk se všemi daty (i s těmi vadnými). Potom nezbývá jiná možnost, než vytvořit diskové pole nové, překopírovat na ně data z vadného disku (dobře poslouží rsync) a staré diskové pole zrušit.

Máte-li na starosti více serverů, začne se vám postupně v šuplíku hromadit množství různých téměř použitelných disků, které už na reklamaci neodešlete (příliš staré), pro použití v serveru jsou disky příliš nespolehlivé, ale je vám líto je vyhodit. Co s nimi?

I když už není takový disk způsobilý fungovat v serveru, může být docela dobře použitelný například na skladování různé kapesníčkové filmové produkce. Před použitím takového disku jej však musíme náležitě připravit. Prosté "zformátování" disku nestačí, protože operací, která má nejblíže k tomu, co si obvykle lidé představují pod pojmem "zformátování disku", je v linuxu vytvoření souborového systému (příkaz mkfs) a při této operaci se pouze sem tam něco zapíše na disk, žádné testování se nekoná.

Dnešní diskové samoopravné mechanismy fungují v principu takto: Při havarovaném pokusu o čtení se sektor označí jako vadný (kandidát na přesun - pending sector) a při pokusu o zápis se sektor přestěhuje do náhradní oblasti. Původní sektor se označí jako vadný a nadále se nepoužívá. V ideálním případě tak operační systém nepozná, že je s diskem něco v nepořádku.

Informace o vadných sektorech získáte příkazem smartctl:

smartctl -a /dev/sdx

Z množství vypsaných informací by vás měly zajímat především tyto řádky:

  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0

U některých disků se informace o realokovaných sektorech nevypisuje (je zde vždy nula). U takových disků pak hledejte následující řádek:

196 Reallocated_Event_Count 0x0032   099   099   000    Old_age   Always       -       61

Počet realokovaných sektorů se vypisuje v posledním sloupci.

Varování: techniky popisované v následujícím textu vedou k neobnovitelné ztrátě dat.

Chcete-li i nadále používat starší disk s vadnými sektory, potřebujete takový disk donutit, aby vadné sektory přesunul do náhradní oblasti. Nejjednodušším a nejrychlejším způsobem, jak k tomu takový disk přinutit, je přepsat celý disk. Tím se vyvolá proces realokace vadných sektorů na celém disku. Nejsnáze lze využít příkaz dd:

dd if=/dev/zero of=/dev/sdx bs=1024K

Příkaz kopíruje ze zařízení /dev/zero na disk /dev/sdx nuly. Parametry if a of udávají vstupní (if) a výstupní (of) zařízení, parametr bs pak udává velikost jednoho kopírovaného bloku. Větší hodnota (1024K) obvykle vede k rychlejšímu kopírování.

Tato operace vždy skončí chybou - pokud je touto chybou nedostatek místa na disku, je vše v pořádku. Pokud se vyskytne jiná chyba, je obvykle něco špatně a disk je nejspíš v mnohem horším stavu, než aby šel nadále používat.

Přepis celého disku vede ke dvěma výsledkům:

  • Přepíšou se veškerá stará data na disku. Pokud jste vytáhli disk ze serveru, je pravděpodobně tento efekt velmi žádoucí - nechcete přeci, aby se data dostala do rukou někomu cizímu. Je možné, že i z takto přepsaného disku by bylo možné dostat alespoň část dat zpět, ale pravděpodobnost, že se to novému majiteli disku podaří, je mizivá.
  • Provede se zápis do každého diskového sektoru. Pokud se zápis nepodaří, nebo se disk pokouší zapsat na místo označené "Current_Pending_Sector", vadný sektor se přemístí na náhradní místo.

Časově náročnějším způsobem, jak docílit téhož, je příkaz badblocks:

badblocks -v -w -o seznam-spatnych-sektoru /dev/sdx

Klíčovým parametrem je -w, který říká, že se má na každý sektor disku zapsat, přečíst a porovat postupně několik různých vzorů (binárně: 10101010, 01010101, 11111111, 00000000). Parametr -v způsobí výpis různých informací o chybách na obrazovku, -o pak uloží data o vadných sektorech do souboru. Data o vadných sektorech lze později využít při vytváření souborového systému, ale ve skutečnosti jde spíše o teoretickou možnost, disk vadné sektory pravděpodobně spíše přealokuje, takže příkaz badblock i na disku s mnoha špatnými sektory nenajde žádnou závadu (příkaz badblocks vznikal v době, kdy si disky o realokaci vadných sektorů mohly nechat pouze zdát).

Příkaz badblocks funguje na disk jako několikanásobný kobercový nálet, z dat na disku nezůstane kámen na kameni. Šance, že by se z takto ošetřeného disku podařilo dostat ještě někdy nějaká data, ja prakticky nulová. Ve srovnání s jednoduchým příkazem dd je však tato operace mnohonásobně delší - u 1TB se připravte na několikadenní nepřetržité testování.

Pro úplnost ještě uvedu, že seznam vadných sektorů lze použít později při vytváření souborového systému:

mkfs -t ext4 -l seznam-spatnych-sektoru /dev/sdx

Testování disku lze vyvolat i při vytváření souborového systému (parametr -c provádí pouze čtení, parametr -cc provádí i pomalejší test zápisem na disk):

mkfs -t ext4 -cc /dev/sdx

Po přepsání disku můžete disk otestovat, nejjednodušší je opět využití příkazu dd:

dd if=/dev/zero of=/dev/sdx bs=1024K

Tímto příkazem se přečte kompletně celý disk sektor po sektoru. Po úspěšné realokaci vadných sektorů byste měli disk přečíst bez problémů. Případné chyby čtení můžete ověřit v logu /var/log/messages (může se lišit podle nastavení systému) nebo příkazem dmesg. Důležité jsou zprávy tohoto typu:

ata5.00: BMDMA stat 0x4
ata5.00: failed command: READ DMA EXT
ata5.00: cmd 25/00:04:4c:af:7a/00:00:15:00:00/e0 tag 0 dma 2048 in
         res 51/40:00:4f:af:7a/40:00:15:00:00/00 Emask 0x9 (media error)

případně

sd 4:0:0:0: [sdx] Unhandled sense code
sd 4:0:0:0: [sdx]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 4:0:0:0: [sdx]  Sense Key : Medium Error [current] [descriptor]
Descriptor sense data with sense descriptors (in hex):
        72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
        15 7a af 4f 
sd 4:0:0:0: [sdx]  Add. Sense: Unrecovered read error - auto reallocate failed
sd 4:0:0:0: [sdx] CDB: Read(10): 28 00 15 7a af 4c 00 00 04 00
end_request: I/O error, dev sdx, sector 360361807
Buffer I/O error on device sdx, logical block 360361807

U disku, který je v pořádku, by se neměly zprávy o chybě media vyskytovat.

Moderní disky disponují vlastním mechanismem pro testování. Různých testů může být několik typů, pro nejpodrobnější otestování disku nejlépe vyhoví "long" test, který spustíte příkazem smartctl:

smartctl -t long /dev/sdx

Test se spouští na pozadí, o jeho průběhu se můžete informovat opět příkazem smartctl:

smartctl -a /dev/sdx

Zajímat by vás měly řádky na konci výpisu, v sekci "Self-test log":

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     21289         -
# 2  Extended offline    Completed: read failure       50%     21117         360361803

Na uvedeném výpisu skončil předchozí test s chybou, po realokaci vadného sektoru už test dopadl ok.

Test můžete spustit i na živém disku na serveru, data se nepoškodí a při práci test příliš nezdržuje. Pokud tímto testem objevíte vadný sektor, můžete takový sektor donutit k realokaci příkazem hdparm. Zde bych vás měl předem varovat, že uvedený příkaz hdparm přepisuje data na disku, o obsah konkrétního sektoru tak nenávratně přijdete (ostatně, data jsou nedostupná už nyní). Na živém disku tak může být tato operace fatální, nicméně to může být někdy jediný způsob, jak připojit do diskového pole nový disk ke špatnému disku.

Zkuste přečíst sektor uvedený v testu:

hdparm --read-sector 360361803 /dev/sdx
/dev/sdx:
reading sector 360361803: FAILED: Input/output error

Nepodařilo se, data jsou ztracena, pokuste se tedy sektor přepsat:

hdparm --yes-i-know-what-i-am-doing --write-sector 360361803 /dev/sdx

Sektor po zápisu můžete zkusit znovu přečíst:

hdparm --read-sector 360361803 /dev/sdx
/dev/sdx:
reading sector 360361803: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
.....

Znovu překontrolujte počet realokovaných sektorů. Byla-li operace úspěšná, měl by se počet realokovaných sektorů zvýšit.

Je zajímavé, že tímto způsobem lze někdy odhalit a přepsat i sektory, které badblocks nenajde.

Pokud jste přepisovali sektory na živém disku, bylo by pravděpodobně vhodné takový disk odmontovat a opravit souborový systém na disku příkazem fsck. Šance, že se při přepisování sektoru trefíte do důležitých systémových oblastí, je sice malá, spíše přijdete o část dat v některém souboru, ale je vhodnější souborový systém preventivně opravit, než riskovat pokračující zkázu dat, tentokrát z důvodu narušení logické struktury disku.

Někdy se stane, že narazíte na disk, který veškeré snahy o opravy sabotuje a v okolí jednoho vadného sektoru se objevují při každém testu další a další vadné sektory. Série testů u jednoho takového disku vypadala takto:

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%      9244         283600374
# 2  Extended offline    Completed: read failure       90%      9236         283600387
# 3  Extended offline    Completed: read failure       90%      9227         283600393
# 4  Extended offline    Completed: read failure       90%      9227         283600374
# 5  Extended offline    Completed: read failure       90%      9227         283600387
# 6  Extended offline    Completed: read failure       90%      9227         283600383
# 7  Extended offline    Completed: read failure       90%      9227         283600389
# 8  Extended offline    Completed: read failure       90%      9227         283600389
# 9  Extended offline    Completed: read failure       90%      9227         283602272
#10  Selective offline   Completed: read failure       90%      9227         283602272
#11  Selective offline   Completed: read failure       90%      9227         283602272
#12  Selective offline   Completed: read failure       90%      9227         283602273
#13  Selective offline   Completed: read failure       90%      9227         283602271
#14  Selective offline   Completed: read failure       90%      9227         283600374
#15  Selective offline   Completed: read failure       90%      9227         283602271
#16  Selective offline   Completed: read failure       90%      9227         283602270
#17  Selective offline   Completed: read failure       90%      9227         283602269
#18  Selective offline   Completed: read failure       90%      9227         283600375
#19  Selective offline   Completed: read failure       90%      9227         283600375
#20  Selective offline   Completed: read failure       90%      9227         283600375

Takový disk buď rovnou vyhoďte, nebo se vyhněte vadnému místu šikovným rozdělením disku. U takto rozsáhlého shluku chyb je předpoklad, že se bude oblast s chybami dále rozšiřovat. Sám pro správu disků používám letitý příkaz fdisk. Číslování sektorů odpovídá číslování, které používá i smartctl, a vadný disk jsem rozdělil takto:

Disk /dev/sdx: 1 000,2 GB, 1 000 204 886 016 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 121 601, celkem 1 953 525 168 sektorů
Jednotky = sektory po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x7e1fb094

Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sdx1            2048   283000000   141498976+  83  Linux
/dev/sdx2       284000000  1953525167   834762584   83  Linux

Test disku můžete spustit pouze na část disku:

smartctl -t select,284000000-1953525167 /dev/sdx

Tím se při testech vyhnete vadné oblasti a můžete otestovat pouze část disku, která se bude skutečně používat. V každém případě bych však disku, u kterého se při každém testu zvyšuje počet chyb, už nikdy příliš nevěřil a nikdy už bych mu nesvěřoval žádná důležitá data.

Disky, které vyřadíte ze serveru jako nespolehlivé, mohou někdy sloužit ještě dlouhou dobu na méně kritických místech. Je to samozřejmě vždy jen sázkou do loterie, ale je možné, že sbírka filmů vám vydrží déle na disku s přehršlí špatných sektorů, než na sadě DVD za pět kaček kus.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze