Last active
November 28, 2018 07:25
-
-
Save ghostiam/85c22858fad4409cb79546351bccac44 to your computer and use it in GitHub Desktop.
Create lvm partitions from files for testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# https://help.ubuntu.ru/wiki/lvm | |
LVM_FILES_PATH=/mnt/lvm | |
LVM_FILES_SIZE=1G | |
LVM_PARTS=("first|1G" "second|1G") # array of "name|size" | |
VG_NAME=vg | |
set -x | |
# remove old | |
for f in "${LVM_PARTS[@]}" | |
do | |
name=$(echo $f | cut -d'|' -f1) | |
umount "/dev/$VG_NAME/$name" | |
lvremove -f "$VG_NAME/$name" | |
done | |
vgremove -f "$VG_NAME" | |
for f in $(losetup -l | grep "$LVM_FILES_PATH" | cut -d' ' -f1) | |
do | |
pvremove -f "$f" | |
losetup -d "$f" | |
done | |
# create new | |
mkdir -p "$LVM_FILES_PATH" | |
# create files | |
dd if=/dev/zero of="$LVM_FILES_PATH/d01" count=1 bs=$LVM_FILES_SIZE | |
dd if=/dev/zero of="$LVM_FILES_PATH/d02" count=1 bs=$LVM_FILES_SIZE | |
dd if=/dev/zero of="$LVM_FILES_PATH/d03" count=1 bs=$LVM_FILES_SIZE | |
dd if=/dev/zero of="$LVM_FILES_PATH/d04" count=1 bs=$LVM_FILES_SIZE | |
# setup loop device | |
losetup -f --show "$LVM_FILES_PATH/d01" > lvm.tmp | |
losetup -f --show "$LVM_FILES_PATH/d02" >> lvm.tmp | |
losetup -f --show "$LVM_FILES_PATH/d03" >> lvm.tmp | |
losetup -f --show "$LVM_FILES_PATH/d04" >> lvm.tmp | |
# Initialize physical volume(s) for use by LVM | |
for f in $(cat lvm.tmp) | |
do | |
pvcreate "$f" | |
done | |
# Create a volume group | |
vgcreate -s 32M "$VG_NAME" $(cat lvm.tmp | tr '\n' ' ') | |
# Create a logical volume, filesystem and mount | |
for f in "${LVM_PARTS[@]}" | |
do | |
name=$(echo "$f" | cut -d'|' -f1) | |
size=$(echo "$f" | cut -d'|' -f2) | |
lvcreate -n "$name" -L $size "$VG_NAME" | |
mkfs.ext4 "/dev/$VG_NAME/$name" | |
mkdir -p "$LVM_FILES_PATH/$name" | |
mount "/dev/$VG_NAME/$name" "$LVM_FILES_PATH/$name" | |
done | |
rm lvm.tmp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment