Hola a todos!
En este artículo hablaremos sobre cómo automatizamos la tarea de expandir el espacio en disco en uno de nuestros servidores. ¿Y qué es difícil en una tarea tan simple que tuve que automatizarla? Nada si no utiliza monturas combinadas en cascada. Siento que hay más preguntas! Pues bien, vamos debajo del gato.
Primero, le diré por qué usamos el montaje integrado en cascada.
Tenemos un sistema que necesita almacenamiento para archivos pequeños (escaneos de documentos, etc.). El tamaño promedio del archivo es de 200 kb a 1 megabyte, los datos son estáticos, no cambian. Hay miles de millones de archivos y el número crece cada día. Una vez, cuando el volumen ya era más de 6 TB, nos dimos cuenta de que los problemas comenzarían pronto, uno de los cuales era el momento de la copia de seguridad y la recuperación. Luego decidimos dividir los datos en discos, y se llamó a UnionFS para ayudarnos con esto.
El algoritmo se determinó de la siguiente manera: los datos se escriben en el disco no más de 2 TB, cuando termina, agregamos un nuevo disco a la máquina virtual, lo marcamos, lo agregamos a UnionFS, transferimos el viejo a ReadOnly, eliminamos una copia, escribimos en cinta, lo eliminamos de la copia de seguridad en línea.
Como ya entendió, este algoritmo exige bastante la atención del administrador: cualquier movimiento incómodo y almacenamiento no están disponibles. Por lo tanto, decidimos excluir completamente el factor humano y recordamos que tenemos ZABBIX, que muy bien podemos manejar esto nosotros mismos si agregamos un poco de magia PowerShell y Bash al algoritmo.
Ahora sobre cómo se hace esto.
En Zabbix, se configura un disparador para espacio libre y se hace un botón para el modo manual:

Cuando se activa el activador, se forma una tarea en el programador servidor-robot en el que se encuentran todos nuestros scripts de automatización:
Powershell.exe "Enable-ScheduledTask \PROD_TASKS\Add_HDD_OS0226”
A la hora señalada, se inicia un script en el servidor que:
Agrega el disco a la VM deseada:
(al mismo tiempo, elige el volumen más libre) $vm = Get-VM -Name $vmName New-HardDisk -VM $vm -CapacityGB $newHDDCapacity -Datastore $datastoreName –ThinProvisioned
Busca detalles de acceso al servidor:
APAGADOUtilizamos un repositorio personalizado de detalles de acceso basado en TeamPass, por lo que el script encuentra el servidor deseado en el sistema y recibe sus detalles automáticamente. Esto se hace porque cada mes cambiamos automáticamente todas las contraseñas, pero este es el tema de un artículo separado
#Generate TeamPass API request string $vmTPReq = " TeamPass" #Send request to TeamPass $vmCreds = Invoke-WebRequest($vmTPReq) -UseBasicParsing | ConvertFrom-Json #Convert credentials $credential = New-Object System.Management.Automation.PSCredential($vmCreds.login,(ConvertTo-SecureString $vmCreds.pw -asPlainText -Force))
Viene en SSH:
#Create partition & FS, mount disk to directory, edit fstab...etc. New-SSHSession -ComputerName $vmCreds.url -Credential $credential -Verbose -AcceptKey:$true $results = Invoke-SSHCommand -SessionId 0 -Command "/mnt/autodoit.sh" Remove-SSHSession -Index 0 -Verbose
Lo marca y lo agrega al montaje UnionFS:
Desafortunadamente, al momento de escribir esto, no resolvimos varios problemas relacionados con la creación automática de tareas en VEEAM para archivar el disco viejo y escribirlo en cinta, por lo que esto todavía se hace manualmente. Pero definitivamente actualizaremos el script tan pronto como resolvamos un par de problemas.
Publicado por Vitaliy
Rosman (
PBCVIT ).
Honestamente, se prestó un fragmento de código para pegar matrices, los enlaces al autor se guardaron en el código.
No hay quejas contra UnionFS; ha estado funcionando de manera estable durante más de dos años.
La pregunta de por qué el almacenamiento está organizado en general es retórica, simplemente acéptelo tal como es.
Tenga en cuenta que se deben utilizar diferentes tipos de asignación de unidades para diferentes sistemas. por lo tanto, tenga cuidado y la fuerza vendrá con usted.