少し前。ビッグデータプロジェクト用にディスクをパーティション分割してフォーマットするスクリプトを作成する必要がありました。ディスクサイズが十分に大きい場合は、GUIDパーティションテーブル(GPT)パーティションを使用する必要がありました。それ以外の場合は、マスターブートレコード(MBR)パーティションを使用します。問題は、このスクリプトをテストするための大きなディスクを備えたシステムにアクセスできなかったことです。
Red Hat Enterprise Linux(RHEL)7.5には、ディスク上の圧縮と重複排除を可能にするVirtual Disk Optimizer(VDO)と呼ばれる新機能が付属していたことを思い出しました。この新機能が私の状況に役立つかどうかを確認することにしました。 10GBなどの小さなディスクをOSから見て10TBのディスクのように見せることはできますか?
明らかに、10GBのディスクに実際に10TBを格納できる圧縮テクノロジーはありませんが、私の場合は、10TBのディスクを論理的にエミュレートする必要がありました。これでうまくいきますか?
見てみましょう。
この例では、VirtualBoxでRed Hat Enterprise Linux 8.1を使用してテストしていますが、この手順は、VDOを含むすべてのバージョンのLinuxで機能するはずです。これを達成するために、私は:
-
vdo
をインストールしました およびkmod-vdo
パッケージ:
[root@defiant ~]# yum install vdo kmod-kvdo
- 10 GBのディスクを作成し、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
- 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
- GPTパーティションを作成しました:
[root@defiant ~]# parted /dev/mapper/vdo-disk mklabel gpt mkpart p1 xfs 1MB 10TB
Information: You may need to update /etc/fstab.
- 結果を表示しました:
[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
- ファイルシステムを作成してマウントしました:
[root@defiant ~]# mkdir /data
- ディスクをフォーマットしました(この部分はおそらく長い時間がかかります):
[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
- ディスクをマウントしました:
[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
従うと、10TBのディスクをエミュレートしたことになります。オーバーヘッドがある場合、表示されるのは9.1 TBのみですが、サイズを試して必要なサイズを取得できることに注意してください。もちろん、このディスクに実際に大量のデータを保存することはできませんが、10 TBのディスクを論理的にエミュレートするために、この設定は役に立ちました。
Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。