Portál AbcLinuxu, 2. května 2025 07:32
Schválně, zkusím si napsat, co dělají disky, když se nezadaří čtení nebo zápis. Uvidíme co z toho vyleze. Nic jsem o té věci soustavně nečet a ani nevím, jaká literatura by na to byla. Všechny informace mám z kusých zpráv obsažených v dokumentaci k programům a HW komponentám, a z vypravování techniků některých firem, které prodávají storage systémy. Některých, to znamená že někde nevědí nic, ale většinou spíš vědí.
Data na disku jsou uložena v takových kouscích, kterým se říká sektory. Sektor je z hlediska práce disku nejmenší částice dat, kterou lze najednou přečíst nebo zapsat. Velikost sektoru bývá 512B, nevím nakolik je to povinné. Sektory jsou uloženy za sebou v řádkách, kterým se říká stopy. Stopy jsou uloženy na cylindru. Disk obsahuje spoustu datových cylindrů a ještě jeden nebo dva cylindry náhradní.
Na magnetické ploše může být defekt, takže data do sektoru někdy nejde zapsat. V tom případě disk nikomu nic neřekne, vadný sektor si připíše na seznam defektů, a na stejné logické místo si zařadí jeden sektor z náhradní oblasti - z těch dvou neveřejných cylindrů. Kdyby ovšem náhradní sektory došly, potom by disk musel s pravdou ven a pěkně ohlásit chybu zápisu, a operační systém by se o problému dozvěděl. Jinak neví nic. Každý disk má defekty, to nic neznamená.
Horší situace nastane, když defekt vznikne až časem. Sektor třeba obsahuje data a najednou nejde přečíst. To potom disk zkouší čtení vícekrát a ještě při tom všelijak nakrucuje čtecí hlavu, jestli by se to náhodou nechytlo. Když ne, disk nahlási neopravitelnou chybu a dál je to na OS. Ale i kdyby se čtení nakonec povedlo, disk by měl určitě právě pracně přečtená data uložit zase na náhradní sektor a vadný sektor si vyřadit.
Některé disky mají v sobě inteligentní subsystém zvaný S.M.A.R.T. Ten si udržuje statistiku o počtu realokovaných sektorů a vůbec o chybách za provozu. S.M.A.R.T. statistiky jsou uživatelsky přístupné klidně i za provozu. V linuxu je na to program smartctl. Jednou jsem se díval, jak se bootuje jeden systém po závadě zdánlivě bezvadně spravený, a vidím na konzole najednou nápis: Drive .... is predicting future failure. To dělá taky ten S.M.A.R.T. když se mu zdá, že už je těch chyb nějak moc. Říkal jsem že je inteligentní, ne? Výskyt tohohle hlášení by měl výrobce uznat jako důvod k reklamaci.
Můžeme se podívat na web výrobce disků, a najdeme tam diagnostické programy, které umožňují testování, třeba i nějaké nasetování, a taky prohlédnutí S.M.A.R.T. statistik. I levné disky dneska slavnostně podporují S.M.A.R.T. Ale potom si tam člověk třeba pustí analýzu povrchu, načež se mu před očima S.M.A.R.T. statistika vynuluje. Čili ještě i na konci roku 2006 bych spíš řekl, že S.M.A.R.T. je výsadou disků vyšší třídy.
Já vím že už je to dlouhý, ale ještě musím ztratit slovo o diskových polích. Jestliže jsou disky připojeny k RAID řadiči, potom tento řadič je pro ně to, čemu jsem až do teďka říkal "OS". Řadič diskového pole nemusí mít žádné speciální rutiny pro disky nějakého výrobce nebo typu. Jaké disky k němu připojíme, je aspoň do určité míry jedno. Jestliže disk ohlásí chybu čtení, pole si chybějící data zrekonstruuje z dat na ostatních discích a nahoru - tentokrát snad už opravdu do OS - pošle správná data. Ale současně by mělo chybující disk označit jako vadný a začít výstražně pištět. Toto musí dělat každé diskové pole hodné toho jména. Jiná věc je, že potom třeba přijde technik od servisu toho pole a se slovy Jo to se stává ten dotyčný disk vytáhne a zase zastrčí.
Říká se, že když v diskovém poli odejde disk, tak vždycky víc najednou. Osobně jsem to nezažil, ale proč ne. Po odpojení disku a po automatickém připojení hot spare nastane rekonstrukce paritních informací, to znamená přečíst úplně všecko ze všech zbývajícíhc disků v poli. To se potom nedivte, že se při tom projeví další defekty. Snad by se to nemuselo stávat na polích střední a vysoké třídy. Tahle pole mají umět preventivní vyhledávání vadných disků. Mají na to dva nástroje - jednak pravidelně prohlížejí S.M.A.R.T. statistiky, jednak je možné nakonfigurovat pravidelné analýzy povrchu za provozu.
Disková pole střední a vysoké třídy jsem zatím viděl jenom na obrázku, takže mám příležitost tenhle přízpěv ukončit. Howgh.
Tiskni
Sdílej:
To já fakt nevím, co dělá linux když něco nemůže přečíst. Že by posílal požadavek disku pořád dokola? Nebo že by disku opravdu tak dlouho trvalo, než to skutečně vzdá? Pole samozřejmě nemá důvod čekat, dávno si data dopočítá o odešle.
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x0008 083 082 000 Old_age Offline - 115001966 3 Spin_Up_Time 0x0006 098 098 000 Old_age Always - 0 4 Start_Stop_Count 0x0013 098 098 020 Pre-fail Always - 2370 5 Reallocated_Sector_Ct 0x0013 100 100 036 Pre-fail Always - 23 7 Seek_Error_Rate 0x0009 052 048 030 Pre-fail Offline - 1374444414102 9 Power_On_Hours 0x0012 092 092 000 Old_age Always - 7678 10 Spin_Retry_Count 0x0013 100 100 090 Pre-fail Always - 0 12 Power_Cycle_Count 0x0013 096 096 000 Pre-fail Always - 4978 197 Current_Pending_Sector 0x0030 100 100 000 Old_age Offline - 0 198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 12A moje nastavení:
/dev/hda: multcount = 32 (on) IO_support = 3 (32-bit w/sync) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 19846/16/63, sectors = 20005650, start = 0Staré Seagaty doporučuji, jsou levné a opravdu kvalitní například oproti WD, nebo IBM (ale to jsou jenom moje zkušenosti)...
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 3270 9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 3435ale prednedavnom som si uz vsimol nejake divne zvuky, ako keby nemazali loziska (keby tam ovsem nejake boli - tipujem, ze uz na vacsine/vsetkych (aspon 2.5'') diskov su fluidne :))
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000b 100 100 051 Pre-fail Always - 4 4 Start_Stop_Count 0x0032 097 097 000 Old_age Always - 4035 5 Reallocated_Sector_Ct 0x0033 253 253 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000b 253 253 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0024 253 253 000 Old_age Offline - 0 9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 882820 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1773 194 Temperature_Celsius 0x0022 133 100 000 Old_age Always - 35 197 Current_Pending_Sector 0x0033 253 253 010 Pre-fail Always - 0 198 Offline_Uncorrectable 0x0031 253 253 010 Pre-fail Offline - 0 199 UDMA_CRC_Error_Count 0x000a 100 100 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x000b 100 100 051 Pre-fail Always - 0 201 Soft_Read_Error_Rate 0x000b 100 100 051 Pre-fail Always - 0To vypadá celkem dobře, ne? zvlášť když na začátku mám
SMART overall-health self-assessment test result: PASSED
Power_On_Hours 0x0032 099 099 000 Old_age Always - 882820se mi nejak nezda...
pokud je to v hodinach, tak to odpovida dobe nejakych 100let
Pro ilustraci jeden 3 roky stary Seagate:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 758 9 Power_On_Hours 0x0032 074 074 000 Old_age Always - 23465 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 433(jsou uvedeny jen nektere polozky)
...podivejte se na teplotuHm, 35°C se mi nezdá jako nereálná hodota.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.