Qualche tempo fa. Avevo bisogno di scrivere uno script che partizionasse e formattasse i dischi per un progetto di big data. Se la dimensione del disco era abbastanza grande, dovevo utilizzare una partizione GUID Partition Table (GPT), altrimenti utilizzare una partizione Master Boot Record (MBR). Il problema era che non avevo accesso a sistemi con dischi di grandi dimensioni per testare questo script.
Mi sono ricordato che Red Hat Enterprise Linux (RHEL) 7.5 veniva distribuito con una nuova funzionalità chiamata Virtual Disk Optimizer (VDO), che consentiva la compressione e la deduplicazione su disco. Ho deciso di vedere se questa nuova funzionalità avrebbe aiutato la mia situazione. Posso prendere un piccolo disco, diciamo 10 GB, e farlo sembrare un disco da 10 TB per il sistema operativo?
Ovviamente, nessuna tecnologia di compressione mi permetterebbe di memorizzare effettivamente 10 TB su un disco da 10 GB, ma nel mio caso avevo solo bisogno di emulare logicamente un disco da 10 TB. Funzionerebbe?
Vediamo.
Esempio
In questo esempio, utilizzo Red Hat Enterprise Linux 8.1 sotto VirtualBox per il test, ma questa procedura dovrebbe funzionare con qualsiasi versione di Linux che include VDO. Per fare ciò, io:
- Installato il
vdo
ekmod-vdo
pacchetti:
[root@defiant ~]# yum install vdo kmod-kvdo
- Ho creato un disco da 10 GB e l'ho collegato alla mia VM:
[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
- Creato il volume 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
- Creata una partizione GPT:
[root@defiant ~]# parted /dev/mapper/vdo-disk mklabel gpt mkpart p1 xfs 1MB 10TB
Information: You may need to update /etc/fstab.
- Visualizzato i risultati:
[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
- Creato un filesystem e montato:
[root@defiant ~]# mkdir /data
- Disco formattato (questa parte richiederà probabilmente molto tempo):
[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
- Disco montato:
[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
Se hai seguito, ora hai emulato un disco da 10 TB. Nota che, con l'overhead, mostra solo 9,1 TB, ma puoi sperimentare le dimensioni per ottenere le dimensioni di cui hai bisogno. Ovviamente non puoi effettivamente archiviare grandi quantità di dati su questo disco, ma allo scopo di emulare logicamente un disco da 10 TB, questa configurazione mi è stata utile.
Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.