disco

  • ¿Cuánto espacio ocupan las bases de datos de un servidor MySQL?

    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.

  • ¿Cuánto espacio ocupan las tablas y bases de datos de un servidor PostgreSQL?

    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.

  • ¿Dude dónde están mis fotos?

    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.

  • Agregar un disco a una máquina virtual VirtualBox desde línea de comandos

    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).

  • Baobab: herramienta de análisis de espacio en disco

    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.

  • Cambiar el uuid a un disco VDI de VirtualBox

    Tuve la necesidad de duplicar una imagen de disco VDI (Virtual Disk Image) de VirtualBox. Sin embargo, al tratar de utilizar el disco copiado, surgió un error. Esto se debe a que VirtualBox no permite utilizar UUID de discos repetidos (deben ser únicos).

    Los UUID (Universally Unique Identifier) son identificadores únicos universales. Permiten identificar un medio o dispositivo mediante un identificador numérico (valga la redundancia). Por definición deben ser únicos dentro de un mismo sistema.

    La solución rápida a este problema consiste en asignar un nuevo UUID al disco copiado.

  • CentOS: recuperar espacio en /boot borrando versiones antiguas del kernel

    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.

  • Cómo compactar un disco virtual después de correr zerofree

    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.

  • Cómo convertir una partición MBR lógica en primaria

    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.

  • Cómo crear un archivo de gran tamaño utilizando dd

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

  • Cómo determinar cuánto espacio en disco ocupa un directorio

    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.

  • Cómo determinar el dispositivo al que pertenece un archivo o directorio en Linux

    Anteriormente demostré cómo utilizar la herramienta mountpoint para saber si un directorio es un punto de montaje a un sistema de archivos en un dispositivo aparte. Ahora veamos cómo saber a qué dispositivo pertenece un archivo o directorio, lo cual puede ser de utilidad al momento de necesitar desmontar un filesystem para correr un chequeo de disco.

  • Cómo ejecutar zerofree sobre el sistema de archivos raíz

    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.

  • Cómo expandir una partición con ZFS en Linux

    En este artículo voy a explicar cómo redimensionar (expandir) una partición que contiene un sistema de archivos ZFS en Linux, típicamente luego de haber aumentado el tamaño del disco de una máquina virtual.

  • Cómo forzar un rescan de disco en Linux

    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.

  • Cómo identificar el disco físico asociado a un dispositivo en FreeBSD

    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.

  • Cómo liberar espacio ocupado por paquetes obsoletos en FreeBSD

    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.

  • Cómo mapear un disco físico o partición a un guest VirtualBox

    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.

  • Cómo obtener y modificar el intervalo de verificación de discos

    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.

  • Cómo redimensionar una partición con fdisk

    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.