Frågor om NAS, ZFS och ECC

Permalänk
Skrivet av backspace:

Jag har kört med 5st WD Green 2TB sen augusti 2010, jag skulle vilja påstå att rädslan för att köra WD Green i raidkonfigurationer är grovt överdriven. Självklart fallerar diskar men detta gäller ju inte endast Green-modellerna.
Det första jag gjorde var att köra kommandot wdidle som modifierar mjukvaran att styra läshuvudenas parkeringstid.
Därefter har jag kört ZFS på dessa diskar utan några problem. Har exporterat, importerat och scrubat min raidz-pool utan några incidenter sen den var skapad.

Läs följande:
https://docs.google.com/file/d/0BzHapVfrocfwc3VsQ3Y0eldFTHM/e...

Jag har byggt en liten backupservern på jobbet med 4st Green-diskar.
Nu 16 månader senare så har jag precis bytt ut den sista disken för alla har gått sönder. Dom har dött en efter en med 3-4mån mellanrum. Den första disken byttes mot en ny green som nu också är död. Efter det så har alla bytts ut mot red allteftersom dom gått sönder.

Ingen red-disk har pajat än.

Permalänk
Medlem
Skrivet av tomle:

Tänk dig att du lagrar fil A till disk. Den passerar RAM-minnet utan att påverkas av den felaktiga modulen och sparas till disk korrekt. Om du kör ext4/NTFS så är din fil förhållandevis säker om inte hårddisken drabbas av bit rot eller går sönder på annat sätt.
Tänk dig att du istället använder dig av ZFS. Din fil A är säkert lagrad precis som ovan. Du drar sedan igång din weekly scrub. Fil A läses in i minnet men checksumman läses in i den del av RAM som innehåller fel. Helt plötsligt stämmer inte filinnehållet överens med checksumman (eftersom checksumman är fel pga RAM). ZFS räknar ut vad som skulle finnas i filen egentligen baserat på checksumman och sparar ner till disk. Nu är fil A korrupt.
Skillnaden med ZFS är alltså att den verifierar dina filers integritet och det är i detta skede som du kan sabba din data. Med andra filsystem så skulle detta inte hända eftersom de inte har samma funktion för att periodiskt "scrubba".

För det första så med DDR så är det en näst intill obefintlig chans att en fil inte passerar alla moduler, men ett fel behöver i och för sig inte inträffa på en hel modul utan ofta är det några bits som har fastnat (produktionsfel) eller som byter värde godtyckligt (bitflip).

Det är sant som du säger att en scrub vid det som jag beskriver som produktionsfel kan resultera i att felet i minnet smörjs ut över datat. Men detta gäller inte fel som inträffar av stålning eller liknande eftersom man då inte får den "mönstereffekten" som gör att samma del av minnet konstant uppvisar fel värden.

Det som en scrub gör är ju primärt att läsa data och därmed involvera den felaktiga komponenten i datorn i beräkningar. Eftersom det i princip är omöjligt för mjukvara att på ett effektivt sätt skydda sig från fel i RAM så kommer detta att kunna ha effekter. Men samma sak gäller i ett traditionellt filsystem. Mitt poäng var att minnesproblemen med mycket stor säkerhet kommer att upptäckas av ZFS och att det faktum att hur mycket minne som används samtidigt inte spelar så stor roll då de flesta OS försöker att maximera användandet av RAM eftersom det är flera magnituder snabbare än roterande rost.

Argument som att andra filsystem är mindre sårbara för att det har mindre fotavtyck i minnet, när de inte ens kan meddela om att de data de levererar är felaktiga är det jag reagerar på. Skit in -> Skit ut. Man mår inte bättre av att inte vet om det. När man designar system som ZFS måste man ha någon form av inflexionspunkt som allt byggs upp kring. Minnet i ett datorsystem är denna punkten, man måste lita på det i dagens datorer. Man kan kontrollera det för fel och reparera dessa, men man måste till 100% lita på minnet.

Skrivet av tomle:

Med andra ord kan det tyvärr vara så illa att varje gång ZFS rapporterar att den har rättat ett fel så har det istället skapat ett.

Innan ZFS rapporterar att det lagat ett fel så rapporterar det att det hittat ett fel, och ett fel betyder att du har problem med hårdvaran. Kör man utan ECC är det där man ska börja sin felsökning.

Permalänk
Medlem
Skrivet av tomle:

