Questo post è disponibile anche in: Inglese

Vi possono essere diversi motivi che portano alla perdita della tabella delle partizioni o alla sua corruzione. Nel caso di datastore VMFS le possibili cause sono: resignature da un altro sistema (ad esempio il backup server, nel caso funzioni in SAN mode), un errore umano (basta eseguire, su dischi condivisi, da vSphere Client un Datastore / Delete da un ESXi non ancora collegato al vCenter Server), o anche a causa di qualche problema lato storage (mi è capitato proprio questo caso di recente su uno storage entry level).

Al verificarsi di queste situazioni, di solito, la partizione VMFS è in realtà ancora presente e soprattutto lo sono i relativi dati, manca “solo” l’informazioni di dove inizia e finisce la partizione. Ma questo può essere semplicissimo da ricostruire a patto che applichiate sempre la recommended practice relativa ai datastore VMFS: uno e uno solodatastore per ogni disco, ossia un’unica partizione del massimo della capacità. In questo modo l’ultimo cilindro sarà l’ultimo disponibile sul disco e il primo quello che viene usato per l’allineamento, dato che le partizioni VMFS sono di norma allineate, a parte alcuni casi particolari su sistemi con il vecchio ESX (di fatto il disco creato durante l’installazione di ESX non era mai allineato).

Il problema è che per ricostruire la tabella delle partizioni vi serviranno tool diversi (anche se in teoria si potrebbe fare tutto con il secondo) in base al tipo di tabella delle partizioni:

  • Per i dischi in formato MBR bisogna (o comunque è più semplice) usare il comando fdisk (tra l’altro relativamente facile per chi ha già esperienza con Linux).
  • Per i dischi nel nuovo formato GPT bisogna usare partedUtil (dato che fdisk non è supportato su questi dischi) che è diverso e leggermente più complicato.

Ricordiamo che a partire da ESXi 5.0 il nuovo formato di default è prioprio il GPT. Ma se è certo che su ogni datastore VMFS3 il formato è sicuramente quello MBR, non è deterministico che un VMFS5 sia sempre in formato GPT: è vero per quelli nuovi creati da zero, ma non è sempre vero per quelli convertiti da VMFS3 (per maggiori informazioni vedere questo post). In generale i datastore VMFS3 aggiornati a VMFS5 rimangono in formato MBR, fino a quando non vengono poi estesi oltre i 2 TB, in quel caso vengono convertiti in GPT (con una nota sull’allineamento che vedremo dopo).

Quindi per ESX/ESXi fino alla versione 4.1 inclusa si è sicuri di avere VMFS3 e quindi dischi MBR. A partire da ESXi 5.0 bisogna controllare il tipo di dischi per conoscerne il formato (si può facilmente scoprire con il comando fdisk -l).

Come recuperare una partizione VMFS su un disco MBR

La KB 1002281 (Recovering a lost partition table on a VMFS volume) descrive esaustivamente i passi richiesti:

  • Accedere ad ESX/ESXi usando la console. Per ESXi, vedere Tech Support Mode for Emergency Support (1003677)
  • Eseguire il comando:
    fdisk -l
  • Individuare il disco “compromesso” (sarà quello senza alcuna partizione) e segnarsi il relativo nome (qualcosa del tipo /dev/disks/…)
  • Eseguire il comando fdisk per ripartizionare il disco corrotto usando la sintassi:
    fdisk -u /dev/disks/…
  • Creare la partizione mancante usando i seguenti comandi di fdisk:
    1. Premere n (e Invio) per creare una nuova partizione.
    2. Premere p (e Invio)  per crearla di tipo primaria.
    3. Premere 1 (e Invio)  per specificare che sarà la prima partizione.
    4. Scrivere 128 (e Invio) per allineare la partizione al settore 128.
    5. Premere Invio per usare il valore di default (ultimo settore dispobile).
    6. Cambiare il tipo di partizione nel formato fb (VMFS):
      1. Premere t (e Invio). Notare che la partizione 1 sarà automaticamente selezionata (essendo l’unica).
      2. Scrivere fb (e dare Invio) .
  • Premere  w (e Invio) per salvare la tabella delle partizioni.
  • Eseguire vmkfstools -V per il rescan dei datastore VMFS.

Come recuperare una partizione VMFS su un disco GPT

A differenza di fdisk, il comando partedUtil  non è per nulla interattivo e richiede un po’ di attenzione e una maggior conoscenza sulla sintassi. Per maggiori informazioni potete consultare la KB 1036609(Using the partedUtil command line utility on ESXi/ESX).

Il passi sono comunque concettualmente simili al caso precedente. Prima di tutto bisogna raccogliere le informazioni sui dischi con il comando fdisk -l

Come si può notare il secondo disco è senza alcuna partizione. Da questa schermata otteniamo già tutte le inforazioni che ci serviranno per procedere, in particolare il nome del disco e i settori utilizzabili dello stesso. Questa seconda parte è pure ottenibile con il comando specifico partedUtil getUsableSectors:

Questi numeri sono estremamente importanti perchè l’ultimo settore disponibile è quello derivato dalla differenza (nell’esempio 20971520 – 34 = 20971486).

A questo punto è possibile usare il comando partedUtil setptbl per creare la partizione mancante. La sintassi è:

partedUtil setptbl diskName label "partNum startSector endSector type/guid attr"

Il diskName è stato ottenuto in precedenza con fdisk -l output, mentre label è semplicemente il valore gpt. Più complessa la seconda parte che è composta da diversi valori:

  • Il valore startSector è di norma 2048 (l’allineamento usato per VMFS-5 nativi).
    Nota: in realtà volumi VMFS-3 aggiornati a VMFS-5 continuano ad avere l’inizo al settore 128, anziché 2048.
  • Il valore endSector è stato calcolato con la differenza spiegata in precedenza dei valori ottenuti da partedUtil getUsableSectors.
    Nota: il realtà il numero più piccolo pare essere sempre 34.
  • Il valore type è il tipo di partizione e per VMFS è AA31E02A400F11DB9590000C2911D1B8.
  • Il valore attribute è un numero che vale 128, per la partizione bootable e semplicemente 0 per tutte le altre.

Quindi nell’esempio precedente il comando sarebbe (nota: è solo un esempio rapportato ai valori della schermata precedente, non eseguitelo sul vostro sistema!):

partedUtil setptbl /dev/disks/mpx.vmhba1:C0:T1:L0 gpt "1 2048 20971486  AA31E02A400F11DB9590000C2911D1B8 0"

Attenzione: non c’è alcun undo (su fdisk basta fare q al posto di w e si annulla qualunque modifica). Quindi prestate molta attenzione a questo tipo di comando.

This post has already been read 1013 times.

Andrea MauroAbout Andrea Mauro (2735 Posts)

Virtualization, Cloud and Storage Architect. Tech Field delegate. VMUG IT Co-Founder and board member. VMware VMTN Moderator and vExpert 2010-18. Dell TechCenter Rockstar 2014-15. Microsoft MVP 2014-16. Veeam Vanguard 2015-18. Nutanix NTC 2014-18. PernixPro 2014-16. Several certifications including: VCDX-DCV, VCP-DCV/DT/Cloud, VCAP-DCA/DCD/CIA/CID/DTA/DTD, MCSA, MCSE, MCITP, CCA, NPP.


Related Post:

Share