Skip to content

Commit d1ea004

Browse files
committed
new post vdi
1 parent bd4988d commit d1ea004

File tree

5 files changed

+143
-0
lines changed

5 files changed

+143
-0
lines changed

_posts/2025-06-10-resizing-vdi.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
---
2+
title: Resizing VDI
3+
tags: [informatics]
4+
style: fill
5+
color: info
6+
description: Trying to resize de (virtual) disk of my virtual machine
7+
---
8+
9+
<img src="../assets/blog_images/2025-06-10-resizing-vdi/C.png" alt="Girl in a jacket" width="500">
10+
11+
# Introducción
12+
13+
Cada vez es menos frecuente quedarse sin espacio en el disco duro. Mi portátil del trabajo, un Dell de 1,86 GB de almacenamiento, cumple en un espacio muy reducido expectativas que hace no tanto tiempo parecían imposibles.
14+
15+
16+
Los orígenes del almacenamiento electrónico se remontan a 1947 con el tubo Williams-Kilburn en la Universidad de Manchester, un sistema que utilizaba tubos de rayos catódicos para almacenar apenas un puñado de bits como puntos luminosos en la pantalla, en cuestión de milisegundos. Otros sistemas ROM almacenaban datos prácticamente en cuerdas de cobre que podrían tejerse manualmente; un proceso que podía durar meses (véase el Apollo Guidance Computer de 1960, con 72 KB de almacenamiento). En la década de 1950 se introdujeron otras ideas tecnológicas pioneras para este fin, como la memoria de línea de retardo de mercurio del EDSAC (1949), la memoria magnética de núcleo del MIT (1953) o el revolucionario RAMAC 305 de IBM (1956), que introdujo el concepto del disco duro con sus 50 platillos magnéticos capaces de almacenar 5 millones de caracteres.
17+
18+
La evolución, desde las memorias de núcleo magnético y los tambores de los años 50, pasando por los discos Winchester, los disquetes, los CDs, los primeros discos duros de GB, las memorias flash y los SSD, hasta llegar al almacenamiento masivo virtualizado y en la nube, ha multiplicado la capacidad y dividido la escala hasta alcanzar a superar la Ley de Moore. Como comparación, el primer dico duro de 1 TB (HDD) anunciado por Hitachi Global Storage Technologies en 2009, el Hitachi Deskstar 7K1000 que usaba platos de 200 GB y 3,5 pulgadas y rotaba a unos 7200 rpm era, en comparación con el primer HDD de la historia, el IBM RAMAC 350 de 3,75 MB, de 1959), tenía unas trescientas mil veces más capacidad y era miles de veces más pequeño. Y de esto ya hace más de 15 años.
19+
20+
A continuación se muestra un listado, consultado en [1], que evidencia la tendencia lineal y, últimamente, exponencial de la progresión de las capacidades de almacenamiento:
21+
22+
| Período | Año | Tecnología | Capacidad | Características |
23+
|---------|-----|------------|-----------|----------------|
24+
| **Décadas 1950-1960: Los Fundamentos** | | | | |
25+
| | 1956 | RAMAC 305 | 5 MB | 50 platillos magnéticos |
26+
| | 1962 | IBM 1311 | 2 MB | Discos removibles de 6 platillos |
27+
| | 1962 | IBM 1401 con CRAM | 5.5 MB | 256 tarjetas magnéticas |
28+
| | 1965 | IBM 2314 | 29 MB | Unidad removible |
29+
| **Década 1970: Consolidación Tecnológica** | | | | |
30+
| | 1973 | IBM 3340 Winchester | 280 MB | Cadena de unidades |
31+
| | 1974 | IBM 3850 | 236 GB | Sistema de cintas robotizado |
32+
| | 1975 | DEC RL01 | 5-10 MB | Formato mejorado |
33+
| **Década 1980: Democratización del Almacenamiento** | | | | |
34+
| | 1980 | Seagate ST506 | 5 MB | Primer HDD para microcomputadoras |
35+
| | 1981 | Sony 3½" floppy | 1.44 MB | Formato compacto |
36+
| | 1984 | IBM 3480 | 200 MB | Cartuchos de cinta |
37+
| | 1987 | Conner CP340A | 40 MB | Estableció estándar 3.5" |
38+
| **Década 1990: Era del Almacenamiento Masivo** | | | | |
39+
| | 1990 | IBM 9345 | 1-1.5 GB | Cabezales magneto-resistivos |
40+
| | 1994 | CompactFlash | 2 GB | Formato removible |
41+
| | 1995 | DVD | 4.7 GB | Disco óptico |
42+
| | 1999 | IBM Microdrive | 170-340 MB | Formato ultra-compacto |
43+
| **Siglo XXI: Explosión Exponencial** | | | | |
44+
| | 2000 | USB Flash drives | 8 MB - varios TB | Almacenamiento portátil |
45+
| | 2003 | Blu-ray | 25-50 GB | Disco óptico alta definición |
46+
| | 2009 | Primer HDD 1 TB | 1 TB | Hitachi Deskstar 7K1000 |
47+
| | 2006-2007 | Almacenamiento en nube | Ilimitada | Capacidad prácticamente ilimitada |
48+
| | 2025 | Actualidad | 22 TB / 100 TB | HDDs comerciales / SSDs |
49+
50+
Paralelamente, la evolución hacia el almacenamiento virtualizado y en la nube, iniciada con Amazon Web Services (2006) y servicios como Dropbox (2007), permite la abstracción de la capacidad física real mediante la creación de volúmenes lógicos que pueden expandirse dinámicamente, optimizar el uso del espacio disponible y distribuir la información a través múltiples dispositivos de manera transparente para el usuario. Empresas como Backblaze, con 1,9 EB o Wasabi, con 1 EB de capacidad de almacenamiento total, siendo relativamente pequeñas, evidencian esto. Y empresas gigantes que proporcionan servicios en la nube como AWS, Azure o GCP, fácilmente pueden tener cien veces más que las primeras (o podrían llegar a combinar zettabytes de almacenamiento, entre todas).
51+
52+
Actualmente, la capacidad de almacenamiento disponible para usuarios individuales se mide en terabytes y petabytes, mientras que las organizaciones gestionan exabytes de información, algo inimaginable hace tiempo. Además, este crecimiento exponencial continúa acelerándose con tecnologías emergentes como el almacenamiento cuántico y los sistemas de archivo distribuidos a escala planetaria. Esta progresión, desde los 3.75 MB del RAMAC hasta los sistemas actuales de múltiples exabytes, es definitivamente _algo_.
53+
54+
# Virtualización
55+
56+
Oracle VM VirtualBox es un potente software de virtualización de sistemas operativos que, como muchos otros, permite crear sistemas operativos dentro de otros, _ad infinitum_. Nos permite, por ejemplo, usar Linux dentro de Windows para utilizar su kernel, o incluso un Android, para usar aplicaciones móviles.
57+
58+
Este tipo de sofware de virtualización utiliza formatos de imagen de disco virtual para almacenar discos virtuales, que es como un disco duro dentro de un archivo que contiene el sistema operativo, las aplicaciones y, en general, el sistema de ficheros de la máquina virtual. Otros formatos, alguno preferible si se usan otros software, son VMDK (de VMware), VHD (de Microsoft Hyper-V) o QCOW2 (de QEMU).
59+
60+
El formato VDI (Virtual Desktop Infrastructure) es uno de los más recurridos y el que se emplea en este post. VDI funciona ofreciendo una versión digitalizada del escritorio de un computador, que se ejecuta en un servidor y al que puede acceder desde cualquier dispositivo que tenga acceso a su red.
61+
62+
![popos](../assets/blog_images/2025-06-10-resizing-vdi/popos.png)
63+
64+
# Caso de uso
65+
66+
Me he quedado sin espacio (a penas unos MB) en mi sitema host windows, y tengo una máquina virtual con un PopOs24 de 80 GB en total; así que le disminuiré un poco el tamaño, pues no basta con desintalar cosas de dentro de la distro. virtual, obvimente (pues no hay espacio en el anfitrión), ni basta solo con hacer un "resize" (e.g. coin GParted) como se podría hacer para ampliarlo, sino que es necesario liberar espacio dentro de la máquina virtual, rellenar el espacio libre con ceros y luego compactar el disco. O sea, mi objetivo primordial es conseguir liberar y/o ampliar intrínsecamente espacio sea como sea.
67+
68+
![vm](../assets/blog_images/2025-06-10-resizing-vdi/vm.png)
69+
70+
El flujo es el siguiente:
71+
1. Creamos el archivo de ceros → esto sobrescribe el espacio libre con ceros (los ceros son comprimibles, a diferencia de los datos arbitrarios o aleatorios).
72+
2. Lo borramos → el sistema lo marca como espacio libre o "disponible" otra vez, pero ahora está físiamente lleno de ceros en el espacio virtual, por lo que el hipervisor entiende como que datos comprimibles, que podemos no necesitar.
73+
3. VirtualBox (u otros hipervisores) pueden detectar bloques de ceros y optimizarlos. Así, al compactar con `VBoxManage --compact`, VirtualBox detecta estos bloques de ceros y, reemplazándolos simplemente por metadatos que dicen "aquí hay X bytes de ceros", libera ese espacio físico en el disco.
74+
75+
Primero limpiaremos espacio irrelevante de Ubuntu (liberar espacio del disco):
76+
77+
```bash
78+
sudo apt clean && sudo apt autoremove
79+
```
80+
81+
Y también es recomendable eliminar archivos grandes innecesarios, vaciar la papelera y eliminar archivos temporales. A continuación algunos trucos para eliminar espacio muchas veces innecesario:
82+
83+
```bash
84+
rm -rfv ~/.cache/thumbnails
85+
cd ~/.local/share/Trash && rm -rf *
86+
sudo apt-get autoclean && sudo apt-get clean && sudo apt-get autoremove
87+
LANG=C snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then sudo snap remove "$snapname" --revision="$rev";fi; done
88+
sudo journalctl --vacuum-time=3d
89+
pip cache purge && rm -rf ~/.cache/pip # Eliminar caché de pip
90+
sudo apt clean # Borrar los paquetes descargados
91+
sudo apt autoclean # Borrar paquetes obsoletos
92+
sudo apt autoremove # Borrar dependencias no usadas
93+
rm -rf ~/.cache/* # Eliminar cachés generales del usuario
94+
rm -rf ~/.cache/thumbnails/* # Eliminar caché de thumbnails (si usas entorno gráfico como GNOME/KDE)
95+
npm cache clean --force # Eliminar caché de npm
96+
sudo rm -rf /tmp/* # Limpiar archivos temporales
97+
sudo journalctl --vacuum-time=7d # Limpiar logs antiguos (opcional)
98+
```
99+
100+
Ver espacio liberado antes y después con:
101+
```bash
102+
alejandro@pop-os:~/.local/share/Trash$ df -h
103+
Filesystem Size Used Avail Use% Mounted on
104+
tmpfs 2.8G 1.5M 2.8G 1% /run
105+
efivarfs 256K 211K 41K 85% /sys/firmware/efi/efivars
106+
/dev/sda3 74G 55G 16G 79% /
107+
tmpfs 14G 0 14G 0% /dev/shm
108+
tmpfs 5.0M 0 5.0M 0% /run/lock
109+
/dev/sda1 1020M 189M 832M 19% /boot/efi
110+
/dev/sda2 4.0G 2.5G 1.6G 62% /recovery
111+
shared_folder 477G 465G 12G 98% /media/sf_shared_folder
112+
tmpfs 2.8G 176K 2.8G 1% /run/user/1000
113+
/dev/sr0 52M 52M 0 100% /media/alejandro/VBox_GAs_7.0.222
114+
```
115+
116+
Supongamos que tengo 20 GB libres y quiero dejar libres 8 GB, entonces creamos un archivo de 12 GB para que se comprima solo ese tamaño posteriormente y nos quede este espacio de "reserva" de 8 GB (puede tardar):
117+
```bash
118+
sudo dd if=/dev/zero of=~/zero.fill bs=1M count=12288
119+
```
120+
121+
Esto rellena parte del espacio libre con rea un archivo de ceros de 12 GB (no se llena el disco, solo una parte).
122+
123+
Una vez creado y escrito, lo borramos:
124+
```bash
125+
rm ~/zero.fill
126+
```
127+
128+
Ahora apagar la VM y compactar el disco desde el sistema anfitrión (abriendo Powershell como administrador):
129+
```powershell
130+
PS C:\Archivos de programa\Oracle\VirtualBox>
131+
./VBoxManage modifymedium "C:\Users\Alejandro\VirtualBox VMs\PopOS24\PopOS24.vdi" --compact
132+
>> 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
133+
```
134+
135+
En efecto, tras la compresión, el .vdi pesa 12 GB menos, consiguiendo nuestro propósito:
136+
137+
![popos2](../assets/blog_images/2025-06-10-resizing-vdi/popos2.png)
138+
139+
O quizá la solución desde un principio era usar contenedores, no máquinas virtuales...
140+
141+
# Referencias
142+
143+
- https://www.computerhistory.org/timeline/memory-storage/
2.86 KB
Loading
6.76 KB
Loading
6.68 KB
Loading
62.4 KB
Loading

0 commit comments

Comments
 (0)