Il y a quelque temps. J'avais besoin d'écrire un script qui partitionnerait et formaterait des disques pour un projet Big Data. Si la taille du disque était suffisamment grande, je devais utiliser une partition de table de partition GUID (GPT), sinon utiliser une partition Master Boot Record (MBR). Le problème était que je n'avais pas accès à des systèmes avec de gros disques pour tester ce script.
Je me suis souvenu que Red Hat Enterprise Linux (RHEL) 7.5 était livré avec une nouvelle fonctionnalité appelée Virtual Disk Optimizer (VDO), qui permettait la compression et la déduplication sur disque. J'ai décidé de voir si cette nouvelle fonctionnalité aiderait ma situation. Puis-je prendre un petit disque, disons 10 Go, et le faire ressembler à un disque de 10 To pour le système d'exploitation ?
Évidemment, aucune technologie de compression ne me permettrait réellement de stocker 10 To sur un disque de 10 Go, mais dans mon cas, j'avais juste besoin d'émuler logiquement un disque de 10 To. Est-ce que ça marcherait ?
Voyons.
Exemple
Dans cet exemple, j'utilise Red Hat Enterprise Linux 8.1 sous VirtualBox pour tester, mais cette procédure devrait fonctionner avec n'importe quelle version de Linux qui inclut VDO. Pour ce faire, j'ai :
- Installé le
vdo
etkmod-vdo
forfaits :
[root@defiant ~]# yum install vdo kmod-kvdo
- J'ai créé un disque de 10 Go et l'ai associé à ma 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
- Création du 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
- Création d'une partition GPT :
[root@defiant ~]# parted /dev/mapper/vdo-disk mklabel gpt mkpart p1 xfs 1MB 10TB
Information: You may need to update /etc/fstab.
- Affiché les résultats :
[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
- A créé un système de fichiers et l'a monté :
[root@defiant ~]# mkdir /data
- Formaté le disque (cette partie prendra probablement beaucoup de temps) :
[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
- Montez le disque :
[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 vous avez suivi, vous avez maintenant émulé un disque de 10 To. Notez que, avec les frais généraux, il n'affiche que 9,1 To, mais vous pouvez expérimenter avec des tailles pour obtenir la taille dont vous avez besoin. Évidemment, vous ne pouvez pas réellement stocker de grandes quantités de données sur ce disque, mais dans le but d'émuler logiquement un disque de 10 To, cette configuration m'a été utile.
Vous voulez essayer Red Hat Enterprise Linux ? Télécharge le maintenant gratuitement.