2017-11-28 14:04:51 +00:00
|
|
|
#!/usr/bin/env bash
|
2019-07-03 15:12:39 +00:00
|
|
|
SYSTEM=$(uname -s)
|
2018-09-19 09:31:00 +00:00
|
|
|
size="1024M"
|
2019-11-19 10:38:23 +00:00
|
|
|
nvme_disk="/var/lib/libvirt/images/nvme_disk.img"
|
2019-08-28 14:08:21 +00:00
|
|
|
type="nvme"
|
2018-09-19 09:31:00 +00:00
|
|
|
|
2018-11-06 18:05:10 +00:00
|
|
|
function usage() {
|
|
|
|
echo "Usage: ${0##*/} [-s <disk_size>] [-n <backing file name>]"
|
|
|
|
echo "-s <disk_size> with postfix e.g. 2G default: 1024M"
|
2019-11-19 10:38:23 +00:00
|
|
|
echo " for OCSSD default: 9G"
|
|
|
|
echo "-n <backing file name> backing file path with name"
|
|
|
|
echo " default: /var/lib/libvirt/images/nvme_disk.img"
|
2019-08-28 14:08:21 +00:00
|
|
|
echo "-t <type> default: nvme available: ocssd"
|
2018-11-06 18:05:10 +00:00
|
|
|
}
|
|
|
|
|
2019-08-28 14:08:21 +00:00
|
|
|
while getopts "s:n:t:h-:" opt; do
|
2018-11-06 18:05:10 +00:00
|
|
|
case "${opt}" in
|
|
|
|
-)
|
|
|
|
echo " Invalid argument: $OPTARG"
|
|
|
|
usage
|
|
|
|
exit 1
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2018-11-06 18:05:10 +00:00
|
|
|
s)
|
|
|
|
size=$OPTARG
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2018-11-06 18:05:10 +00:00
|
|
|
n)
|
2019-11-19 10:38:23 +00:00
|
|
|
nvme_disk=$OPTARG
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2019-08-28 14:08:21 +00:00
|
|
|
t)
|
|
|
|
type=$OPTARG
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2018-11-06 18:05:10 +00:00
|
|
|
h)
|
|
|
|
usage
|
|
|
|
exit 0
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2018-11-06 18:05:10 +00:00
|
|
|
*)
|
|
|
|
echo " Invalid argument: $OPTARG"
|
|
|
|
usage
|
|
|
|
exit 1
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2018-11-06 18:05:10 +00:00
|
|
|
esac
|
|
|
|
done
|
2017-11-28 14:04:51 +00:00
|
|
|
|
2018-06-19 03:58:46 +00:00
|
|
|
if [ ! "${SYSTEM}" = "FreeBSD" ]; then
|
2019-07-03 15:12:39 +00:00
|
|
|
WHICH_OS=$(lsb_release -i | awk '{print $3}')
|
2019-08-28 14:08:21 +00:00
|
|
|
case $type in
|
|
|
|
"nvme")
|
2020-03-26 11:24:45 +00:00
|
|
|
qemu-img create -f raw $nvme_disk $size
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2019-08-28 14:08:21 +00:00
|
|
|
"ocssd")
|
2020-03-26 11:24:45 +00:00
|
|
|
if [ $size == "1024M" ]; then
|
2019-11-19 10:38:23 +00:00
|
|
|
size="9G"
|
|
|
|
fi
|
2020-03-26 11:24:45 +00:00
|
|
|
fallocate -l $size $nvme_disk
|
|
|
|
touch ${nvme_disk}_ocssd_md
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2019-08-28 14:08:21 +00:00
|
|
|
*)
|
|
|
|
echo "We support only nvme and ocssd disks types"
|
|
|
|
exit 1
|
2020-05-07 11:27:06 +00:00
|
|
|
;;
|
2019-08-28 14:08:21 +00:00
|
|
|
esac
|
2018-06-19 03:58:46 +00:00
|
|
|
#Change SE Policy on Fedora
|
|
|
|
if [ $WHICH_OS == "Fedora" ]; then
|
|
|
|
sudo chcon -t svirt_image_t $nvme_disk
|
|
|
|
fi
|
2017-11-28 14:04:51 +00:00
|
|
|
|
2018-06-19 03:58:46 +00:00
|
|
|
chmod 777 $nvme_disk
|
2020-03-30 10:09:50 +00:00
|
|
|
if [ $WHICH_OS == "Fedora" ]; then
|
|
|
|
chown qemu:qemu $nvme_disk
|
|
|
|
elif [ $WHICH_OS == "Ubuntu" ]; then
|
|
|
|
chown libvirt-qemu:kvm $nvme_disk
|
|
|
|
else
|
|
|
|
# That's just a wild guess for now
|
|
|
|
# TODO: needs improvement for other distros
|
|
|
|
chown libvirt-qemu:kvm $nvme_disk
|
|
|
|
fi
|
2018-06-19 03:58:46 +00:00
|
|
|
fi
|