Riziko archivace na HDD - bit rot

Longin

  • ***
  • 167
    • Zobrazit profil
    • E-mail
Riziko archivace na HDD - bit rot
« kdy: 14. 10. 2023, 00:36:37 »
Ahoj

Má cenu řešit tzv. degradaci magnetického záznamu po delším nepoužívání HDD? Například různými tooly typu HDD refresh nebo je to mýtus?



RDa

  • *****
  • 3 061
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #1 kdy: 14. 10. 2023, 01:03:21 »
Nasad si tam block level checksum abys zjistil kterej blok ti uhnil. A pokud tech archivu budes mit vicero, jakoze kvuli geo-distribuci bys mel mit, tak si to pak pri pristim scrubu muzes restornout.

Nevim zda ma smysl HDD refresh, ale u pasek se typicky dela prehrani na dalsi medium v ramci toho scrubu.

Pasivne duverovat takove obnove ale nelze - musis vedet co se pokazilo a musis mit cestu jak to nahradit.

(me treba nastal na serveru bit-rot v nejake knihovne a padala aplikace ktera to pouzivala.. pri kontrole md5 vuci zaloham jsem zjistil ktery to je soubor, a pak binarni diff odhalil prave jeden jidiny flipnuty bit.. a to bylo prosim na sas disku).

Longin

  • ***
  • 167
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #2 kdy: 14. 10. 2023, 11:40:43 »
Předpokládám, že když proženu soubory checksum výpočty, tak během čtení se tyto vadné bloky detekují.
Znamená to, že na úrovni hardwaru dojde k nějakému triggeru odděleného od file systému, který remapuje vadné bloky a fyzická data, tak jak se jich podaří přečíst, se na toto nové místo překopírují?
Tedy může dojít ke ztrátě integrity dat nebo se to umí do nějaké míry poškození opravit?

Longin

  • ***
  • 167
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #3 kdy: 14. 10. 2023, 12:00:22 »
Jinak já na domácí archivaci na externí HDD používám kombinaci VeraCrypt (což trochu komplikuje použití systémových toolů na integritu dat) a programu FreeFileSync (inkrementální/diferenční záloha).

Předpokládám, že na úrovni firmwaru HDD dochází během zápisu k verifikaci zapsaných dat, takže teoreticky by mi stačilo po dokončení zálohy, respektive syncu změn a nových souborů, spočítat hash komplet všech souborů na tomto disku a při příští záloze přes syncováním znovu tyto hashe spočítat a porovnat, takže tímto bych na tom cílovém disku zjistil, jestli mezitím něco neuhnilo, když disk ležel ladem.

Re:Riziko archivace na HDD - bit rot
« Odpověď #4 kdy: 14. 10. 2023, 12:10:20 »
Předpokládám, že když proženu soubory checksum výpočty, tak během čtení se tyto vadné bloky detekují.
Znamená to, že na úrovni hardwaru dojde k nějakému triggeru odděleného od file systému, který remapuje vadné bloky a fyzická data, tak jak se jich podaří přečíst, se na toto nové místo překopírují?

No při čtení se zjistí, že kontrolní součet dat na disku nesedí a disk udělá I/O chybu. Sektor je sice označený (jako pending ve SMART), ale nic se samo nepřemapuje, protože nejde přečíst to, co se má přemapovat. Sektor se nechá, tak jak je. Třeba ddrescue jej bude číst několikrát, aby z něj vydoloval alespoň nějaká data.

K přemapování dojde až když se do tohoto sektoru zapíše (ralocated ve SMART) . Teda disk ho přemapuje do záložního sektoru a zapíše to tam a starý sektor už nikdy nečte.


Re:Riziko archivace na HDD - bit rot
« Odpověď #5 kdy: 14. 10. 2023, 12:12:54 »
Předpokládám, že na úrovni firmwaru HDD dochází během zápisu k verifikaci zapsaných dat,

To tedy ne, zapisovaná data se neverifikují. To by zpomalovalo zápis. Je potřeba, aby to udělala aplikace nebo uživatel.

Třeba badblocks -w prvně zapíše disk nějakým vzorem a pak to kontroluje. Je to dobré na přemapování vadných sektorů. Najdou se při prvním čtení a následující zápis to realokuje.

Re:Riziko archivace na HDD - bit rot
« Odpověď #6 kdy: 14. 10. 2023, 12:42:12 »
Disk nemusí vždy vrátit I/O error. Může i jednoduše vracet nesmyslná data.

Jedinou variantou jak tomu předejít je mít zrcadlo/RAID, které dokáže toto chování detekovat a vyhodit disk z pole i v tomto případě.

