Hace tiempo. Necesitaba escribir un script que particionara y formateara discos para un proyecto de big data. Si el tamaño del disco era lo suficientemente grande, necesitaba usar una partición de tabla de particiones GUID (GPT); de lo contrario, usar una partición de registro de arranque maestro (MBR). El problema era que no tenía acceso a sistemas con discos grandes para probar este script.
Recordé que Red Hat Enterprise Linux (RHEL) 7.5 se estaba enviando con una nueva función llamada Virtual Disk Optimizer (VDO), que permitía la compresión y la deduplicación en disco. Decidí ver si esta nueva característica ayudaría a mi situación. ¿Puedo tomar un disco pequeño, digamos de 10 GB, y hacer que parezca un disco de 10 TB para el sistema operativo?
Obviamente, ninguna tecnología de compresión me permitiría almacenar 10 TB en un disco de 10 GB, pero en mi caso, solo necesitaba emular lógicamente un disco de 10 TB. ¿Funcionaría esto?
Veamos.
Ejemplo
En este ejemplo, uso Red Hat Enterprise Linux 8.1 bajo VirtualBox para probar, pero este procedimiento debería funcionar con cualquier versión de Linux que incluya VDO. Para lograr esto, yo:
- Instalado el
vdo
ykmod-vdo
paquetes:
[root@defiant ~]# yum install vdo kmod-kvdo
- Creé un disco de 10 GB y lo adjunté a mi máquina virtual:
[root@defiant ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 31G 0 part
├─rhel-root 253:0 0 27.8G 0 lvm /
└─rhel-swap 253:1 0 3.2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
- Creó el volumen VDO:
[root@defiant ~]# vdo create --name=vdo-disk --device=/dev/sdb --vdoLogicalSize=10T
Creating VDO vdo-disk
Starting VDO vdo-disk
Starting compression on VDO vdo-disk
VDO instance 0 volume is ready at /dev/mapper/vdo-disk
- Creó una partición GPT:
[root@defiant ~]# parted /dev/mapper/vdo-disk mklabel gpt mkpart p1 xfs 1MB 10TB
Information: You may need to update /etc/fstab.
- Mostrar los resultados:
[root@defiant ~]# parted /dev/mapper/vdo-disk print
Model: Linux device-mapper (vdo) (dm)
Disk /dev/mapper/vdo-disk: 11.0TB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10000GB 10000GB p1
- Creó un sistema de archivos y lo montó:
[root@defiant ~]# mkdir /data
- Formateó el disco (esta parte probablemente llevará mucho tiempo):
[root@defiant ~]# mkfs.xfs /dev/mapper/vdo-disk1
meta-data=/dev/mapper/vdo-disk1 isize=512 agcount=10, agsize=268435455 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2441405952, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- Montó el disco:
[root@defiant ~]# mount /dev/mapper/vdo-disk1 /data
[root@defiant ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 395M 0 395M 0% /dev
tmpfs 411M 0 411M 0% /dev/shm
tmpfs 411M 5.7M 406M 2% /run
tmpfs 411M 0 411M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 28G 1.8G 27G 7% /
/dev/sda1 1014M 291M 724M 29% /boot
tmpfs 83M 0 83M 0% /run/user/1000
/dev/mapper/vdo-disk1 9.1T 65G 9.1T 1% /data
Si siguió adelante, ahora ha emulado un disco de 10 TB. Tenga en cuenta que, con sobrecarga, solo muestra 9,1 TB, pero puede experimentar con tamaños para obtener el tamaño que necesita. Obviamente, no puede almacenar grandes cantidades de datos en este disco, pero con el fin de emular lógicamente un disco de 10 TB, esta configuración me resultó útil.
¿Quiere probar Red Hat Enterprise Linux? Descárgalo ahora gratis.