Tänk dig att du lagrar fil A till disk. Den passerar RAM-minnet utan att påverkas av den felaktiga modulen och sparas till disk korrekt. Om du kör ext4/NTFS så är din fil förhållandevis säker om inte hårddisken drabbas av bit rot eller går sönder på annat sätt.
Tänk dig att du istället använder dig av ZFS. Din fil A är säkert lagrad precis som ovan. Du drar sedan igång din weekly scrub. Fil A läses in i minnet men checksumman läses in i den del av RAM som innehåller fel. Helt plötsligt stämmer inte filinnehållet överens med checksumman (eftersom checksumman är fel pga RAM). ZFS räknar ut vad som skulle finnas i filen egentligen baserat på checksumman och sparar ner till disk. Nu är fil A korrupt.
Skillnaden med ZFS är alltså att den verifierar dina filers integritet och det är i detta skede som du kan sabba din data. Med andra filsystem så skulle detta inte hända eftersom de inte har samma funktion för att periodiskt "scrubba".

Med andra ord kan det tyvärr vara så illa att varje gång ZFS rapporterar att den har rättat ett fel så har det istället skapat ett.

Amen för fan...
Det är helt omöjligt för någon eller något att reverse-räkna en checksumma på det sättet du beskriver. Det som kommer hända i ditt scenario är att ZFS kommer kolla ifall det finns en version av filen någonstans på disken med korrekt checksumma och om så är fallet ersätta den "korrupta" filen med en "known good" fil som har en korrekt checksumma. Om inte så kommer ZFS bara notera, dock felaktigt, att sektorn som filen låg på bråkar och markera den som dålig.

Har man kasst RAM-minne löper man risken att filer förstörs varje gång filer läses in i RAM och skrivs tillbaka till hårddisk, oavsett vilket filsystem man har. Skillnaden med ZFS/btrfs gentemot NTFS/Ext4 är att de sistnämnda aldrig märker att något är pucko.

Permalänk
Medlem

Det förutsätter att man kör speglat. Kör du raidz1 eller raidz2 t.ex. så finns inte filen på någon annan disk och då är man rökt.
Håller dock med om att det är osannolikt med reverse-checksum. Dock så kan man ju fortfarande råka ut för att man skriver ner filen fel vilken kan fortplanta sig vid scrub.

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av tomle:

Det förutsätter att man kör speglat. Kör du raidz1 eller raidz2 t.ex. så finns inte filen på någon annan disk och då är man rökt.
Håller dock med om att det är osannolikt med reverse-checksum. Dock så kan man ju fortfarande råka ut för att man skriver ner filen fel vilken kan fortplanta sig vid scrub.

Så, om jag har en Raidz1 med 5 diskar och en av diskarna dör, hur är det då möjligt att datat på den disken inte förloras, magi?
När jag sedan resilverar arrayen med en ny disk: var kommer datat från den gamla, trasiga disken från?

Permalänk
Medlem
Skrivet av Kyroz:

Så, om jag har en Raidz1 med 5 diskar och en av diskarna dör, hur är det då möjligt att datat på den disken inte förloras, magi?
När jag sedan resilverar arrayen med en ny disk: var kommer datat från den gamla, trasiga disken från?

Paritetsdata(=checksums). Det säger sig självt att om du ska spara varje fil två gånger så behöver du 2x lagringsytan, dvs spegling.

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av tomle:

Paritetsdata(=checksums). Det säger sig självt att om du ska spara varje fil två gånger så behöver du 2x lagringsytan, dvs spegling.

Huh? nu är det ju så att ZFS data integrity (checksumming vid läsning eller scrub) även fungerar i Raidz1/2/3. Fungerar även på en ensam disk om man specificerar copies=n>1.

Citat:

When a block is accessed, regardless of whether it is data or meta-data, its checksum is calculated and compared with the stored checksum value of what it "should" be. If the checksums match, the data are passed up the programming stack to the process that asked for it. If the values do not match, then ZFS can heal the data if the storage pool has redundancy via ZFS mirroring or RAID.

Förövrigt, paritetsdata != checksums.

Permalänk
Medlem
Skrivet av Kyroz:

Huh? nu är det ju så att ZFS data integrity (checksumming vid läsning eller scrub) även fungerar i Raidz1/2/3.

Absolut, jag har inte sagt emot dig.

Skrivet av Kyroz:
Citat:

