Viser opslag med etiketten Korrupt. Vis alle opslag
Viser opslag med etiketten Korrupt. Vis alle opslag

tirsdag den 8. maj 2012

NTFS værktøjskasse til linux

Hvad dælen gør man ved et sygt flash kort, der ikke vil mountes - hverken i Ubuntu (linux) eller Windows?

Fik et CF kort ind på arbejdet, som der lå nogle vigtige filer på - disksystemet på kortet var fuldstændig klappet sammen, så kun den ene partition ville mounte (i linux), men Nautilus gik i stå når man ville åbne mapper/filer.

Den anden partition - som selvfølgelig var den vigtigste - ville slet ikke mounte, fordi filtabellen ($MFT) var korrupt og ikke matchede backup kopien ($MFTMirr).

Windows ville slet ikke noget med nogen af partitionerne, så ikke engang mit ellers duelige Paragon Partition Manager ville røre kortet.

Løsningen blev en lidt snørklet omvej, som faktisk virkede over al forventning:

  1. Først installeres ddrescue + ntfsprogs (hvis de ikke findes allerede):
    sudo apt-get install ddrescue nftsprogs

  2. Brug ddrescue til at lave en imagefil af den døde partition (tålmodighed - det tager tid!):
    sudo ddrescue /dev/sdb1 ./partition1.img

  3. Så i med et flash kort der fungerer (min. samme størrelse eller større) - eller et andet disk medie (f.eks. USB flash/harddisk, SD kort)

  4. Slet alt indhold på mediet og opret en ny NTFS partition med "Diskredskab" (eller GParted)

  5. Brug dd for at lægge partition i imagefilen tilbage på det fungerende medie:
    sudo dd ./partition1.img /dev/sdb (sdb hos mig - det kan være sdc eller andet hos andre)

  6.  Brug ntfsfix til at rette op på filsystemet:
    sudo ntfsfix /dev/sdb (igen - det kan være sdc eller andet hos andre)

  7. Sync mediet (sudo sync), tag det ud og sæt det i igen

  8. Voilà - partitionen mounter og man kan hive de filer ud man mangler (dem der ikke er ødelagt i hvert fald)


Man kan også bruge ntfsfix, hvis man har været ude for at skulle mounte en USB disk (taget ud af en Windows maskine), som ikke er fjernet korrekt - normalt får man at vide at man skal sætte den tilbage i en Windows maskine og bruge fdisk -f til at reparere - møg irriterende (når nu man kører linux!).

Ekstern kilde: William Markito's blog - How to fix ‘$MFTMirr does not match $MFT (record 0)’

onsdag den 27. april 2011

Crash boom bang (husk backup!)

Ja - så skete det altså også for mig - min blog har været nede ca. siden kl. 13 - her løb / nemlig tør for plads, midt i jeg var ved at opdatere et indlæg.

Det gik jo som det kunne - resultatet blev en korrumperet wp_posts tabel i databasen til min lifeblog - selvfølgelig den vigtigste af alle, intet mindre kunne gøre det!

Måske jeg skulle få sat noget diskplads overvågning op? Hmm...

Hvornår tog jeg sidst backup af min blog database? Hmm... 16/12-2010 - dur ikke...

Hvad mon Webmin's database administration kan? Intet! Kunne ikke engang se databasen (selvom det kun var en af tabellerne den var gal med).

Prøvede en repair via PHPMyAdmin - kunne se alle tabellerne i databasen, men wp_posts havde status "in use" - googlede lidt - nope, den stallede bare i forsøget...

Googlede videre - virkede heller ikke, men blev ledt på sporet af  myisamchk, som jeg læste lidt man pages på - det måtte være sidste skud i bøssen.

Først lukkes mysql ned (/etc/init.d/mysqld stop)
Check med ps - ef |grep mysql indtil der ikke kører flere mysql instanser.

Første forsøg (myisamchk -r wp_posts.MYI) endte med fejlen:

myisamchk: Disk is full writing '/tmp/STxlpW4r' (Errcode: 28). Waiting for someone to free space... Retry in 60 secs

Øv... for lidt plads i /tmp - som ikke sådan lige kan udvides.

Løsningen er at specificere en anden mappe end /tmp:

mkdir /home/mysqltmp
chmod 0777 /home/mysqltmp
cd /var/lib/mysql/blog
myisamchk -r --tmpdir=/home/mysqltmp wp_posts.MYI


Se så! Det var sager - herefter startede jeg mysql igen (/etc/init.d/mysqld start) og til sidst apache (/etc/init.d/apache2 start).

Voila! lifeblog flyver igen! Og så lige en backup med BackWPup - og en reminder til mig selv om at gøre det noget oftere...