1#!/usr/bin/env bash 2SYSTEM=$(uname -s) 3size="1024M" 4nvme_disk="/var/lib/libvirt/images/nvme_disk.img" 5type="nvme" 6 7function usage() { 8 echo "Usage: ${0##*/} [-s <disk_size>] [-n <backing file name>]" 9 echo "-s <disk_size> with postfix e.g. 2G default: 1024M" 10 echo " for OCSSD default: 9G" 11 echo "-n <backing file name> backing file path with name" 12 echo " default: /var/lib/libvirt/images/nvme_disk.img" 13 echo "-t <type> default: nvme available: ocssd" 14} 15 16while getopts "s:n:t:h-:" opt; do 17 case "${opt}" in 18 -) 19 echo " Invalid argument: $OPTARG" 20 usage 21 exit 1 22 ;; 23 s) 24 size=$OPTARG 25 ;; 26 n) 27 nvme_disk=$OPTARG 28 ;; 29 t) 30 type=$OPTARG 31 ;; 32 h) 33 usage 34 exit 0 35 ;; 36 *) 37 echo " Invalid argument: $OPTARG" 38 usage 39 exit 1 40 ;; 41 esac 42done 43 44if [ ! "${SYSTEM}" = "FreeBSD" ]; then 45 WHICH_OS=$(lsb_release -i | awk '{print $3}') 46 case $type in 47 "nvme") 48 qemu-img create -f raw $nvme_disk $size 49 ;; 50 "ocssd") 51 if [ $size == "1024M" ]; then 52 size="9G" 53 fi 54 fallocate -l $size $nvme_disk 55 touch ${nvme_disk}_ocssd_md 56 ;; 57 *) 58 echo "We support only nvme and ocssd disks types" 59 exit 1 60 ;; 61 esac 62 #Change SE Policy on Fedora 63 if [ $WHICH_OS == "Fedora" ]; then 64 sudo chcon -t svirt_image_t $nvme_disk 65 fi 66 67 chmod 777 $nvme_disk 68 if [ $WHICH_OS == "Fedora" ]; then 69 chown qemu:qemu $nvme_disk 70 elif [ $WHICH_OS == "Ubuntu" ]; then 71 chown libvirt-qemu:kvm $nvme_disk 72 else 73 # That's just a wild guess for now 74 # TODO: needs improvement for other distros 75 chown libvirt-qemu:kvm $nvme_disk 76 fi 77fi 78