K tomu slouží například dm-verity, které můžeš nacpat pod klasickej md-array.

Případně může posloužit BTRFS(asi jen na zrcadla), nebo ZFS(ten ti to dokáže opravit i z RAID-zX, něco jako raid5/6).


_Jenda

  • *****
  • 1 638
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #7 kdy: 14. 10. 2023, 13:05:54 »
Já bych šel ještě dál než jen „hloupý“ checksum, a pokud jsou to jednoduše velké archivy, tak pro ně spočítal samoopravné kódy (program par2) -- pak se to umí opravit samo pokud se poškodí méně než 5% (nastavitelné) dat.

Spíš než nějaké ztráty magnetizace bych se bál vadných sektorů způsobených nějak mechanicky/nečistotou.

Longin

  • ***
  • 167
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #8 kdy: 14. 10. 2023, 13:12:33 »
Předpokládám, že když proženu soubory checksum výpočty, tak během čtení se tyto vadné bloky detekují.
Znamená to, že na úrovni hardwaru dojde k nějakému triggeru odděleného od file systému, který remapuje vadné bloky a fyzická data, tak jak se jich podaří přečíst, se na toto nové místo překopírují?

No při čtení se zjistí, že kontrolní součet dat na disku nesedí a disk udělá I/O chybu. Sektor je sice označený (jako pending ve SMART), ale nic se samo nepřemapuje, protože nejde přečíst to, co se má přemapovat. Sektor se nechá, tak jak je. Třeba ddrescue jej bude číst několikrát, aby z něj vydoloval alespoň nějaká data.

K přemapování dojde až když se do tohoto sektoru zapíše (ralocated ve SMART) . Teda disk ho přemapuje do záložního sektoru a zapíše to tam a starý sektor už nikdy nečte.

Díky za vysvětlení. Takže k té detekci vadných sektorů a označení sektoru dochází jenom během čtení?

Existuje na to nějaký ucelený software tedy kombinace syncu a kontroly integrity dat pro domácí použití?
Mě zatím napadá jenom ten ruční postup:
1) Na archivačním disku vygeneruju nový textový soubor s hashema jednotlivých souborů a ty pak diffnu se starším pro kontrolu integrity dat, jestli mezitím nějaké neschnily.
2) Přes sync tool pošlu do archivačního disku diference a nový data ze zdrojového disku (zdrojový je jen jeden).
3) Zdrojový hlavní disk a archivační disk mám synchronizovaný.
4) Spočítám na zdrojovém a archivačním disku hashe a porovnám:
- tímto můžu ověřit, že nová data a diference se zapsaly správně na archivní disk -> bloky těchto nových a diferenčních "správných" dat jako reference má jenom zdrojový disk
- tímto můžu detekovat, že na zdrojovém disku mohlo dojít k poškození dat, které nebyly součástí synchronizace -> pro tyto data je reference (správná data) na archivním disku

Longin

  • ***
  • 167
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #9 kdy: 14. 10. 2023, 13:22:33 »
Já bych šel ještě dál než jen „hloupý“ checksum, a pokud jsou to jednoduše velké archivy, tak pro ně spočítal samoopravné kódy (program par2) -- pak se to umí opravit samo pokud se poškodí méně než 5% (nastavitelné) dat.

Spíš než nějaké ztráty magnetizace bych se bál vadných sektorů způsobených nějak mechanicky/nečistotou.

Já bych spíš potřeboval něco, co vyložene data "nekomprimuje".
Tedy po připojení disku a jeho dešifrování jsou data přístupné on-the-fly a není je třeba prohánět nějakým toolem.

Re:Riziko archivace na HDD - bit rot
« Odpověď #10 kdy: 14. 10. 2023, 13:27:17 »
BTW tvrzeni, ze jednobitovou chybu zpusobil disk je vysoce "podezrele" :) Jednobitove chyby jsou typicke pro pamet RAM. Disk z principu sve cinnosti verifikuje cteni sektoru checksumem. Jednoduche chyby jako je vyhniti bitu detekuje i checksum MFM disku ze 70. let (a ohlasi chybu cteni sektoru). K popsanemu nejspise doslo tak, ze rychle letici sloka vesmirne vogonske poezie preklopila bit v pameti RAM, ktery se nasledne takto zmeneny zapsal na disk. Byla na tom pocitaci pritomna a _funkcni_ ECC RAM? Vseobecne nez zacnete resit chyby disku, ujistete se, ze mate fungujici ECC RAM.