When a block is accessed, regardless of whether it is data or meta-data, its checksum is calculated and compared with the stored checksum value of what it "should" be. If the checksums match, the data are passed up the programming stack to the process that asked for it. If the values do not match, then ZFS can heal the data if the storage pool has redundancy via ZFS mirroring or RAID.

Förövrigt, paritetsdata != checksums.

Om checksumman är fel pga dåligt RAM (vilket väl var vad vi diskuterade) så kan inte ZFS återskapa datat.

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av tomle:

Det förutsätter att man kör speglat. Kör du raidz1 eller raidz2 t.ex. så finns inte filen på någon annan disk och då är man rökt.
Håller dock med om att det är osannolikt med reverse-checksum. Dock så kan man ju fortfarande råka ut för att man skriver ner filen fel vilken kan fortplanta sig vid scrub.

Nu när vi går in i såpass detalj tycker jag det är viktigt att påpeka att vi talar om block inte filer. På en mirror finns det ett syster-block till varje block, på ett raid-z1 / raid-z2 system finns det datablock för varje disk minus 1 eller 2 beroende på raidz nivå.

Checksummorna i ZFS är lagrade i ett Merkle träd (checksumman för ett block är lagrat i pekaren till blocket). Blocken sprids ut över de tillgängliga diskarna och är av variabel storlek. Om man har ett raid-z1 system med fyra diskar så blir tre logiska-datablock till tre datablock på disk + 1 paritetsblock.

Vid varje läsning av ett block kollas pariteten. Om paritetsinformationen blir ändrad pga. att den hamnade i "dålig ram" så kommer kommer checksumman inte stämma. ZFS vet inte var felet ligger utan läser de övriga blocken från de andra diskarna och kollar om dessa ger rätt checksum. Hamnar samtliga av dessa block i dålig ram så blir det omöjligt att reparera det "felaktiga" blocket. Dock försöker ZFS läsa data som ändras om igen och igen om det då stämmer så går det vidare.

Felen fortplantar sig inte via en scrub, de upptäcks och kan felaktigt rättas pga. fel i ram. Om det uppkommer nya fel så är det för att det sker fler fel i ram, inte för att ZFS felaktigt rättade tidigare. Scrub lämnar alltid det den jobbat på 100% intakt. Felen fortplantar sig inte genom scrub, de kommer alla från felaktig ram.

Skrivet av tomle:

Din fil A är säkert lagrad precis som ovan. Du drar sedan igång din weekly scrub. Fil A läses in i minnet men checksumman läses in i den del av RAM som innehåller fel. Helt plötsligt stämmer inte filinnehållet överens med checksumman (eftersom checksumman är fel pga RAM). ZFS räknar ut vad som skulle finnas i filen egentligen baserat på checksumman och sparar ner till disk. Nu är fil A korrupt.
Skillnaden med ZFS är alltså att den verifierar dina filers integritet och det är i detta skede som du kan sabba din data. Med andra filsystem så skulle detta inte hända eftersom de inte har samma funktion för att periodiskt "scrubba".

Med andra ord kan det tyvärr vara så illa att varje gång ZFS rapporterar att den har rättat ett fel så har det istället skapat ett.

Risken finns at man använder skadad paritet för att reparera ett fel, men risken är också låg att man får fel på en hel stripe av block och således förlorar data. Det gäller inte som du påstår ovan att ZFS plötsligt rättar till det felaktiga blocket, med dålig data och man får en kaskadeffekt över hela poolen.

Med en enkel

zpool status -v

kan man till och med se vilka filer som hade block som ZFS inte kunde läsa (mer data än du hade redundans för förstördes av ram).

Skrivet av tomle:

Paritetsdata(=checksums). Det säger sig självt att om du ska spara varje fil två gånger så behöver du 2x lagringsytan, dvs spegling.

Nej, du kan Det handlar inte om filer utan block. Tre av fyra diskar i raid-z1 räcker för att ge alla filer tillbaka. (Den fjärde disken var den som hade en ckecksum som hamnade i i dålig ram.)

Skrivet av tomle:

Om checksumman är fel pga dåligt RAM (vilket väl var vad vi diskuterade) så kan inte ZFS återskapa datat.

Jo, en tvåvägsmirror och Raid-z1 klarar ett fel. Raid-z2 klarar två fel osv. Grejen med minnesfel av den typen vi diskuterar är att de uppenbarar sig som diskfel som egentligen inte existerar. För att ZFS inte ska kunna returnera data så måste samma block på samtliga diskar hamna på ett ställe i ram som har en bit satt till ett värde som inte motsvaras av datat.

