disco

  • En este breve artículo voy a explicar cómo determinar rápidamente cuánto espacio en disco ocupa cada base de datos de un servidor MySQL, ejecutando una simple consulta SQL.

  • Anteriormente expliqué cuánto espacio ocupan las bases de datos de un servidor MySQL? y cuánto espacio ocupan las tablas de una base de datos MySQL. Esta vez voy a explicar cómo obtener la misma información, pero en un servidor PostgreSQL.

    Los comandos \l y \dt del cliente psql permiten listar bases de datos y tablas respectivamente. Sin embargo, cuando se utiliza el modificador +, también es posible conocer cuánto espacio en disco ocupan.

  • Ayer retiré una de mis tarjetas de memoria SD de la cámara para bajar algunas fotos a mi PC y me encontré con que la mayoría estaban desaparecidas. Aparentemente se corrompió el sistema de archivos de la tarjeta (una vez mas...) Malditos adaptadores microSD!!! Por ende este artículo explica cómo recuperar archivos borrados o perdidos, ya sea porque se borraron accidentalmente o porque se corrompió el filesystem.

  • Este artículo explica cómo utilizar la interfaz de gestión de línea de comandos de VirtualBox, VBoxManage, para agregar un disco SATA a una máquina virtual.

    Hasta el momento no es posible en VirtualBox agregar un disco a una máquina virtual en caliente (en ejecución). Al igual que con QEMU/KVM es necesario apagar la máquina virtual antes de poder agregar un nuevo disco.

    Como mencioné en otras oportunidades, la interfaz de gestión de línea de comandos VBoxManage provee mayor funcionalidad que la aplicación GUI (como sucede en general con toda herramienta de línea de comandos). Es posible agregar un disco a una máquina virtual desde la herramienta GUI, pero veamos cómo hacerlo completamente desde línea de comandos (útil para aquellos casos en los que necesitamos gestionar un servidor de máquinas virtuales headless).

  • Gracias a Ubuntu hoy me topé con esta maravillosa herramienta para el análisis de espacio en disco. Todo sucedió cuando comencé una gran actualización luego de un par de meses sin conectar mi notebook a Internet y me quedé con poco espacio en disco.

  • Generalmente la partición /boot suele tener un tamaño reducido en disco, ya que se utiliza para guardar el kernel Linux, la imagen initrd y el bootloader. El problema es que, al pasar el tiempo y las actualizaciones, se van acumulando versiones antiguas del kernel Linux hasta llenar la partición boot. Este artículo explica cómo eliminar las versiones del kernel viejas/desactualizadas en un sistema CentOS para ganar espacio en la partición /boot.

  • Previamente expliqué cómo utilizar la herramienta zerofree sobre un sistema de archivos raíz. El objetivo era recuperar el espacio en disco (físico) ocupado por bloques libres en el sistema de archivos virtual. Está claro que en un disco virtual (imagen en archivo) asignado dinámicamente (thin en jerga VMware), los bloques libres no contienen información útil y por ende no necesitan ser representados físicamente. De esta forma el archivo que contiene la imagen de disco aumenta su tamaño a medida que es necesario, hasta un límite que es el tamaño máximo asignado.

    A continuación, voy a explicar cómo reducir una imagen de disco virtual (en VMware, VirtualBox y QEMU) para descartar el espacio ocupado por bloques libres rellenos con ceros.

  • Hace algunos días tuve que de hacer un manejo algo turbio sobre una tabla de particiones MBR. Necesitaba que una partición lógica, dentro de una partición MBR extendida, pase a ser una partición primaria, por razones que no vienen al caso.

    Como muchos veteranos saben, las tablas de particiones DOS sólo soportan 4 particiones, que pueden ser primarias o extendidas. Las particiones primarias presumiblemente contienen un sistema de archivos, mientras que las particiones extendidas son particiones que contienen subparticiones internas, llamadas "lógicas". Esto permite que un disco posea más de 4 particiones, y es lo que se utilizó tradicionalmente en sistemas Windows y GNU/Linux hasta la adopción de GPT.

    Mi problema era que necesitaba deshacerme de toda partición "lógica" en la tabla de particiones uno de mis discos rígidos, por cuestiones de compatibilidad. Y para empeorar las cosas, una de las particiones utilizada para almacenar datos (la más valiosa) era justamente una partición lógica, y a su vez la de mayor tamaño (ocupando un 70% del espacio total del disco rígido). Esta situación me imposibilitaba mover su contenido hacia otras particiones para poder borrar la partición extendida (junto con todas sus particiones lógicas), para luego crearla como primaria.

    La solución fácil hubiera sido conseguir un disco adicional para mover todos los datos y crear una nueva tabla GPT en el disco (hacer borrón y cuenta nueva). Pero en lugar de eso, y como buen sysadmin, opté por una solución más elegante: convertir la gigantesca partición lógica en primaria (desechando las restantes particiones lógicas dentro de la misma extendida), poniendo en juego unos 350 GB de datos. Mentira, en realidad no tenía un disco de 500 GB a mano, por eso decidí arriesgarme.

  • Este breve artículo explica cómo crear rápidamente un archivo de gran tamaño, con contenido aleatorio.

  • Este artículo explica cómo utilizar el comando du (disk usage) para determinar cuanto espacio en disco ocupa un directorio (o un listado de directorios) de forma rápida y sencilla.

  • Acabo de terminar el appliance para mis alumnos de Organización de Computadoras de este año. Como todo appliance que se comparte a través de Internet, y para que todos los alumnos puedan descargar la máquina virtual lo más rápido posible, es necesario que el sistema operativo junto con las aplicaciones incluidas consuman poco espacio en disco. De esta forma la imagen de disco resulta de tamaño reducido. A su vez necesito un escritorio funcional con un cierto conjunto de herramientas de desarrollo. Para ello opté por Devuan Jessie con LXDE sobre una máquina virtual VirtualBox.

    Pero más allá de que la imagen de disco tenga un tamaño reducido, es necesario compactarla (por ejemplo ZIP) para reducir aún más el tamaño a transmitir por Internet. Y se gana mucha eficiencia durante la compactación si los bloques de disco libres están rellenos con ceros. Para ello existe zerofree. De esta forma, el espacio en disco correspondiente a bloques libres (espacio no utiliza) es directamente ignorado.

  • Luego de redimensionar un disco en una vieja máquina virtual GNU/Linux corriendo Debian, tuve la necesidad de detectar el cambio de tamaño del mismo sin reiniciar el sistema. Anteriormente expliqué cómo detectar un cambio en un disco SCSI en Linux sin necesidad de reiniciar el sistema utilizando el sistema de archivos /sys. Sin embargo, ahora encontré un método más simple y rápido que no requiere conocer el número de dispositivo SCSI.

  • Un problema que suele ocurrir con mayor frecuencia que la esperada, es la rotura de un disco rígido en un servidor. El día más temido por todo SysAdmin improvisado. Sin embargo, los SysAdmins semi-decentes utilizamos arreglos de discos en alguna configuración RAID (1, 5 10, RAIDZ, o por software en sistemas Linux). Ahora bien, supongamos que se rompió un disco y hay que cambiarlo, ¿cómo identificar el disco físico fallido asociado al dispositivo en cuestión? Este artículo explica la técnica correcta y menciona otras, también válidas, y otras más un tanto extrañas.

  • FreeBSD, al igual que muchas distribuciones GNU/Linux, guarda los paquetes que ha compilado desde los fuentes (o descargado desde Internet) a modo de backup en un directorio de nuestro sistema de archivos. Con el tiempo estos paquetes (probablemente obsoletos si se ha actualizado el sistema en reitereadas oportunidades) suman un espacio en disco considerable, por esta razón tal vez sea deseable eliminarlos para recuperar el espacio.

  • Desde que instalé FreeBSD 10 en mi workstation le tuve que decir adiós a QEMU/KVM y "welcome back" a VirtualBox. Saber que me iba a quedar sin QEMU/KVM fue una de las decisiones más dificiles al momento de despedirme de CentOS 7. Pero hoy, luego de conocer la noticia de que CentOS deja de ser una distribución estable para pasar a ser rolling (una distro desktop en mis servers, claro que sí, ¡cómo mo!) y además de la incorporación del virus systemd, no me arrepiento en lo más mínimo. QEMU/KVM es una gran tecnología de virtualización, pero lamentablemente está desarrollada por Red Hat. Y desde que utiliza cgroups, Libvirt sólo funciona con el kernel Linux (no encontré forma de deshabilitar el uso de cgroups, a pesar de que probé diferentes configuraciones). Por otro lado, no me sorprendería para nada que en breve pase a depender de systemd.

    Mi pragmatismo característico me llevó a despedirme rápidamente de QEMU/KVM (y también de Dropbox porque el cliente no funciona en FreeBSD) y pasar a la siguiente tecnología disponible, en este caso: el viejo y querido VirtualBox.

  • Los sistemas de archivos ext2, ext3 y ext4 poseen varios parámetros configurables, entre los que se destaca la verificación periódica de errores. Esto es, cada vez que el kernel Linux intenta montar un sistema de archivos, debe comprobar antes si es momento para ejecutar una verificación periódica de errores. Esta verificación puede ser cada cierto número de montajes, cada cierto período de tiempo, o ambas.

  • Uno de los sistemas de archivos de un servidor, alojado en un volumen lógico LVM, necesitaba más espacio. Pero el grupo LVM al que pertenecía el volumen no tenía espacio libre. Por ende no quedó otra alternativa que incrementar el tamaño del grupo LVM. Para hacerlo existen dos posibilidades: agregar un nuevo disco o partición al grupo; o redimensionar uno de los discos o particiones pertenecientes al mismo. Anteriormente he explicado cómo redimensionar un disco físico perteneciente a un grupo LVM, pero en este caso en particular necesitaba redimensionar una partición LVM de un disco físico, lo que significa que además de aumentar el tamaño del disco es necesario luego modificar el tamaño de la partición subyacente. Es decir, aumentar el tamaño del disco y luego expandir la última partición del mismo para que utilice el nuevo espacio disponible al final del disco.

    En síntesis, se deben realizar los siguientes pasos:

    1. Hacer un backup fresco de toda la información en el servidor.
    2. Crear un snapshot del disco si la tecnología de virtualización lo permite.
    3. Modificar el tamaño del disco (lógicamente se trata de una máquina virtual).
    4. Hacer un backup
    5. Hacer un backup
    6. Hacer un backup
    7. ¿Mencioné hacer un backup?
    8. Redimensionar la partición dentro del disco.
    9. Notificar al grupo LVM acerca del nuevo tamaño de la partición.
    10. Aumentar el tamaño del volumen lógico LVM de acuerdo al nuevo espacio disponible en el grupo LVM.
    11. Expandir el sistema de archivos en el volumen lógico.
  • Anteriormente expliqué cómo forzar un rescan de disco en Linux para detectar un cambio de tamaño (por ejemplo, si hemos expandido un disco y el kernel no ve su nueva capacidad). En esta oportunidad voy a demostrar cómo rescanear un bus SCSI para detectar un nuevo disco (en lugar de expandir un disco existente, se ha agregado uno nuevo).

  • Una pregunta de un lector en las redes sociales me impulsó a investigar cómo es posible verificar el estado de salud de un disco rígido en GNU/Linux. Siempre pienso que el día en que me alcance la muerte seguiré siendo un usuario novato de GNU/Linux. Todos los días hay conocimientos nuevos por adquirir, y cada vez que aprendo algo nuevo me doy cuenta que ignoro 10 cosas más que no conocía. Así que cada día en GNU/Linux siento que soy más y más ignorante :S

    Cómo muchos sabrán, los discos rígidos (desde los primeros ATA) poseen la tecnología S.M.A.R.T. (Self Monitoring Analysis and Reporting Technology) capaz de autodetectar fallos de disco a nivel físico. La detección temprana de daños en la superficie del disco, permite poder realizar una copia de seguridad y reemplazarlo, antes de que se produzca una pérdida de datos irrecuperable.

  • Un sistema de archivos típicamente se llena porque no quedan bloques disponibles (espacio en disco, efectivamente). Aunque también se puede "llenar" porque, a pesar de haber bloques disponibles, no hay inodos libres. Recordemos que los inodos conforman la estructura de datos que representa a un archivo en disco en los sistemas de archivos Unix. Por supuesto esta estructura de metadatos ocupa su propio espacio en disco, que se "pierde" (o invierte, mejor dicho) al momento de dar formato a un dispositivo o partición.