Newsgroup: it.comp.os.linux.sys
Titolo: AIUTO per recupero tabella partizioni

Stamattina ho fatto una cazzatona, fortunatamente 
l'ho fatta su di un server di backup...
Ho dato un 
dd if=/dev/zero of=/dev/sda bs=512 count=1
sulla partizione di sistema sda invece della sdb!
 
Ma il sistema è ancora UP, perchè non ho riavviato..
NAturalmente al prossimo riavvio non ripartirà.
 
C'è modo di riscrivere la vecchia tabella delle partizioni
e MBR che ho cancellato ?
 
fdisk non mi aiuta perchè non la legge +..
Però ho df:
 
Filesystem        blocchi di   1K   Usati Disponib. Uso% Montato su
/dev/sda1             17856888   2260284  14674880  14% /
/dev/sda6            1822514792 1349914128 378528848  79% /home
/dev/sda3              3968124     73644   3689652   2% /tmp
/dev/sda2             39674224   1613868  36012472   5% /var
tmpfs                  2074356         0   2074356   0% /dev/shm
------------------------------------------------------------------------
df -a
Filesystem        blocchi di   1K   Usati Disponib. Uso% Montato su
/dev/sda1             17856888   2260284  14674880  14% /
proc                         0         0         0   -  /proc
sysfs                        0         0         0   -  /sys
devpts                       0         0         0   -  /dev/pts
/dev/sda6            1822514792 1349914128 378528848  79% /home
/dev/sda3              3968124     73644   3689652   2% /tmp
/dev/sda2             39674224   1613868  36012472   5% /var
tmpfs                  2074356         0   2074356   0% /dev/shm
none                         0         0         0   -  /proc/sys/fs/binfmt_misc
 
 
Grazie Mille!!!
 
-- Yena --

Questa è fstab:
 
cat /etc/fstab 
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults,acl        1 2
LABEL=/tmp              /tmp                    ext3    defaults,nosuid,noexec,nodev        1 2
LABEL=/var              /var                    ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
 
 
-- Yena --
 

Ho fatto passi avanti,
 
Tramite questo script dovrei aver recuperato la tabella leggendo da sys:
 
#!/bin/bash
 
HARDDISK=$1
 
PARTITIONS=$(ls -d /sys/block/${HARDDISK}/${HARDDISK}?/)
 
echo "unit: sectors" 
for i in $PARTITIONS; do
    DEVICE=$(basename $i)
    START=$(cat $i/start)
    SIZE=$(cat $i/size)
    echo "/dev/$DEVICE : start = $START, size = $SIZE, Id=XX" 
done
--------------------------------------------
e ho ricavato questo:
 
unit: sectors
/dev/sda1 : start = 63, size = 36869112, Id=83, bootable
/dev/sda2 : start = 36869175, size = 81915435, Id=83
/dev/sda3 : start = 118784610, size = 8193150, Id=83
/dev/sda4 : start = 126977760, size = 2, Id=5
/dev/sda5 : start = 126977823, size = 16386237, Id=82
/dev/sda6 : start = 143364123, size = 3762872757, Id=83
-----------------------------------------------------------
 
cat tabella_partizioni | sfdisk -f /dev/sda
Verifica in corso che in questo momento nessuno stia utilizzando questo disco...
BLKRRPART: Dispositivo o risorsa occupata
 
Questo disco Ã¨ attualmente in uso: ripartirlo Ã¨ probabilmente una cattiva idea.
Smontare tutti i file system e arrestare le partizioni swap su questo disco.
Usare l'opzione --no-reread per eliminare questo controllo.
 
Disco /dev/sda: 1907348 cilindri, 64 testine, 32 settori/traccia
Vecchia situazione:
UnitÃ  = cilindri di 1048576 byte, blocchi di 1024 byte, conteggiando da 0
 
   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1          0+  17438   17439-  17857520   83  Linux