Om man har kör utan ECC och har errors under en scrub borde man alltid undersöka RAM först. Det är knappas kosmisk strålning som orsakar många flippade bits utan hårdvarufel.

Att ZFS på en enda disk utan några kopior av data fortfarande kan läsa filsystemet efter att upp till 1/8 av disken är överskriven är bara det en god anledning att köra ZFS. Visst, man kan ha förlorat data, men metadatablocken är såpass utspridda på disken att man fortfarande kan traversera filsystemet och få indikation på vilka filer som inte går att läsa. En 4TB disk med NTFS är en tidsbomb, ni tror väl inte att ReFS utvecklades bara för at det var kul?

Jag föredrar att få en indikation på att data kan vara utsatt i motsättning till att inte veta om det.

Permalänk
Medlem
Skrivet av beh:

En 4TB disk med NTFS är en tidsbomb, ni tror väl inte att ReFS utvecklades bara för at det var kul?

varför är det en tidsbomb?
(säger inte emot, utan är endast nyfiken )

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Medlem
Skrivet av morxy49:

varför är det en tidsbomb?
(säger inte emot, utan är endast nyfiken )

Högre datatäthet och prispress gör att man tillåter mer fel på disken som man senare korrigerar i firmware. Det är därför det sitter "stora" ARM kontrollers på dagens diskar. Situationen är inte så galen som SSDs, men den börjar närma sig.

På den aktuella WD40EFRX anger WD att det blir bitfel maximalt 1 på 10^14, vilket betyder maximalt ett fel per 12.5 TB. Då om du har otur kommer du få ett fel innan du fyllt disken fyra gånger.

Tidsbomben ligger i det faktum att man inte har koll på hur data mår innan man läst det och då är det redan för sent.

Kör man raid är det värre eftersom hastigheten på diskarna inte har ökat så mycket som kapaciteten. Du har ett raid5 system med fyra diskar som i exemplet ovan och en disk går sönder. Du är mycket snabb och byter genast ut den felande disken med en ny. Under optimala förhållanden tar det ca 7:30 att återskapa ditt raid till den nya tomma disken (150 MB/s i skrivning i snitt). Under denna tiden är de andra gamla diskarna under maximal stress och måste läsa 3*4TB på tre spindlar = 12 TB data läses, varje spindel ger i värsta fall genomsnittligt 12.5 TB data innan ett fel, du kommer statistiskt att få 12TB / 4,17 ≈ 3 Bit fel under rekonstruktionen. (Om en spindel ger ett fel per 12,5TB så ger tre spindlar ett fel per 4.17TB).

För att inte tala om den ökade risken att du löper att ännu en av diskarna ger sig likt den första under tiden du återbygger. De har ju trots allt samma historik, varit utsatta för samma load och miljö sedan driftsättningen.

Permalänk
Medlem
Skrivet av beh:

Högre datatäthet och prispress gör att man tillåter mer fel på disken som man senare korrigerar i firmware. Det är därför det sitter "stora" ARM kontrollers på dagens diskar. Situationen är inte så galen som SSDs, men den börjar närma sig.

På den aktuella WD40EFRX anger WD att det blir bitfel maximalt 1 på 10^14, vilket betyder maximalt ett fel per 12.5 TB. Då om du har otur kommer du få ett fel innan du fyllt disken fyra gånger.

Tidsbomben ligger i det faktum att man inte har koll på hur data mår innan man läst det och då är det redan för sent.

Kör man raid är det värre eftersom hastigheten på diskarna inte har ökat så mycket som kapaciteten. Du har ett raid5 system med fyra diskar som i exemplet ovan och en disk går sönder. Du är mycket snabb och byter genast ut den felande disken med en ny. Under optimala förhållanden tar det ca 7:30 att återskapa ditt raid till den nya tomma disken (150 MB/s i skrivning i snitt). Under denna tiden är de andra gamla diskarna under maximal stress och måste läsa 3*4TB på tre spindlar = 12 TB data läses, varje spindel ger i värsta fall genomsnittligt 12.5 TB data innan ett fel, du kommer statistiskt att få 12TB / 4,17 ≈ 3 Bit fel under rekonstruktionen. (Om en spindel ger ett fel per 12,5TB så ger tre spindlar ett fel per 4.17TB).

För att inte tala om den ökade risken att du löper att ännu en av diskarna ger sig likt den första under tiden du återbygger. De har ju trots allt samma historik, varit utsatta för samma load och miljö sedan driftsättningen.

hm. mycket intressant faktiskt.
Menar du att om man kör med ZFS så kan man kringgå detta problem, eller gäller det både NTFS och ZFS?
Skulle det vara säkrare med RAIDz2?

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Medlem

Man får samma problem med raid-z1 som raid5, med några undantag: Enstaka bitfel kommer inte att förstöra filsystemet eller göra delar av det otillgängligt. ZFS återskapar bara de data som behöver återskapas, på ett 4*4TB enkelparitet fyllt till 75% behöver ZFS återskapa 3TB medans MDraid och HW raid måste återskapa 4TB. Annars är det stort sett lika.

Ja Raid-Z2 är att föredra vid flera diskar. Vid 4 diskar så kan man ju köra stripade mirrors (RAID-10).

Permalänk
Medlem
Skrivet av beh:

Nu när vi går in i såpass detalj tycker jag det är viktigt att påpeka att vi talar om block inte filer. På en mirror finns det ett syster-block till varje block, på ett raid-z1 / raid-z2 system finns det datablock för varje disk minus 1 eller 2 beroende på raidz nivå.

Checksummorna i ZFS är lagrade i ett Merkle träd (checksumman för ett block är lagrat i pekaren till blocket). Blocken sprids ut över de tillgängliga diskarna och är av variabel storlek. Om man har ett raid-z1 system med fyra diskar så blir tre logiska-datablock till tre datablock på disk + 1 paritetsblock.

Vid varje läsning av ett block kollas pariteten. Om paritetsinformationen blir ändrad pga. att den hamnade i "dålig ram" så kommer kommer checksumman inte stämma. ZFS vet inte var felet ligger utan läser de övriga blocken från de andra diskarna och kollar om dessa ger rätt checksum. Hamnar samtliga av dessa block i dålig ram så blir det omöjligt att reparera det "felaktiga" blocket. Dock försöker ZFS läsa data som ändras om igen och igen om det då stämmer så går det vidare.

Felen fortplantar sig inte via en scrub, de upptäcks och kan felaktigt rättas pga. fel i ram. Om det uppkommer nya fel så är det för att det sker fler fel i ram, inte för att ZFS felaktigt rättade tidigare. Scrub lämnar alltid det den jobbat på 100% intakt. Felen fortplantar sig inte genom scrub, de kommer alla från felaktig ram.
Risken finns at man använder skadad paritet för att reparera ett fel, men risken är också låg att man får fel på en hel stripe av block och således förlorar data. Det gäller inte som du påstår ovan att ZFS plötsligt rättar till det felaktiga blocket, med dålig data och man får en kaskadeffekt över hela poolen.

Med en enkel

zpool status -v

kan man till och med se vilka filer som hade block som ZFS inte kunde läsa (mer data än du hade redundans för förstördes av ram).

Jag vet att det handlar om block, det var Kyroz som tog upp filer.
Det beror på hur många gånger ZFS lagrar checksumman för samma block. Säg att du har en fil A som lagras i raid-z1 som består av block A1-A4:
Disk 1: A1
Disk 2: A2
Disk 3: A3
Disk 4: A4
Disk 5: Checksumma för A

Om du vid en scrub läser in checksumman för A i trasigt RAM så kommer inte checksumman att stämma. Då kommer ZFS försöka lista ut vilket block som är felaktigt och reparera detta. Det jag försöker säga är att i såna fall kan scrub faktiskt korrumpera data. Eftersom detta i värsta fall kan hända vid varje scrub så menar jag att varje gång man kör scrub kan datat bli korrupt. Det beror dock självklart inte på scrub utan är ett resultat av felaktigt RAM.

Jag hävdar inte att det är sannolikt, det är snarare ett värsta-fall-scenario.

Skrivet av beh:

Nej, du kan Det handlar inte om filer utan block. Tre av fyra diskar i raid-z1 räcker för att ge alla filer tillbaka. (Den fjärde disken var den som hade en ckecksum som hamnade i i dålig ram.)

Absolut, jag säger ju samma sak.

Skrivet av beh:

Jo, en tvåvägsmirror och Raid-z1 klarar ett fel. Raid-z2 klarar två fel osv. Grejen med minnesfel av den typen vi diskuterar är att de uppenbarar sig som diskfel som egentligen inte existerar. För att ZFS inte ska kunna returnera data så måste samma block på samtliga diskar hamna på ett ställe i ram som har en bit satt till ett värde som inte motsvaras av datat.

