¡Hola a todos! tras unos meses con mucho trabajo y pocas horas
de descanso, por el nacimiento de mi segundo hijo, he vuelto a sacar
tiempo para escribir varios artículos. Este es un pequeño TIP para
recordaros algo sobre TPS de ESXi.
Como sabéis, TPS (Transparent Page Sharing) es un
mecanismo que nos permite ahorrar en el uso de memoria de cada host ESXi
guardando en memoria física solo bloques únicos, en muchos casos este
ahorro es bastante significativo.
A partir de la [KB2080735] por motivos de seguridad se decidió deshabilitar por defecto TPS en las posteriores versiones de ESXi.
Estos cambios están relacionados con una investigación académica
reciente que aprovecha transparente Sharing Página (TPS) para obtener
acceso no autorizado a los datos en memoria en determinadas condiciones.
En algunas instalaciones normales que he estado revisando me he dado
cuenta de que no estaba habilitado TPS. En muchos casos y en entornos
controlados, si este pequeño problema de seguridad no te afecta,
recuerda habilitar TPS en tu plataforma vSphere para optimizar el uso de
memoria en tu ESXi.
Puedes hacerlo de dos modos:
Por GUI:
1 – Entrar con el cliente vsphere y seleccionar el host ESXi
2 – Seleccionar la ficha configuración y luego configuración avanzada (advanced settings)
3 – Haga clic en **Mem**
4 – Buscar la variable **Mem.ShareForceSalting** y establezca el valor en **1** para habilitarlo.
5 – Pulsar aceptar
6 – Migrar todas las máquinas a otro host para poder reiniciar el ESXi sobre el que hemos realizado el cambio.
7 – Reiniciar
Vía Powercli (si tienes muchos esxi):
Si tienes muchos hosts puede que el método anterior sea poco óptimo y
lento, para ello VMware ha creado un script (pshare-salting.ps1) que
puedes lanzar desde PowerCLI y aplicar este cambio sobre todos los
hosts:
*.\pshare-salting.ps1 [vcenter IP/hostname] -s*
script:
# Configure pshare salting options # - Enables / Disables the salting. # $reboot = 0 $enable = 0 $disable = 0 if ($args.count -gt 0) { $vCenter = $args[ 0 ] for ( $i = 1; $i -lt $args.count; $i++ ) { if ($args[ $i ] -eq "-s") { $enable = 1 } if ($args[ $i ] -eq "-o") { $disable = 1 } } # override if ($enable -eq 1) { $disable = 0 } } # we should specify either -s or -o if ($enable -eq 0 ) { if ($disable -eq 0 ) { Write-Host "Usage: ./pshare-salting.ps1 <-s/-o>" Write-Host "-s: turn-on pshare salting (default)" Write-Host "-o: turn-off pshare salting\n" return } } Connect-VIServer $vCenter $esxHosts = Get-VMHost | Sort Name foreach($esx in $esxHosts){ # Revert ShareScaGHz to default Set-VMHostAdvancedConfiguration -VMHost $esx -Name Mem.ShareScanGHz -Value 4 -Confirm:$false if ($enable -eq 1) { Write-Host "Enabling PageShare Salting on $esx" $val = (Get-VMHostAdvancedConfiguration -VMHost $esx -Name Mem.ShareForceSalting).Values Set-VMHostAdvancedConfiguration -VMHost $esx -Name Mem.ShareForceSalting -Value 2 -Confirm:$false } else { Write-Host "Disabling PageShare Salting on $esx" $val = (Get-VMHostAdvancedConfiguration -VMHost $esx -Name Mem.ShareForceSalting.).Values Set-VMHostAdvancedConfiguration -VMHost $esx -Name Mem.ShareForceSalting -Value 0 -Confirm:$false } }Con esto tendrás todos tus hosts con TPS habilitado.
Hasta la próxima.
José M. Hernandez