Identificar discos linux mediante disk.EnableUUID y powercli

Buenos di@s! En día de hoy vengo con algo diferente, cuantas veces os ha pasado que tenéis que quitar un discos de una maquina virtual, o ampliarlo, pero no sabéis cual es porque no os coincide la posición scsi, y además tenéis mas de uno con el mismo tamaño. Por ello os traigo la manera de identificarlo de una manera fácil, y sencilla.

Pre-requisitios

Una de los pre-requisitos que tenemos que tener para poder identificar el disco desde el sistema operativo, es añadir la siguiente linea dentro del archivo «vmx» de la maquina virtual.

disk.EnableUUID = "TRUE"

Si no sabes de lo que estoy hablando, seleccionamos una maquina, pulsamos «Edit Settings»–>»Advanced» –> «Edit Configuration»

Pulsamos sobre » Add Configurations Params».

Añadimos el nombre ,y el valor mencionados anteriormente. Una vez realizado pulsamos «OK».

Para no tener que repetir esto en todas las maquinas virtuales, os recomiendo añadir/modificar esta parámetro en nuestras plantillas.

Identificación discos en el S.O

En mi caso voy a optar por usar una maquina con S.O Red Hat 7. Para ellos lanzaremos el siguente comando, en el debemos sustituir nuestro sdX por el device que queramos.

/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdX

Ejemplo

Aquí tenemos 2 devices con el código 36000XXXXXX. Nos guardaremos estos datos en un notepad, o en un sitio a la vista.

Identificar los discos de la maquina virtual mediante Powercli

Mediante el siguiente script seremos capaces de extraer el UUID que le pasa vSphere al sistema operativo.

Además este script nos proporcionara información acerca de los siguientes datos:

  • Nombre de las maquina
  • Numero del Hard Disk
  • Posición SCSI
  • Nombre del disco
  • UUID
  • Capacidad

Aquí os dejo el código, en mi caso lo he guardado como «Obtenerdiscosdetallado.ps1»

<####
Creador:    Carlos Gonzalez
Proposito : Script que nos proporciona todos los discos de la maquina de forma detallada.

#>
[CmdletBinding()]param(
    [String]$vm = "xxxxx",
    [Switch]$ExportCSV
    )

Clear-Host
$OutFile = "$($PSScriptRoot)\Informacion Detallada discos $($vm).csv"
$vm1      = get-vm $vm
$vm1Disks = $vm1 | Get-HardDisk
$infodiscos = @()
foreach ($vm1disk in $vm1Disks ){
            $infodiscos += [PSCustomObject]@{
                VM_Primaria     = $vm1.Name
                HD1_Nombre     = $vm1disk.Name
                HD1_SCSI_ID     = "$($vm1disk.ExtensionData.ControllerKey.ToString().SubString(3)):$($vm1disk.ExtensionData.UnitNumber)"
                HD1_MultiWriter = $vm1Disk.ExtensionData.Backing.Sharing.ToString().Trim("sharing")
                Nombre_Disco    = $vm1disk.Filename
                Uuid           = $vm1Disk.ExtensionData.Backing.Uuid
                Capacidad_GB    = $vm1disk.CapacityGB
                          } 
        }
Write-Output $infodiscos | Format-Table
if ($ExportCSV){
    Write-Host "Report exportado a $($OutFile)"
    $infodiscos | Export-Csv -Delimiter ";" -Path $OutFile -NoTypeInformation
}

Lanzamos el script con los siguentes parametros

  • VM : Nombre de la maquina que queremos obtener los discos de forma detallada.
  • CSV : Si quieres podemos expórtalo a CSV, nos guardara el archivo en el mismo lugar donde se ejecuta el script.

Como vemos el script nos devuelve todos los datos que hemos mencionado anteriormente. Nos deberemos de fijar en los UUID.

Como podemos ver el UUID que aparece en Powershell Hard disk 1 con SCSI 0:0 coincide con el disco sda de la MV.

Conclusiones

Hasta aquí hemos llegado, como he visto identificar los discos de nuestro sistema operativo con respecto a vMware se ha vuelto sencillo, sino lo conocías espero que te sirva de ayuda tal, y como me sirve a mi. Nos vemos en los siguientes post.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *