Recuperarea superblock`a - scrapuri admin

Uneori, hard drive-urile se înmoaie. Și adesea - nu la momentul potrivit, iar copiile de rezervă nu sunt actualizate ... Deci este necesar să se miște.
În general, următoarea situație:

Server "shaggy" an, nu reade, unitate SATA, sistem vechi, FreeBSD 5.x.






După mutarea serverului nu a crescut, dar cu o examinare mai atentă sa dovedit că hard disk-ul a căzut greu. Presarati într-o asemenea măsură, încât secțiunea de îngrijire bătute în panică kernel-ul, dar unele secțiuni nu am verificat, am jurat ca acest lucru - sistem de fișiere este incorect Superblock, rău, executați manual fsck ...
soluţie:
Există trei discuri
ad0 este discul vechi, devine învechit.
ad2 - o unitate nouă, o copie de rezervă.
ad3 - noul disc, va deveni unul de lucru, în locul celui vechi.

1. Conectăm vechiul unitate ad0 la sistemul de lucru garantat. Noul disc ad2 (mai bun decât cel mai mare) și cdrom.
2. Încărcați de pe CD FreeBSD, mergeți la modul live-cd.
3. Faceți o copie de rezervă (discul vechi se poate rupe în orice moment)
# dd dacă = / dev / ad0 din = / dev / ad2 bs = 64k conv = noerror
4. Salvați copia de siguranță în lateral.
5. Reporniți.
Ridicăm același sistem pe un nou disc.
1. Conectați discurile ad0 și ad3.
1. Încărcați de pe CD FreeBSD, mergeți la modul live-cd.
2. Împărțiți noul disc într-un mod similar (la fel ca cel vechi, cel mai important fiind faptul că partițiile nu sunt mai mici decât erau). Nu uitați să instalați încărcătorul de boot (Boot Manager) pe noul disc.






3. Reporniți, doar pentru caz, și verificați dacă toate modificările aduse sistemului de fișiere sunt păstrate exact pe noul disc.
4. Cele mai interesante. Suntem în mod live-cd. Acum trebuie să montați partiții de pe discul vechi. Pentru a face acest lucru, restaurați superblock.
4.1. În căutarea unor superblocuri alternative

# newfs -N / dev / ad0s1a

Nu uita comutatorul -N. Vedem ceva de genul:
/ dev / ad0s1a: 1024.0MB (2097152 sectoare) dimensiune bloc 16384, dimensiune fragment 2048
folosind 6 grupuri de cilindri de 183.77 MB, 11761 blks, 23552 inode.
backup-uri super-bloc (pentru fsck -b #) la:
160, 376512, 752864, 1129216, 1505568, 1881920

Suntem interesați de șirul de backup "super-bloc" (pentru fsck -b #) la: "
și super-blocuri, care sunt indicate acolo.
4.2. Fixăm super blocul
# fsck_ufs -b 160 / dev / ad0s1a
4.3. Montați partiția corectată în modul forțat, deoarece trebuie doar să citim
# mount -f / dev / ad0s1a / mnt / vechi
5. Acum transferul în sine. Montați partiția de pe noul disc (ad3):
# mount / dev / ad3s1a / mnt / new
Copiem conținutul de gudron al partiției
# tar -C / mnt / vechi-cvf -. | | tar -C / mnt / new -xpf
6. Asigurați-vă că transferul sa terminat, puteți verifica volumul, de exemplu, cu comanda df -h. Deblocați partițiile / mnt / old și / mnt / new
7. Repetați pașii 4-6 (dacă trebuie să restabiliți super blocul) sau 5-6 pentru toate partițiile.
Asta e tot. Unele nuanțe:
Sistemele de fișiere trebuie să fie identice pe discul vechi și nou. Aceasta este, în cazul în care vechiul 5.x disc FreeBSD și de mai sus a fost - cel mai probabil UFS2 la crearea de noi partiții, puteți utiliza fie noul CD-ul live. În cazul în care 4.x pe discul vechi -, de asemenea, o nouă nevoie pentru a crea partiții UFS1.
În versiunea 4.x, de asemenea, fsck_ufs -b nu va funcționa, puteți folosi dd:

# dd dacă = / dev / ad0s1a skip = 32 din = / dev / ad0s1a seek = 16 bs = 512 count = 16

Doar în caz, înainte de copierea directă. Puteți salva starea sectoarelor "așa cum a fost":
#dd dacă = / dev / ad0s1a skip = 16 din = / old_16 bs = 512 count = 16

textul a fost copiat de undeva, sursa nu este cunoscută.







Trimiteți-le prietenilor: