ansitest/redhat-alma-rocky/vdo-create-volume.sh
2024-03-21 20:50:50 -06:00

66 lines
1.8 KiB
Bash

#!/bin/bash
# 2024.mar kneutron
# Works on almalinux 9
# Target disk
# TODO EDITME - maybe better to use partition instead of whole device
tdisk="pci-0000:06:0b.0-part1" # -> ../../vdb1
# REF: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/deduplicating_and_compressing_logical_volumes_on_rhel/index
# NOTE Starting with RHEL 9, VDO can only be managed using LVM tools
#Replace logical-size with the amount of logical storage that the VDO volume should present:
#For active VMs or container storage, use logical size that is ten times the
#physical size of your block device. For example, if your block device is
# 1TB in size, use 10T here.
#For object storage, use logical size that is three times the physical size
# of your block device. For example, if your block device is 1TB in size, use 3T here.
modprobe kvdo
# TODO EDITME
vdoname=vdotest
# TODO EDITME physical disk size 128G
let pdisk=128-1 # GB
# NOTE if we dont do -1 get insufficient free extents error
lsize=$(echo $[$pdisk * 3])
set -x -u
# RHEL8
#time vdo create --name=$vdoname \
# --device=/dev/disk/by-path/pci-0000:06:0b.0-part1 \
# --vdoLogicalSize=${lsize}G --writePolicy=async
# RHEL9
vgcreate $vdoname-vg "/dev/disk/by-path/$tdisk" # pci-0000:06:0b.0-part1
lvcreate --type vdo -n $vdoname-lv -L ${pdisk}G -V ${lsize}G $vdoname-vg/vdo-pool1
# vdotest--vg-vdotest--lv -> ../dm-4
time mkfs.xfs -K /dev/mapper/$vdoname--vg-$vdoname--lv
echo "$(date) - waiting for Godot"
time udevadm settle
date
systemctl enable --now fstrim.timer # auto once a week
mkdir -pv /mnt/vdo1
mount /dev/mapper/$vdoname--vg-$vdoname--lv /mnt/vdo1 -odefaults,noatime
set +x
echo ''
df -hT /mnt/vdo1
echo ''
echo "fstab:
/dev/mapper/$vdoname--vg-$vdoname--lv mount-point xfs defaults,noatime 0 0"
echo ''
vdostats --human-readable