Skrivet av Mikael07:
Lite mer tankar om backup. Detta skulle nog ha sin egen tråd, men jag fortsätter här.
Egentligen borde man ju ha ungefär samma system på backupen, som den primära lagringen i NASet. Om/när dagen kommer där vi har erfarit ett meteoritnedslag rätt i NASen, och man behöver backupen (det är ju därför man har den), så är man ganska utelämnad om det bara är på 1 disk.
Det behövs ingen meteroritnedslag, det räcker med rejält åsknedslag då det kan röja fint det också och med betydligt högre sannolikhet än meteornedslag (och orsaken till att backupdiskar på samma ort inte skall vara inkopplade online hela tiden utan urkopplade och undanlagda mellan backupsessionerna - slår blixten så ryker dom också via strömförsörjning och USB-kablar om de är inkopplade) - Har sett det på nära håll i en nyrenoverad kyrka mitt i Södertälje med indirekt blixtnedslag från rätt lång distans via strömförsörjningen som tog död på all elektronik från samtliga lysrörsarmaturer av lågenergityp inkl. styrdon, datorer i lokalen till skitdyra orgelstyrsystem och syntesizers med ljudanläggningar - det hade gjort rent hus bokstavligen - dock var de flesta inblandade glada att det inte också hade tänt på den nyrenoverade kyrkan...
Citat:
Sedan en fundering kring BTRFS delta snapshots som backuplösning. Vad händer om 1 snapshot, någonstans i kedjan, erfar bitrot och blir korrupt? Kommer alla delta snapshots senare än den korrupta att fallera, eller försöker den applicera bäst det går?
BTRFS har ingen delta - utan snapshot av en subvolym är en komplett kopia av orginalet ned på fysisk sektornivå inklusive dess metadata till sista biten - och kopian använder sig av orginalets sektorer som det vore sina egna med en undantag - ny data och modifieringar ändrar inte det gamla datat utan skrivs på nya lediga sektorer i och med COW-principen, därav att det heller inte finns någon ordningsföljd som måste följas när man tar bort subvolymer igen, vilket man har i ZFS.
Givetvis har man läget om flera subvolymer (av tagna snapshot) med filer som pekar på samma fysiska uppkomna felaktiga sektor, så blir felen lika på samtliga subvolymer som har skapats från samma käll-subvolym eller kopierats med reflink eftersom alla dessa pekar på samma fysiska sektor - är det kinkiga filer så kanske man får spara dessa i två olika upplagor som inte är kopierade mellan varandra med reflink eller snapshot, använda sig av RAID vid flera diskar eller DUP om det är lokalt på en och samma disk.
- Även om BTRFS-filsystemet är designad att kunna ha blandade RAID-moder samtidigt (vilket den också har när den konverterar från en RAID-mode till en annan med balance) så finns inte verktygen ännu att allokera en viss fil till en önskad RAID-mode, som DUP som liknar RAID1 fast det är på en och samma fysiska disk. Däremot går det att sätta diskens data-del som DUP med balance på bekostnaden att halva diskens utrymme försvinner och var datasektor i filen blir utplacerade på 2 olika sektorer - har man 2 diskar i setet så väljer man RAID1, och då lägger sig även metadatat för BTRFS som RAID1 på varsin disk.
Metadatat i BTRFS brukar vara satta som DUP när filsystemet skapas på enkeldisk och datadelen som singel (man måste ha en flagga om det skall bara bli en single-metatadel som för tex. minska skrivlasten på SSD - själv byter jag hellre SSD lite mer ofta än att tulla på sådant..) .
Men det fina med BTRFS är att olika RAID-moder går att sätta och transformera i efterhand och utan att ta filsystemet ur drift - konverteringen görs med filsystemet online med 'balance' - det är inte hugget i sten om man valde fel i början som när man hanterar mdadm-RAID/LVM2-RAID eller ZFS och man får riva och bygga om från början för att ändra det.
Citat:
Upptäcker den ens att det blivit korrupt eller blir det silent corruption?
Jag kan lova dig att det inte blir någon silent corruption, det är liksom en av finesserna med BTRFS, som tillsammans med ZFS är dom enda filsystemet som har koll på sin data och märker om de blir fel. Alla andra klassiska filsystem lever på hoppet att det blir rätt...
Det blir IO-error vid läsning av sektorn om den är korrumperad och inte kan rättas, och det enligt med den felhanteringsfilosofi som SATA/SAS och NVMe-diskar beter sig vid fel sedan ST506-tiden i mitten av 1980-talet - dvs. man ger inte ut felaktig data - man vägrar att leverera någon data alls och genererar IO-fel istället för den sektorn, och det kommer att gråta mycket röd text om problematiska sektorer i dmesg när det händer och det inte kan räddas med någon paritetsdata (måste vara i DUP eller RAID1/5/6 om paritetsdata skall finnas)...
- jag har provat oönskat med RAM-fel som sabbade transporten av data i någon tillfälligt allokerad RAM-diskbuffer i den trasiga RAM-området mellan när checksumman beräknades och datat skrevs på disken och upptäcktes senare när man försökte läsa dem igen - fel som inte upptäcks om man skriver mot ext4 eller NTFS (har provat båda) och felen verifierade med compare mot orginalfilerna som fanns på backup (det var via NTFS/ext4 jag kunde simulera felet på bitnivå då den inte spärra läsning av felaktig skriven data medans på BTRFS så saknades en 4K-block som vägras att läsas ut pga att checksumma och data inte hänger ihop...
Det var så jag upptäckte RAM-fel i datorn tillsammans med att borgbackup började protestera på checksummefel vid check av repositoriet och felen fann senare med memtest86 där en bit på en viss adress är konstant låg. Om man hamnade i det området eller inte beror helt på hur MMU allokerar RAM-segment till OS och är ett fel som kan sväva och studsa runt helt slumpmässigt på olika ställen... - det var detta som fick mig att plötsligt längta efter en laptop med ECC-minne...
Att komma ihåg att data-rot beror inte bara på att någon lagring börja göra fel - andra fel i hårdvara kan också böja stänka runt fel av icke reparerbart sort. Även om jag hade haft DUP/RAID så är det tveksamt att datat hade kunnat läsas ut rätt då det beror helt och hållet på om och var den felaktiga 4K blocket med RAM sitter i pipeline mellan när program skriver data och när det slutligen landar på diskytan. Är felet redan i början av kedjan så tror alla steg efter att det är korrekt, men när felet inträffar mellan när checksumma beräknas och skrivningen till disk så högg BTRFS felet när datat senare lästes. Varken ext4 eller NTFS gör något sådant alls och den här typen av smygfel kunde ha legat latent mycket längre innan upptäckt med sådana filsystem.