_Jenda

  • *****
  • 1 638
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #11 kdy: 14. 10. 2023, 14:11:42 »
Já bych spíš potřeboval něco, co vyložene data "nekomprimuje".
Tedy po připojení disku a jeho dešifrování jsou data přístupné on-the-fly a není je třeba prohánět nějakým toolem.
Chápu, já třeba zálohuju rsyncem a tam tohle taky nejde rozumně udělat. Obávám se, že nic takového na Linuxu (možná ani jinde) neexistuje.

Pokud bys přežil jednorázově vytvořený archiv, který ale „jde namountovat“, tak na to používám squashfs, takhle: mksquashfs 2019-07-25/ 2019-07-25.squash -all-root -b 1048576 -comp xz

RDa

  • *****
  • 3 061
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #12 kdy: 14. 10. 2023, 19:15:12 »
BTW tvrzeni, ze jednobitovou chybu zpusobil disk je vysoce "podezrele" :) Jednobitove chyby jsou typicke pro pamet RAM. Disk z principu sve cinnosti verifikuje cteni sektoru checksumem. Jednoduche chyby jako je vyhniti bitu detekuje i checksum MFM disku ze 70. let (a ohlasi chybu cteni sektoru). K popsanemu nejspise doslo tak, ze rychle letici sloka vesmirne vogonske poezie preklopila bit v pameti RAM, ktery se nasledne takto zmeneny zapsal na disk. Byla na tom pocitaci pritomna a _funkcni_ ECC RAM? Vseobecne nez zacnete resit chyby disku, ujistete se, ze mate fungujici ECC RAM.

DLL na linuxu (byl to konkretne snmp modul co pouzival php) se fakt nezapisuje bezne, a v zaloze byl v jedne verzi, pri spousteni byl v jine verzi. Tak jako mohl by se flipnout bit v RAM, kde byla dana .so natahnuta, ale bylo tam ECC, takze je to nepravdepodobne.

Nedetekovana bitova chyba muze nastat jak na disku tak po jeho rozhrani - od toho existuje ono UBER, ktere je rekneme 1  : 10^17 .. jakoze musite prenest fakt hodne dat, aby se bit flipnul - nejcasteji ho chytne checksum, ale nekdy nemusi :) kdyz se sejde zajimava konstelace.

Jako jedna takova odhalena chyba za 20 let.. je asi dobry vysledek - ale taky indikator ze nic neni 100% spolehlive byt to ma ecc a checksumy "vsude" - kdyby tam tedy nebyl ext4 ale btrfs/zfs s data checksumy, tak by se to nejspis odhalilo jinak, nez segfaultem v dmesg :)

RDa

  • *****
  • 3 061
    • Zobrazit profil
    • E-mail
Re:Riziko archivace na HDD - bit rot
« Odpověď #13 kdy: 14. 10. 2023, 19:22:26 »
Předpokládám, že na úrovni firmwaru HDD dochází během zápisu k verifikaci zapsaných dat,

To tedy ne, zapisovaná data se neverifikují. To by zpomalovalo zápis. Je potřeba, aby to udělala aplikace nebo uživatel.

Existuje custom firmware pro disky pro enterprise segment, ktere umi pouze tuhle bezpecnou "zapis a verifikuj" operaci, s tim ze kdyz tam poslete obycejny write tak to selze. Mam takovej disk a resil jsem jak to rozjet.. ale zatim me ta pomalost nepresvedcila ze by to k necemu bylo uzitecne se tim zabyvat:

https://marc.info/?l=linux-scsi&m=168781182516362

Osobne bych se ale rezimu selhani pri zapisu neobaval.. to vzdy muzete zapsat co chcete, dropnout cache, a precist si to pak zpetne zejo.

Re:Riziko archivace na HDD - bit rot
« Odpověď #14 kdy: 14. 10. 2023, 19:57:30 »
DLL může ležet rok beze změny ale filesystem může dělat třeba online defragmentaci, raid rebalancovat, atd. takže její data skutečně skrz sběrnice a RAM projdou, a tam se ten bit může otočit.

@OP, koukni se po "cloudových" storage systémech s S3 kompatibilní API, např. Minio nebo Garage. Z principu je to resistentní vůči bit-rotu (soubory jsou adresovány podle hashe), výpadku disku nebo celých serverů, je to rychlé a škáluje to (nainstaluješ na cokoliv s diskem). Minio je víc enterprise, Garage se snadno nasazuje a je mnohem rychlejší. Spousta běžně používaných aplikací s tím pracuje přímo, a na ostatní se to přimountuje normálně do filesystemu.
« Poslední změna: 14. 10. 2023, 20:02:25 od Jakub Štech »