Vor einiger Zeit. Ich musste ein Skript schreiben, das Festplatten für ein Big-Data-Projekt partitioniert und formatiert. Wenn die Festplattengröße groß genug war, musste ich eine GUID-Partitionstabellenpartition (GPT) verwenden, andernfalls eine Master Boot Record-Partition (MBR). Das Problem war, dass ich keinen Zugriff auf Systeme mit großen Festplatten hatte, um dieses Skript zu testen.
Ich erinnerte mich, dass Red Hat Enterprise Linux (RHEL) 7.5 mit einer neuen Funktion namens Virtual Disk Optimizer (VDO) ausgeliefert wurde, die Komprimierung und Deduplizierung auf der Festplatte ermöglichte. Ich beschloss zu sehen, ob diese neue Funktion meiner Situation helfen würde. Könnte ich eine kleine Festplatte nehmen, sagen wir 10 GB, und sie für das Betriebssystem wie eine 10 TB-Festplatte aussehen lassen?
Offensichtlich würde mir keine Komprimierungstechnologie erlauben, tatsächlich 10 TB auf einer 10-GB-Festplatte zu speichern, aber in meinem Fall musste ich nur eine 10-TB-Festplatte logisch emulieren. Würde das funktionieren?
Mal sehen.
Beispiel
In diesem Beispiel verwende ich Red Hat Enterprise Linux 8.1 unter VirtualBox zum Testen, aber dieses Verfahren sollte mit jeder Version von Linux funktionieren, die VDO enthält. Um dies zu erreichen, mache ich:
- Das
vdo
installiert undkmod-vdo
Pakete:
[root@defiant ~]# yum install vdo kmod-kvdo
- Eine 10-GB-Festplatte erstellt und an meine VM angehängt:
[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
- Das VDO-Volume erstellt:
[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
- Eine GPT-Partition erstellt:
[root@defiant ~]# parted /dev/mapper/vdo-disk mklabel gpt mkpart p1 xfs 1MB 10TB
Information: You may need to update /etc/fstab.
- Ergebnisse angezeigt:
[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
- Ein Dateisystem erstellt und gemountet:
[root@defiant ~]# mkdir /data
- Festplatte formatiert (dieser Teil wird wahrscheinlich lange dauern):
[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
- Festplatte gemountet:
[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
Wenn Sie mitgemacht haben, haben Sie jetzt eine 10-TB-Festplatte emuliert. Beachten Sie, dass mit Overhead nur 9,1 TB angezeigt werden, aber Sie können mit Größen experimentieren, um die gewünschte Größe zu erhalten. Natürlich können Sie auf dieser Festplatte keine großen Datenmengen speichern, aber für den Zweck der logischen Emulation einer 10-TB-Festplatte war dieses Setup für mich nützlich.
Möchten Sie Red Hat Enterprise Linux ausprobieren? Laden Sie es jetzt kostenlos herunter.