Säg att du kör raid-z1. En av dina diskar dör. Nu behöver ZFS återkonstruera datat genom att läsa t.ex. checksumman. Då är det ju tråkigt om den checksumman är korrupt. Eller om disken som innehåller checksumman dör och du har fått en felaktig skrivning på en av de andra diskarna.
Ni ligger ju inte all checksumma på samma disk så man klarar sig nog helt ok ändå men visst kan felaktigt RAM leda till att du inte kan återskapa ditt data, även om man använder ZFS.

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av tomle:

Jag vet att det handlar om block, det var Kyroz som tog upp filer.
Det beror på hur många gånger ZFS lagrar checksumman för samma block. Säg att du har en fil A som lagras i raid-z1 som består av block A1-A4:
Disk 1: A1
Disk 2: A2
Disk 3: A3
Disk 4: A4
Disk 5: Checksumma för A

Om du vid en scrub läser in checksumman för A i trasigt RAM så kommer inte checksumman att stämma. Då kommer ZFS försöka lista ut vilket block som är felaktigt och reparera detta. Det jag försöker säga är att i såna fall kan scrub faktiskt korrumpera data. Eftersom detta i värsta fall kan hända vid varje scrub så menar jag att varje gång man kör scrub kan datat bli korrupt. Det beror dock självklart inte på scrub utan är ett resultat av felaktigt RAM.

Jag hävdar inte att det är sannolikt, det är snarare ett värsta-fall-scenario.
Absolut, jag säger ju samma sak.

Säg att du kör raid-z1. En av dina diskar dör. Nu behöver ZFS återkonstruera datat genom att läsa t.ex. checksumman. Då är det ju tråkigt om den checksumman är korrupt. Eller om disken som innehåller checksumman dör och du har fått en felaktig skrivning på en av de andra diskarna.
Ni ligger ju inte all checksumma på samma disk så man klarar sig nog helt ok ändå men visst kan felaktigt RAM leda till att du inte kan återskapa ditt data, även om man använder ZFS.

Ligger det inte checksumma på varje disk? Tror inte det är så att disk 5 har enbart checksumma och ingen data och de övriga diskarna i exemplet saknar checksumma och har enbart data. Det ligger väl data plus checksumma på alla diskarna i en raidz? För att zfs ska kunna reparera krävs det väl att checksummorna stämmer annars säger det väl bara att det är oreparerbar data? Byter man det tasiga RAM-minnet och kör en ny scrub så stämmer checksummorna och data kan repareras om man har tur.

Men filen kanske var korrupt redan innan den sparades till ZFS. Om man redigerar ett dokument på dator med trasigt RAM-minne och något blir korrupt i minnet innan filen sparas ner på disk så har man sin korrupta fil. ZFS kanske gör sin sak korrekt men det är ändå korrupta filer man har lagrat. Då hjälper det inte om NASen kör ECC om man sitter på en dator utan ECC när man arbetar med sina filer via nätverket. Om man tycker ECC-minne är viktigt bör man kanske överväga om det behövs i alla datorer man använder och inte bara på sin NAS.

Själv har jag inte ECC på min hemmafilserver och ej heller på min skrivbordsdator, men båda dessa kör ZFS. Kanske har jag korrupta filer men risken är inte större för detta bara för att jag använder ZFS utan snarare mindre känns det som. Har varit fall där jag tror ZFS har räddat filer för mig, exempelvis när jag hade glappande SATA-kabel. Ibland har det hänt att scrub rapporterat fel men att ingen data förlorats. Ett exempel var när jag hade hårddiskar som gick för varma då fick jag slumpmässigt fel från dessa men med intakt data i min zpool (hade turen att inte få fel från flera diskar samtidigt). Uptäckte att något var galet tack vare ZFS. Förbättrade kylningen till hårddiskarna och felen försvann. Tack vare ZFS kan man upptäcka krånglande hårdvara snabbare än annars och om felen går obemärkt förbi hinner det bli större skada eftersom det tar längre tid innan de åtgärdas.

Säger inte att ECC är onödigt men däremot tycker jag inte att ECC blir mera nödvändigt bara för att man använder ZFS. Många kanske lägger jättemycket krut på ZFS med massa redundans och ECC men glömmer bort att göra backup på sina filer. Då känns det som man pririterat i fel ordning.

Permalänk
Medlem

