Det började på en lördagskväll med min fru som frågade varför vår DVR plötsligt slutade spela en show hon tittade på. Jag sa till henne att det antagligen bara var något problem, men jag skulle ta en titt. Jag går in i familjerummet för att titta, och felet uppgav i princip att den underliggande disken inte längre var tillgänglig. Inte bra! Detta var början på min tre dagar skräckhistoria …
Lite bakgrund
Min DVR är faktiskt bara specialiserad programvara (SageTV för de som är nyfikna) som körs på en dator. Programvaran är väldigt flexibel och låter dig separera alla olika aspekter av den. Jag har en separat maskin för centraliserad kontroll, schemaläggning och inspelning, separata maskiner för uppspelning och stjärnan i denna historia, en separat maskin för lagring. För lagring använder jag en Linux-filserver, använder LVM (Logical Volume Manager) för att samla många separata, icke-identiska enheter till en stor (~ 6 TB för närvarande) logisk enhet som operativsystemet ser. Eftersom säkerhetskopiering av flera TB med data är opraktiskt, och eftersom nämnda data är "bara" TV-program, har min säkerhetsfilosofi alltid varit att inte bry sig. Tills nyligen händelser hade denna filosofi inte testats av en verklig händelse.
Försök att återställa data
När jag ser felet på DVR börjar jag genast titta på lagringsservern. Filsystemet är otroligt trög och långsamt att svara, så jag frågar LVM om tillståndet för de fysiska enheterna som ligger bakom dess logiska volym. Efter en lång försening kommer det upp och säger att en 750 GB-enhet saknas. Hoppsan! Jag startar om servern och otroligt nog kommer enheten tillbaka. Jag utfärdar ett kommando pvmove för att automatiskt migrera alla data från den enheten, men det misslyckas med mindre än 2% fullbordat.
Inför en enhet som är mycket samarbetsvillig när det gäller att läsa dess data, men som åtminstone dyker upp i BIOS, vänder jag mig till mitt favoritdrivåtervinningsverktyg, Spinrite. Även om Spinrite normalt startar från flyttbara medier, satte jag för år sedan upp nätverksstart i mitt hus för olika verktyg så att jag inte behövde oroa mig för att hålla reda på media. Normalt ansluter jag bara till mitt nätverk, väljer start från nätverk och jag har en mängd olika verktyg till mitt förfogande för att lösa många problem. Problemet är att maskinen som gör allt detta magiska arbete är samma maskin som för närvarande är nere. Ingen stor sak jag säger, jag ska bara starta från en Spinrite-CD. Förutom för ett par år sedan gav den optiska enheten på min filserver upp spöket. Vid den tidpunkten som hände bestämde jag mig eftersom jag aldrig använder optiska medier i den maskinen, jag behövde inte byta ut den. Ingen oro, sa jag till mig själv, jag tar bara den optiska enheten från min huvuddator. Jag stänger av min huvuddator och tar ut den optiska enheten. Sedan letar jag efter min Spinrite-start-CD. Kan inte hitta det! Vi flyttade in i ett nytt hus för några månader sedan, så allt är i lite oordning. Jag anser att jag bara kommer att bränna en ny kopia, men jag kan inte ens hitta några tomma optiska media! Till nästa plan, en startbar flash-enhet! Efter några minuter på Google för att uppdatera mitt minne har jag en startbar Spinrite-flashenhet. Jag startar upp min Linux-låda och startar Spinrite. Datorn fryser och verkar krascha. För att eliminera variabler flyttar jag den dåliga enheten från att anslutas till ett PCI-e-expansionskort till att vara direkt anslutet till moderkortet. Nu lanserar Spinrite bra, men tar åldrar och åldrar att räkna upp enheterna som är anslutna till den. Jag kopplar systematiskt bort alla andra enheter utom den dåliga, men det slutar aldrig att räkna upp enheter oavsett hur länge jag väntar. Till nästa plan! Jag tar ut enheten från min Linux-låda, ansluter den till min huvuddator och startar upp från min glänsande nya Spinrite-flashenhet. Spinrite startar och ser enheten omedelbart, och jag säger att den ska börja återställa data, nöjd med att jag äntligen gör några framsteg. Jag går tillbaka för att kontrollera det efter kanske 10 minuter, och det finns ett fel på skärmen, och det verkar som om enheten har försvunnit igen. Frustrerad försöker jag några gånger till och säger Spinrite att starta vid olika delar av enheten, men får samma resultat varje gång. Det verkar som om det inte kommer att hjälpa mig trots allt.
I ett passande irrationellt hopp sätter jag tillbaka hårddisken i min Linux-låda och slår på den. Till min förvåning visas enheten och LVM ger allt aktivt. Vidare försöker jag lyckan utfärdar jag ett nytt kommando pvmove för att försöka flytta data från enheten igen. Tidigt ser jag felmeddelanden om att jag inte kan läsa från enheten, men förvånansvärt fortsätter pvmove att göra framsteg, närmare och närmare 100% avslutade. En blandning av förvirring, lättnad och spänning tvättar över mig. Ska jag komma bort från det här oskadade? Tyvärr är det sista som LVM gör under täcken för att göra ett pvmove rent slut, att skriva en uppdaterad logg till alla enheter under dess kontroll. Detta misslyckas naturligtvis när det försöker skriva till den dåliga enheten och därmed avbryter hela processen. Nederlag ryckte från segerns käkar igen! Jag dyker tillbaka till Google och upptäcker att det är möjligt att kontrollera hur mycket data kommandot pvmove flyttar istället för att flytta ALLA data i ett skott. Jag experimenterar med detta och lyckas med att flytta en liten del av mina data åt gången. Jag blir girig och enheten försvinner några gånger, men kommer alltid tillbaka efter datorns strömcykel. Teoretiserar att kanske bara vissa delar av enheten är dåliga, jag börjar hoppa runt istället för att arbeta på början av enheten. Efter några iterationer av detta har jag alla utom 40 GB av 750 GB säkert flyttat från enheten. För de återstående 40 GB lyckades den inte flytta oavsett vad jag försökte. Det var nu söndag kväll och jag var utmattad, så jag bestämde mig för att gå till sängs och ta itu med detta problem mer nästa dag.
Dagen efter, efter lite sömn och första hälften av min dag på jobbet, bestämmer jag mig för att bara bita kulan eftersom jag inte brydde mig om de sista 40 GB inspelade TV-programmen och började ta bort enheten från min LVM-konfiguration . Jag har gjort det många gånger tidigare, så det går ganska smidigt. Nästa på rengöringslistan är att reparera hålet mitt i filsystemet. Jag räknar med bara 40 GB istället för att 750 GB saknas, det kan inte vara så illa, eller hur? Fel! Efter reparationen hade jag 900 GB extra ledigt utrymme jämfört med före början av prövningen, så det svalde en hel del. Oj, jag säger till mig själv, det var bara TV ändå. Min DVR är äntligen funktionsduglig igen efter tre dagars avbrott, och jag kan äntligen sluta tänka på detta med varje reservhjärncykel.
Lärdomar
Så vad lärde jag mig av allt detta? Jag borde ha gjort ett bättre jobb med det som verkligen betydde. Detta hände för några veckor sedan, och under den tiden har jag inte ens missat något av TV-innehållet som försvann. Jag ångrar emellertid att jag har förhindrat mig själv, men ännu viktigare, min familj från att kunna använda TV: n i tre dagar och för att sätta mig själv i högspänningskrisläge under de tre dagarna. Om jag hade gett upp att återställa mina data i början, skulle funktionen ha återställts på ungefär en timme, inte tre dagar. Jag vet alltför väl att de flesta av tiden våra uppgifter är värdefulla, men i den här situationen var det inte.
För det andra, om dina data verkligen är värdefulla, och 99% av tiden det verkligen är, måste du skydda dem! Säkerhetskopiera dina data, det finns inga ursäkter. För mina data som inte kan ersättas, som tusentals bilder av min son som jag har på min dator, ser jag till att säkerhetskopiera dem på inte mindre än tre platser, varav en är en leverantör av molnbackup. När det gäller lagring av DVR tycker jag fortfarande inte att det är praktiskt att säkerhetskopiera det till molnet, men med priset på enheter i dag har jag ingen ursäkt för att inte ha det skyddat av RAID, och det är precis vad jag är kommer att göra. När jag för första gången skapade mitt lagringskluster tror jag att det tog mig 10 enheter eller mer för att komma till en pool med flera TB. Jag har precis kontrollerat priserna, och du kan köpa en 3 TB-enhet nu för under 100 dollar. Jag har helt enkelt ingen ursäkt för att lämna mina data oskyddade, och om en dataförlust som denna händer mig igen, är det verkligen mitt eget fel.
