Cmdlets de PowerShell esenciales para auditar y mantener el almacenamiento
PowerShell v5 ofrece algunas características nuevas para administrar el almacenamiento.
PowerShell v5 ofrece algunas características nuevas para administrar el almacenamiento, basándose en las capacidades que estaban disponibles en PowerShell 4.
PowerShell hace que la administración del almacenamiento sea mucho más fácil al incorporar todas las funciones que solían estar en muchos programas separados con su propia sintaxis en una experiencia de PowerShell unificada con una sintaxis estándar y soporte para la canalización y otras características para hacer cosas en grupos grandes en lugar de uno a la vez.
Estos cmdlets comenzaron en su mayoría en PowerShell 4, pero PowerShell 5 nos trae algunas características nuevas interesantes para aquellos que piensan en la administración del servidor desde la mentalidad de DevOps de configuración como código donde la configuración de estado deseado (DSC) está a la orden del día y los servidores se configuran a sí mismos en función de nuestra secuencias de comandos de configuración.
Puede comenzar con lo que ha cambiado para PowerShell 5 aquí y leer más detalles sobre la compatibilidad de los cmdlets * -item para diferentes tipos de vínculos aquí .
Ahora, echemos un vistazo a algunos de los cmdlets de PowerShell esenciales para auditar y mantener el almacenamiento.
Obtener información del disco
Quizás recuerde que en los viejos tiempos, si deseaba obtener información sobre los discos, abría una ventana de CMD y usaba DISKPART. Eso significaba iniciar el programa y usar su sintaxis para navegar a su manera. Eso ya no existe y todo lo que tenemos que hacer es escribir un solo cmdlet de PowerShell para obtener la información del disco que necesitamos.
PS C: \> Obtener-Disco |
El cmdlet Get-Disk devolverá información sobre cualquier disco conectado al sistema operativo actual, pero podemos usar diferentes cmdlets para obtener información sobre los discos que se nos presentan como discos físicos o como discos virtuales por separado. Podemos usar Get-PhysicalDisk para obtener información sobre los discos que el sistema operativo ve como discos físicos y Get-VirtualDisk para ver información sobre los discos virtuales creados a partir de grupos de almacenamiento, lo que también puede hacer en Azure . Para ver esa información por separado, puede usar los cmdlets como se muestra a continuación.
Hasta este punto, aunque todavía no sabemos qué unidades veremos si abrimos el Explorador de archivos. Para verlos, podemos usar Get-Volume , o como prefiero, ya que no nos importan mucho los discos CD-ROM o los disquetes en entornos virtuales, podemos usar Get-Partition para ver las letras de unidad asignadas y las discos en los que residen.
Es posible que haya notado que, aunque se devolvieron tres discos físicos de Get-PhysicalDisk, solo hay dos volúmenes y dos particiones devueltos en el resultado anterior. La razón de esto es que he adjuntado un disco físico a esta máquina virtual a través del portal de administración de Azure, pero aún no he preparado el espacio de almacenamiento de ese disco para su uso ni le he asignado una letra de unidad.
Usar nuevo espacio de almacenamiento
El resultado devuelto por Get-PhysicalDisk nos mostró que el disco físico número 2 tenía un estilo de partición RAW. Si está acostumbrado a mirar la GUI, eso significa que es espacio no asignado.
Para convertir este espacio en una unidad, debemos completar algunas tareas, que ahora se pueden hacer fácilmente sin tener que hacer clic con el mouse.
Primero inicializamos el disco usando el cmdlet Initialize-Disk .
PS C: \> Initialize-Disk -Number 2 |
Ese comando no devolverá ningún resultado. Simplemente devolverá el control de la consola cuando esté listo. La siguiente tarea es crear una nueva partición en la unidad. De hecho, vamos a crear dos particiones en esta unidad solo para mostrar lo fácil que es formatear en el siguiente paso.
PS C: \> Nueva-Partición -DiskNumber 2 -AssignDriveLetter -Tamaño 500gb |
PS C: \> Nueva-partición -DiskNumber 2 -AssignDriveLetter -UseMaximumSize |
Ahora, cuando invocamos Get-Partition , vemos el resultado a continuación.
Al invocar un solo comando dos veces, hemos asignado dos nuevas particiones en nuestro disco. Sin embargo, a pesar de tener una letra de unidad, no puede cargar y colocar carpetas y archivos en ellos todavía. Aún necesitamos formatear estos discos.
Para hacer eso, usaremos Format-Volume , pero cuando usemos ese cmdlet, solo vamos a invocar una vez para formatear estas dos nuevas unidades. Para descubrir cómo es posible, eche un vistazo a la captura de pantalla a continuación.
Mientras escribo el carácter de guión para el primer parámetro, la función de autocompletar me muestra los parámetros disponibles para su uso. Presiono la flecha hacia abajo para resaltar DriveLetter y la información sobre herramientas me muestra el tipo de entrada esperado. En este caso, puede tomar una matriz de caracteres como entrada. Con eso en mente, le daremos las dos letras de unidad que acabamos de crear y formateará ambas unidades en una sola invocación.
PS C: \> Formato-Volumen -DriveLetter F, G -FileSystem NTFS |
Cuando el cmdlet devuelve el control del indicador, tenemos dos nuevas unidades listas para usar. Lo único que no pudimos hacer cuando formateamos esos volúmenes juntos en lugar de individualmente fue asignarles una etiqueta. Podemos arreglar eso ahora usando el cmdlet Set-Volume .
PS C: \> Set-Volume -DriveLetter F -NewFileSystemLabel "UserData" |
No vamos a etiquetar la unidad G porque la usaremos para demostrar los dos conceptos siguientes, lo que resultará en la eliminación de todos modos.
Reducir, expandir y eliminar particiones
Hacer este tipo de operaciones solía ser algo que implicaba escribir mucho en DISKPART. Ahora, con PowerShell, los cmdlets integrados facilitan la reducción, expansión y eliminación de particiones. Comenzaremos reduciendo la unidad G para que coincida con la unidad F con el cmdlet Resize-Partition simple .
PS C: \> Resize-Partition -DriveLetter G -Tamaño 500gb |
Eso es todo lo que se necesita para encoger una partición. Pero ahora digamos que queremos deshacernos de él por completo y luego cambiar el tamaño de la unidad F para ocupar el espacio restante. Simplemente invocamos Remove-Partition en la unidad G y luego Resize-Partition en la unidad F para expandirlo.
PS C: \> Eliminar-Partición -DriveLetter G |
Sin embargo, cuando intentemos cambiar el tamaño de la partición F restante para ocupar el espacio restante, nos encontraremos con un problema. Al invocar Resize-Partition con el tamaño completo de la unidad como parámetro, obtenemos un error como se muestra a continuación.
El cálculo de los tamaños de las unidades rara vez es tan exacto como podríamos esperar cuando se trata de computadoras. Para resolver este problema, podemos retroceder el parámetro de tamaño en incrementos de .01gb hasta que encontremos un tamaño que funcione como se muestra a continuación, y cuando terminemos, tengamos una sola partición para todo el disco, lista para usar.
PS C: \> Resize-Partition -DriveLetter F -Tamaño 1022.87gb |
Tenga cuidado al eliminar y cambiar el tamaño de las particiones. Al invocar estos cmdlets, aparecerán cuadros de diálogo de advertencia por un motivo. La eliminación de particiones casi siempre dará como resultado la pérdida de datos.
Nuevas funciones en PowerShell v5
La mayoría de los cmdlets del módulo de almacenamiento son los mismos para PowerShell 5 que para PowerShell 4, pero PS5 tiene algunas características nuevas que ofrecer.
El primero es compatible con la Galería de PowerShell. Una de las mejores cosas que la galería tiene para nosotros cuando se trata de almacenamiento es el módulo xStorage para PowerShell DSC.
El módulo xStorage expone la funcionalidad de los cmdlets del módulo de almacenamiento para su uso con DSC. Esta es una funcionalidad poderosa porque nos permite expresar nuestras configuraciones de forma declarativa en lugar de en scripts paso a paso. Para ver un ejemplo, eliminemos todas las particiones del disco 2 y, por simplicidad, configuraremos la unidad con el único volumen grande con el que terminamos al final de la sección anterior.
PS C:> Get-Partition -DiskNumber 2 | Eliminar partición |
Ahora, invoque el siguiente comando para instalar el módulo xStorage.
PS C:> Módulo de instalación xStorage |
Para confirmar la instalación, ejecute el siguiente comando y vea que hay tres nuevos recursos agrupados bajo un nuevo Módulo llamado xStorage.
PS C:> Get-DSCResource |
Luego de confirmar la instalación podemos comenzar a escribir y ejecutar el siguiente script.
DataDisks de configuración { Importación-DscResource -moduleName xStorage Nodo Localhost { xWaitForDisk Disk2 { disknumber = 2 RetryIntervalSec = 60 RetryCount = 60 } xDisk GVolume { disknumber = 2 DriveLetter = 'G' FSLabel = 'UserData' } } } DataDisks -outputpath c: DataDisks Start-DscConfiguration -Path c: dataDisks -wait -force -Verbose |
Después de una gran cantidad de resultados detallados, tendrá un disco con la nueva letra de unidad y etiqueta que espera. Ese script es solo un pequeño ejemplo de lo que se puede incorporar en un script DSC más grande que configura una máquina completa.
Otra característica nueva de PowerShell v5 se encuentra en un lugar inesperado. En lugar de un nuevo cmdlet, veremos el humilde cmdlet New-Item . New-Item ahora admite enlaces simbólicos y enlaces físicos. Aquí hay un escrito más antiguo sobre los tipos de enlaces simbólicos en Windows, pero no se preocupe por la sintaxis para crearlos porque PowerShell lo facilitará.
Primero crearemos un archivo de destino en nuestro directorio de documentos con el siguiente script.
PS C:> "Datos de prueba" | Out-File -FilePath $ env: USERPROFILEdocumentstestFile.txt |
Ahora usaremos el cmdlet New-Item mejorado en PowerShell 5 para crear un enlace simbólico como se muestra en la captura de pantalla a continuación.
Ese archivo tiene cero bytes y si miras su ícono en el explorador de archivos, verás un atajo porque eso es exactamente lo que es.
Ahora podemos crear un enlace duro al mismo archivo y ver cómo se ve en la siguiente captura de pantalla.
Este nuevo archivo tiene una longitud que coincide con el archivo que vinculamos. Si abre este nuevo archivo y edita su contenido y luego lo cierra y abre el archivo original, también encontrará su contenido alterado.
Podemos hacer algunas cosas poderosas con enlaces como este, pero una cosa que podría molestarnos en el futuro es que una vez que estos enlaces estén configurados, no siempre se puede saber fácilmente mirando en una ventana del explorador de archivos qué es un enlace y qué es. verdadero. Afortunadamente, PowerShell puede mostrarnos mucho más fácilmente qué es un enlace y qué es real.
Si creamos un nuevo archivo en el nivel superior de la unidad c: podemos ver las diferencias inmediatamente porque el cmdlet Get-ChildItem nos mostrará inmediatamente, como podemos ver a continuación.
La administración de servidores con PowerShell es cada vez mejor, y la administración del almacenamiento es solo una faceta de la maravilla. Sigue explorando y feliz PowerShelling.
Comentarios
Publicar un comentario
Las dudas y el agradecimientos, nos ayudan a mejorar a diario...