Puede que tengamos una instancia con un sistema operativo Linux en nuestra cuenta de AWS que ejecute una aplicación que trabaje sobre la carpeta /data. Y puede que esa carpeta vaya a crecer hasta llegar a más de 1 TB de información en los próximos meses. Si nos encontramos ante un caso similar, tiene sentido separar la carpeta /data en una partición independiente, montada en un disco EBS independiente, del cual podamos generar snapshots separados del disco de sistema operativo.
Para mover una carpeta a una partición independiente en un disco a parte, primero necesitamos crear ese disco a parte. Desde la consola de AWS, creamos un nuevo volumen EBS en el apartado 'Volumes'.
Adjuntamos este nuevo disco a la instancia sobre la que queramos hacer el cambio. En este caso, he adjuntado un disco de 50 GB que el sistema ve como xvdc:
admin@ip-10-10-10-10:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk └─xvda1 202:1 0 10G 0 part / xvdb 202:16 0 30G 0 disk /var xvdc 202:32 0 50G 0 disk
Formateo el disco xvdc con el sistema de archivos ext4:
admin@ip-10-10-10-10:~$ sudo mkfs -t ext4 /dev/xvdc mke2fs 1.43.4 (31-Jan-2017) Creating filesystem with 13107200 4k blocks and 3276800 inodes Filesystem UUID: 4ac39902-6cdc-498a-b3e6-c68c47653629 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done
Monto el disco temporalmente en /mnt:
admin@ip-10-10-10-10:~$ sudo mount /dev/xvdc /mnt
Sincronizo el contenido de /data a /mnt:
admin@ip-10-10-10-10:~$ sudo rsync -aulvXpogtr /data/* /mnt
Edito /etc/fstab para que /data se monte siempre al iniciar la máquina:
admin@ip-10-10-10-10:~$ sudo vi /etc/fstab
/dev/xvdc /data ext4 defaults 0 2
Desmonto el volumen EBS que está actualmente montado en /mnt:
admin@ip-10-10-10-10:~$ sudo umount /mnt
Muevo el contenido de la carpeta original a "data.original" a modo de backup:
admin@ip-10-10-10-10:~$ sudo mv /data /data.original
Creo un nuevo directorio data:
admin@ip-10-10-10-10:~$ sudo mkdir /data
Re-monto todas las particiones existentes en /etc/fstab:
admin@ip-10-10-10-10:~$ sudo mount -av / : ignored /data : successfully mounted
Reinicio la máquina:
admin@ip-10-10-10-10:~$ sudo reboot
Compruebo que /data se monta automáticamente sobre /dev/xvdc al iniciar la máquina:
admin@ip-10-10-10-10:~$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.6G 0 7.6G 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs 7.6G 17M 7.6G 1% /run tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup /dev/xvda1 40G 1.5G 39G 4% / tmpfs 1.6G 0 1.6G 0% /run/user/1000 /dev/xvdc1 50G 228M 49G 1% /data
A partir de este momento, cada vez que se reinicie la máquina se montará /data en el volumen EBS, es decir, fuera del disco de sistema operativo. Ahora podemos generar snapshots específicos de este volumen, con una periodicidad distinta a los snapshots del disco principal.