/dev/sda2      17439   56183   38745   39674880   83  Linux
/dev/sda3      56184   60059    3876    3969024   83  Linux
/dev/sda4      60060  1907347  1847288  1891622912    5  Esteso
/dev/sda5      60060+  65782    5723-   5860336   83  Linux
/dev/sda6      65783+ 1845583  1779801- 1822516208   83  Linux
Attenzione: la dimensione indicata (16386237) Ã¨ superiore alla dimensione massima consentita (0)
Attenzione: la dimensione indicata (3762872757) Ã¨ superiore alla dimensione massima consentita (0)
impossibile costituire una partizione estesa adiacente
 
sfdisk: input non valid
---------------------------------------------------------
 
Qualche idea ?
 
Grazie!
-- Yena --
 

tmpfs                  2074356         0   2074356   0% /dev/shm
 
 
Prova a guardare l'opzione -n della manpagina di mke2fs, forse legge i
superblock di sda1/2/3/5/6 senza passare per la tavola delle partizioni,
che se non sbaglio e' solo per il bios e dos-windows.
Questi numero di blocchi di df servono solo orientativamente perche'
c'e' da aggiungerci il 5 percento di root piu' quella per gli inode.
 
-- 
Tanti saluti
 

Tramite questo script dovrei aver recuperato la tabella leggendo da sys:
 
A proposito, allora la tabella ce l'hai completa in /proc/partitions.
 
-- 
Tanti saluti
 

 Vecchia situazione: [...]
-----------------------
-----------------------
-----------------------
 
Vedi che sfdisk ti avverte dandoti la *vecchia* situazione. :)
 
Quindi prova con:
 
# sfdisk -d /dev/sda > partizioni
# cat partizioni
 
E poi, se sfdisk ha scritto nel file la vecchia situazione, dai:
 
# sfdisk /dev/sda < partizioni
 
al che dovrebbe di nuovo rifiutarsi e avvertirti di smontare tutto, ma 
dovrebbero sparire gli errori relativi alle dimensioni sballate.
 
Allora, per riscrivere davvero la tabella:
 
# sfdisk --no-reread --force /dev/sda < partizioni
 
Ma sì, entrambe le opzioni: adbundandis in adbundandum, che se no poi 
dicono che siamo provinciali... ;)-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
 
http://www.worldcommunitygrid.org/index.jsp
 
http://www.rnaworld.de/rnaworld/
 
http://home.edges-grid.eu/home/
 
 
http://www.gpugrid.net/
 

 
 
Ho provato a mano seguendo questa procedura:
http://serverfault.com/questions/146892/repair-partition-table
 
 
e direi che ci sono.. mi ha anche reinstallato il boot loader senza errori, unica discrepanda è l'ultima partizione...
cosa dici.. può renderla illeggibile al reboot?:
 
 
fdisk -l
 
Disco /dev/sda: 1999.9 GB, 1999999860736 byte
 
64 heads, 32 sectors/track, 1907348 cylinders
UnitÃ  = cilindri di 2048 * 512 = 1048576 byte
 
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       18003    18434556   83  Linux
/dev/sda2           18003       58001    40957717+  83  Linux
/dev/sda3           58001       62001     4096575   83  Linux
/dev/sda4           62001     1907349  1889635984    5  Esteso
/dev/sda5           62001       70002     8193118+  82  Linux swap / Solaris
/dev/sda6           70002     1907349  1881442818   83  Linux
Nota: la dimensione del settore Ã¨ 4096 (non 512)
 
Disco /dev/sdb: 2000.3 GB, 2000398934016 byte
 
255 heads, 63 sectors/track, 30400 cylinders
UnitÃ  = cilindri di 16065 * 4096 = 65802240 byte
 
 
IN prativa i 1881442818 della sda6 sono un po' di + di quella originale..
 
Grazie!!!
 
-- Yena --
 

 dicono che siamo provinciali... ;)-- 
 
Direi che sfdisk -d /dev/sda  in effetti ma da la situazione originale..
ed è una gran bella cosa :-))
 
Ma da ancora l'errore sull'ultima partizione se provo a ripristinarlo:
sfdisk --no-reread /dev/sda < partizioni 
 
Disco /dev/sda: 1907348 cilindri, 64 testine, 32 settori/traccia
Attenzione: la partizione estesa non inizia al limite di un cilindro.
DOS e Linux interpreteranno i contenuti in modo diverso.
Vecchia situazione:
UnitÃ  = cilindri di 1048576 byte, blocchi di 1024 byte, conteggiando da 0
 
   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+  18002-  18003-  18434556   83  Linux
/dev/sda2      18002+  58000-  39998-  40957717+  83  Linux
/dev/sda3      58000+  62000-   4001-   4096575   83  Linux
/dev/sda4      62000+ 1907348- 1845348- 1889635984    5  Esteso
/dev/sda5      62000+  70001-   8002-   8193118+  82  Linux swap / Solaris
/dev/sda6      70001+ 1907348- 1837347- 1881442818   83  Linux
Attenzione: la dimensione indicata (3779271968) Ã¨ superiore alla dimensione massima consentita (3779270944)
 
Grazie!!
-- Yena --

Come non detto.. ho provato una seconda volta ed è andato!!
 
sfdisk -f /dev/sda < partizioni 
Verifica in corso che in questo momento nessuno stia utilizzando questo disco...
BLKRRPART: Dispositivo o risorsa occupata
 
Questo disco Ã¨ attualmente in uso: ripartirlo Ã¨ probabilmente una cattiva idea.
Smontare tutti i file system e arrestare le partizioni swap su questo disco.
Usare l'opzione --no-reread per eliminare questo controllo.
 
Disco /dev/sda: 1907348 cilindri, 64 testine, 32 settori/traccia
Attenzione: la partizione estesa non inizia al limite di un cilindro.
DOS e Linux interpreteranno i contenuti in modo diverso.
Vecchia situazione:
UnitÃ  = cilindri di 1048576 byte, blocchi di 1024 byte, conteggiando da 0
 
   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+  18002-  18003-  18434556   83  Linux
/dev/sda2      18002+  58000-  39998-  40957717+  83  Linux
/dev/sda3      58000+  62000-   4001-   4096575   83  Linux
/dev/sda4      62000+ 1907348- 1845348- 1889635984    5  Esteso
/dev/sda5      62000+  70001-   8002-   8193118+  82  Linux swap / Solaris
/dev/sda6      70001+ 1907348- 1837347- 1881442818   83  Linux
Attenzione: la dimensione indicata (3779271968) Ã¨ superiore alla dimensione massima consentita (3779270944)
Nuova situazione:
UnitÃ  = settori di 512 byte, conteggiando da 0
 
   Device Boot    Start       End   #sectors  Id  System
/dev/sda1   *        63  36869174   36869112  83  Linux
/dev/sda2      36869175 118784609   81915435  83  Linux
/dev/sda3     118784610 126977759    8193150  83  Linux
/dev/sda4     126977760 3906249727 3779271968   5  Esteso
/dev/sda5     126977823 143364059   16386237  82  Linux swap / Solaris
/dev/sda6     143364092 3906249727 3762885636  83  Linux
Attenzione: la partizione 4 si estende dopo la fine del disco
La nuova tabella delle partizioni Ã¨ stata scritta con successo
 
Rilettura della tabella delle partizioni in corso...
BLKRRPART: Dispositivo o risorsa occupata
Il comando per la rilettura della tabella delle partizioni non Ã¨ riuscito
Riavviare adesso il sistema prima di utilizzare mkfs
 
Se Ã¨ stata creata o modificata una partizione DOS, /dev/foo7, per esempio, utilizzare dd(1)
 per azzerare i primi 512 byte: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(Consultare fdisk(8).)
 
 
Ora reinstallo il bootloader!!
 
GRAZIE!!!!!!!!!!!!!!!!
 
-- Yena --