Jag håller med, läste just genom End-to-end Data Integrity for File Systems: A ZFS Case Study:

Citat:

In summary, so far we have studied two extremes: ZFS, a complex filesystem with many techniques to maintain on-disk data integrity, and ext2, a simpler filesystem with few mechanisms to provide extra reliability. Both are vulnerable to memory corruptions. It seems that regardless of the complexity of the file system and the amount of machinery used to protect against disk corruptions, memory corruptions are still a problem.

Som jag ser det är det bättre att veta när man inte kan lita på ett dataset, byta ut den felaktiga komponenten och jämföra med backup än att leva i tron om att allt är "fine and dandy" och inte veta något om problemen som din server upplever. Oavsett om man har ECC eller ej.

Därför skulle jag välja ZFS framför andra filsystem alla dagar i veckan. Jag uppskattar den enorma utveckling som ligger bakom ZFS och förstår vilka utmaningar som utvecklarna på SUN stod framför när de skapade filsystemet.

För några dagar sedan postade jag lite länkar för den som är intresserad att höra utvecklarna själva berätta lite om hur systemet är designat och utvecklat:
FreeBSD: Utöka ZFS mirror pool#8

Permalänk
Medlem

Post Mortem: Seagate ST3000DM001 Som kuriosa kan jag nu meddela att jag hade mitt första diskhaveri nu här om dagen. Jag kör ett raidz2 array med 6 stycken Seagate 3TB. Alla med uppgraderas firmware CC4H för att de inte ska hålla på och låsa huvudet stup i kvarten.

Den felande disken har under en tid visat tendenser på att inte hänga med, SMART data visar att den mappar om sektorer under hårt arbete med skrivning till tidigare oanvänt område. Under förra scrub så gick den det mycket sakta och SMART visade att antalet felaktiga sektorer ökade. Jag höll ett öga på zpool status för att se när felen skulle visa sig för ZFS. Efter några timmar så började det dyka upp några fel, först 128 kB, sedan 512 kB och efter ytterligare en stund blev det ont om lediga sektorer att mappa om till och disken tvärdog. Då hade scrubben segat iväg på ett fåtal MB/s en stund.

Efter att ha bytt ut disken så tog det nästan 9 timmar att återställa 1.93TB till en ny disk, så resilverprocessen har snittat ca 61 MB/s. Det är här man är glad över två saker: 1. Att ZFS inte behöver återställa mer än vad som är använt (i mitt fall 2/3 av diskarna). 2. Att man inte har färre, större diskar som är fyllda ännu mer. IO hos varje disk är en klart begränsande faktor vid resilvering. Dock ska det märkas att hastigheten varierar mycket under resilverprocessen, det är endast om man låter "zpool iostat tank 60" integrera över minst en minut som man får en rättvis hasighetsindikation pga. den mycket godtyckliga strykturen på data hos ZFS.

Mitt array är nu uppe och rullar igen. Förlorade ingen data och har skickat förfrågan om RMA på disken som endast är två år gammal; snurrat 1,4 år; startat ca 40 gånger; parkerat huvudet ca 10000 gånger och haft en maxtemp på 40 grader (snitt temp är 33, men varma sommardagar kan ställa till det om det kommer en del IO).

Permalänk
Medlem
Skrivet av beh:

Post Mortem: Seagate ST3000DM001 Som kuriosa kan jag nu meddela att jag hade mitt första diskhaveri nu här om dagen. Jag kör ett raidz2 array med 6 stycken Seagate 3TB. Alla med uppgraderas firmware CC4H för att de inte ska hålla på och låsa huvudet stup i kvarten.

Den felande disken har under en tid visat tendenser på att inte hänga med, SMART data visar att den mappar om sektorer under hårt arbete med skrivning till tidigare oanvänt område. Under förra scrub så gick den det mycket sakta och SMART visade att antalet felaktiga sektorer ökade. Jag höll ett öga på zpool status för att se när felen skulle visa sig för ZFS. Efter några timmar så började det dyka upp några fel, först 128 kB, sedan 512 kB och efter ytterligare en stund blev det ont om lediga sektorer att mappa om till och disken tvärdog. Då hade scrubben segat iväg på ett fåtal MB/s en stund.

Efter att ha bytt ut disken så tog det nästan 9 timmar att återställa 1.93TB till en ny disk, så resilverprocessen har snittat ca 61 MB/s. Det är här man är glad över två saker: 1. Att ZFS inte behöver återställa mer än vad som är använt (i mitt fall 2/3 av diskarna). 2. Att man inte har färre, större diskar som är fyllda ännu mer. IO hos varje disk är en klart begränsande faktor vid resilvering. Dock ska det märkas att hastigheten varierar mycket under resilverprocessen, det är endast om man låter "zpool iostat tank 60" integrera över minst en minut som man får en rättvis hasighetsindikation pga. den mycket godtyckliga strykturen på data hos ZFS.

Mitt array är nu uppe och rullar igen. Förlorade ingen data och har skickat förfrågan om RMA på disken som endast är två år gammal; snurrat 1,4 år; startat ca 40 gånger; parkerat huvudet ca 10000 gånger och haft en maxtemp på 40 grader (snitt temp är 33, men varma sommardagar kan ställa till det om det kommer en del IO).

Alltid kul nör det funkar som det ska

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Medlem

Detta får mig att undra hur mina ST2000DM001 mår. Man kanske skulle börja använda sig av SMART... Kollar med zpool status emellanåt och ser jag inget konstigt har jag nöjt mig med detta. Fick du upp någon varning att den börjat mappa om sektorer eller hur kom du på att du skulle kolla på detta?

Skönt att det funkade så bra.

Permalänk
Medlem
Skrivet av ronnylov:

Detta får mig att undra hur mina ST2000DM001 mår. Man kanske skulle börja använda sig av SMART... Kollar med zpool status emellanåt och ser jag inget konstigt har jag nöjt mig med detta. Fick du upp någon varning att den börjat mappa om sektorer eller hur kom du på att du skulle kolla på detta?

Skönt att det funkade så bra.

Jag brukar hålla koll på SMART eftersom diskarna kan rapportera temperatur via detta interface, även om installationen är virtualiserad (systemets temperatur måste jag kolla i ESXi). Har några script för att plocka ut "oegentligheter" som jag hämtat från Zfsguru projektet som jag gillar även om utvecklarna brukar vara väl optimistiska i sina tidsestimat och senaste orsak till försening var att de bygger ett helt eget (!!) CMS för systemet.

Jag fick en varning att en disk betedde sig underligt under en scrub, många sektorer rapporterades som remappade för att disken sedan framstod som om den var utan problem. Eftersom jag inte kan "polla" SMART konturneligt så var det ju bara tur att scriptet hann se det. Men att ha ett öga på SMART tror jag är smart.

Permalänk

Har du lust att dela med dig av scripten ? Jag vill försöka få till någon SMART övervakning på min N54L som kör Synology DSM porten XPenology med RDM mappade diskar.

Permalänk
Medlem

Kan kan packa i hop de lite senare när jag har tid, det är verkligen inget fancy och bara parsar rå output från smartctl.

Permalänk
Medlem
Skrivet av miniGranis:

Har du lust att dela med dig av scripten ? Jag vill försöka få till någon SMART övervakning på min N54L som kör Synology DSM porten XPenology med RDM mappade diskar.

Finns inte smartd då? Kör det på min n54l med debian.

Har satt upp det så jag får mail om smart och mdadm raid checks.

Visa signatur

CCNP

Permalänk
Medlem
Skrivet av beh:

Jag brukar hålla koll på SMART eftersom diskarna kan rapportera temperatur via detta interface, även om installationen är virtualiserad (systemets temperatur måste jag kolla i ESXi). Har några script för att plocka ut "oegentligheter" som jag hämtat från Zfsguru projektet som jag gillar även om utvecklarna brukar vara väl optimistiska i sina tidsestimat och senaste orsak till försening var att de bygger ett helt eget (!!) CMS för systemet.

Jag fick en varning att en disk betedde sig underligt under en scrub, många sektorer rapporterades som remappade för att disken sedan framstod som om den var utan problem. Eftersom jag inte kan "polla" SMART konturneligt så var det ju bara tur att scriptet hann se det. Men att ha ett öga på SMART tror jag är smart.

Intressant, såg detta script också:
https://calomel.org/zfs_health_check_script.html

Vilken större omfattning kör smartctl? Kör du long eller short test? Testar ett long test på en av mina diskar nu för att se vad jag får för output.

Permalänk
Medlem

Det är inte testen som jag kör, utan bara utläsning av SMART data. Ska packa i hop filerna nu, men garanterar inte att de kommer att köra på andra system. Jag är verkligen inte sugen på att maintaina något nytt projekt just nu.