Update disk.sh
This commit is contained in:
parent
dc13c7cfe3
commit
3e2246b800
1 changed files with 41 additions and 27 deletions
68
src/disk.sh
68
src/disk.sh
|
@ -84,6 +84,7 @@ supportsDirect() {
|
||||||
}
|
}
|
||||||
|
|
||||||
createDisk() {
|
createDisk() {
|
||||||
|
|
||||||
local DISK_FILE=$1
|
local DISK_FILE=$1
|
||||||
local DISK_SPACE=$2
|
local DISK_SPACE=$2
|
||||||
local DISK_DESC=$3
|
local DISK_DESC=$3
|
||||||
|
@ -146,8 +147,8 @@ createDisk() {
|
||||||
qcow2)
|
qcow2)
|
||||||
|
|
||||||
local DISK_PARAM="$DISK_ALLOC"
|
local DISK_PARAM="$DISK_ALLOC"
|
||||||
isCow "$FS" && DISK_PARAM="$DISK_PARAM,nocow=on"
|
isCow "$FS" && DISK_PARAM+=",nocow=on"
|
||||||
[ -n "$DISK_FLAGS" ] && DISK_PARAM="$DISK_PARAM,$DISK_FLAGS"
|
[ -n "$DISK_FLAGS" ] && DISK_PARAM+=",$DISK_FLAGS"
|
||||||
|
|
||||||
if ! qemu-img create -f "$DISK_FMT" -o "$DISK_PARAM" -- "$DISK_FILE" "$DATA_SIZE" ; then
|
if ! qemu-img create -f "$DISK_FMT" -o "$DISK_PARAM" -- "$DISK_FILE" "$DATA_SIZE" ; then
|
||||||
rm -f "$DISK_FILE"
|
rm -f "$DISK_FILE"
|
||||||
|
@ -167,6 +168,7 @@ createDisk() {
|
||||||
}
|
}
|
||||||
|
|
||||||
resizeDisk() {
|
resizeDisk() {
|
||||||
|
|
||||||
local DISK_FILE=$1
|
local DISK_FILE=$1
|
||||||
local DISK_SPACE=$2
|
local DISK_SPACE=$2
|
||||||
local DISK_DESC=$3
|
local DISK_DESC=$3
|
||||||
|
@ -232,6 +234,7 @@ resizeDisk() {
|
||||||
}
|
}
|
||||||
|
|
||||||
convertDisk() {
|
convertDisk() {
|
||||||
|
|
||||||
local SOURCE_FILE=$1
|
local SOURCE_FILE=$1
|
||||||
local SOURCE_FMT=$2
|
local SOURCE_FMT=$2
|
||||||
local DST_FILE=$3
|
local DST_FILE=$3
|
||||||
|
@ -262,18 +265,19 @@ convertDisk() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
html "Converting $DISK_DESC to $DST_FMT..."
|
local msg="Converting $DISK_DESC to $DST_FMT"
|
||||||
info "Converting $DISK_DESC to $DST_FMT, please wait until completed..."
|
html "$msg..."
|
||||||
|
info "$msg, please wait until completed..."
|
||||||
|
|
||||||
local CONV_FLAGS="-p"
|
local CONV_FLAGS="-p"
|
||||||
local DISK_PARAM="$DISK_ALLOC"
|
local DISK_PARAM="$DISK_ALLOC"
|
||||||
isCow "$FS" && DISK_PARAM="$DISK_PARAM,nocow=on"
|
isCow "$FS" && DISK_PARAM+=",nocow=on"
|
||||||
|
|
||||||
if [[ "$DST_FMT" != "raw" ]]; then
|
if [[ "$DST_FMT" != "raw" ]]; then
|
||||||
if [[ "$ALLOCATE" == [Nn]* ]]; then
|
if [[ "$ALLOCATE" == [Nn]* ]]; then
|
||||||
CONV_FLAGS="$CONV_FLAGS -c"
|
CONV_FLAGS+=" -c"
|
||||||
fi
|
fi
|
||||||
[ -n "$DISK_FLAGS" ] && DISK_PARAM="$DISK_PARAM,$DISK_FLAGS"
|
[ -n "$DISK_FLAGS" ] && DISK_PARAM+=",$DISK_FLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
|
@ -302,13 +306,15 @@ convertDisk() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
html "Conversion of $DISK_DESC completed..."
|
msg="Conversion of $DISK_DESC"
|
||||||
info "Conversion of $DISK_DESC to $DST_FMT completed succesfully!"
|
html "$msg completed..."
|
||||||
|
info "$msg to $DST_FMT completed succesfully!"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
checkFS () {
|
checkFS () {
|
||||||
|
|
||||||
local FS=$1
|
local FS=$1
|
||||||
local DISK_FILE=$2
|
local DISK_FILE=$2
|
||||||
local DISK_DESC=$3
|
local DISK_DESC=$3
|
||||||
|
@ -342,6 +348,7 @@ checkFS () {
|
||||||
}
|
}
|
||||||
|
|
||||||
createDevice () {
|
createDevice () {
|
||||||
|
|
||||||
local DISK_FILE=$1
|
local DISK_FILE=$1
|
||||||
local DISK_TYPE=$2
|
local DISK_TYPE=$2
|
||||||
local DISK_INDEX=$3
|
local DISK_INDEX=$3
|
||||||
|
@ -360,22 +367,22 @@ createDevice () {
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"usb" )
|
"usb" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device usb-storage,drive=${DISK_ID}${index}"
|
-device usb-storage,drive=${DISK_ID}${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"ide" )
|
"ide" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device ide-hd,drive=${DISK_ID},bus=ide.$DISK_INDEX,rotation_rate=$DISK_ROTATION${index}"
|
-device ide-hd,drive=${DISK_ID},bus=ide.$DISK_INDEX,rotation_rate=$DISK_ROTATION${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"blk" | "virtio-blk" )
|
"blk" | "virtio-blk" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device virtio-blk-pci,drive=${DISK_ID},scsi=off,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2${index}"
|
-device virtio-blk-pci,drive=${DISK_ID},scsi=off,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"scsi" | "virtio-scsi" )
|
"scsi" | "virtio-scsi" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device virtio-scsi-pci,id=${DISK_ID}b,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2 \
|
-device virtio-scsi-pci,id=${DISK_ID}b,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2 \
|
||||||
-device scsi-hd,drive=${DISK_ID},bus=${DISK_ID}b.0,channel=0,scsi-id=0,lun=0,rotation_rate=$DISK_ROTATION${index}"
|
-device scsi-hd,drive=${DISK_ID},bus=${DISK_ID}b.0,channel=0,scsi-id=0,lun=0,rotation_rate=$DISK_ROTATION${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
|
@ -386,6 +393,7 @@ createDevice () {
|
||||||
}
|
}
|
||||||
|
|
||||||
addMedia () {
|
addMedia () {
|
||||||
|
|
||||||
local DISK_FILE=$1
|
local DISK_FILE=$1
|
||||||
local DISK_TYPE=$2
|
local DISK_TYPE=$2
|
||||||
local DISK_BUS=$3
|
local DISK_BUS=$3
|
||||||
|
@ -402,22 +410,22 @@ addMedia () {
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"usb" )
|
"usb" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device usb-storage,drive=${DISK_ID}${index},removable=on"
|
-device usb-storage,drive=${DISK_ID}${index},removable=on"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"ide" )
|
"ide" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device ide-cd,drive=${DISK_ID},bus=ide.${DISK_BUS}${index}"
|
-device ide-cd,drive=${DISK_ID},bus=ide.${DISK_BUS}${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"blk" | "virtio-blk" )
|
"blk" | "virtio-blk" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device virtio-blk-pci,drive=${DISK_ID},scsi=off,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2${index}"
|
-device virtio-blk-pci,drive=${DISK_ID},scsi=off,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
;;
|
;;
|
||||||
"scsi" | "virtio-scsi" )
|
"scsi" | "virtio-scsi" )
|
||||||
result="$result,if=none \
|
result+=",if=none \
|
||||||
-device virtio-scsi-pci,id=${DISK_ID}b,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2 \
|
-device virtio-scsi-pci,id=${DISK_ID}b,bus=pcie.0,addr=$DISK_ADDRESS,iothread=io2 \
|
||||||
-device scsi-cd,drive=${DISK_ID},bus=${DISK_ID}b.0${index}"
|
-device scsi-cd,drive=${DISK_ID},bus=${DISK_ID}b.0${index}"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
|
@ -428,6 +436,7 @@ addMedia () {
|
||||||
}
|
}
|
||||||
|
|
||||||
addDisk () {
|
addDisk () {
|
||||||
|
|
||||||
local DISK_BASE=$1
|
local DISK_BASE=$1
|
||||||
local DISK_TYPE=$2
|
local DISK_TYPE=$2
|
||||||
local DISK_DESC=$3
|
local DISK_DESC=$3
|
||||||
|
@ -468,6 +477,7 @@ addDisk () {
|
||||||
else
|
else
|
||||||
PREV_FMT="qcow2"
|
PREV_FMT="qcow2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PREV_EXT=$(fmt2ext "$PREV_FMT")
|
PREV_EXT=$(fmt2ext "$PREV_FMT")
|
||||||
|
|
||||||
if [ -s "$DISK_BASE.$PREV_EXT" ] ; then
|
if [ -s "$DISK_BASE.$PREV_EXT" ] ; then
|
||||||
|
@ -490,12 +500,13 @@ addDisk () {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OPTS=$(createDevice "$DISK_FILE" "$DISK_TYPE" "$DISK_INDEX" "$DISK_ADDRESS" "$DISK_FMT" "$DISK_IO" "$DISK_CACHE")
|
OPTS=$(createDevice "$DISK_FILE" "$DISK_TYPE" "$DISK_INDEX" "$DISK_ADDRESS" "$DISK_FMT" "$DISK_IO" "$DISK_CACHE")
|
||||||
DISK_OPTS="$DISK_OPTS $OPTS"
|
DISK_OPTS+=" $OPTS"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
addDevice () {
|
addDevice () {
|
||||||
|
|
||||||
local DISK_DEV=$1
|
local DISK_DEV=$1
|
||||||
local DISK_TYPE=$2
|
local DISK_TYPE=$2
|
||||||
local DISK_INDEX=$3
|
local DISK_INDEX=$3
|
||||||
|
@ -506,31 +517,34 @@ addDevice () {
|
||||||
|
|
||||||
local OPTS
|
local OPTS
|
||||||
OPTS=$(createDevice "$DISK_DEV" "$DISK_TYPE" "$DISK_INDEX" "$DISK_ADDRESS" "raw" "$DISK_IO" "$DISK_CACHE")
|
OPTS=$(createDevice "$DISK_DEV" "$DISK_TYPE" "$DISK_INDEX" "$DISK_ADDRESS" "raw" "$DISK_IO" "$DISK_CACHE")
|
||||||
DISK_OPTS="$DISK_OPTS $OPTS"
|
DISK_OPTS+=" $OPTS"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
DISK_OPTS=""
|
|
||||||
html "Initializing disks..."
|
html "Initializing disks..."
|
||||||
|
|
||||||
|
[ -z "${DISK_OPTS:-}" ] && DISK_OPTS=""
|
||||||
|
[ -z "${DISK_TYPE:-}" ] && DISK_TYPE="scsi"
|
||||||
|
|
||||||
case "${DISK_TYPE,,}" in
|
case "${DISK_TYPE,,}" in
|
||||||
"blk" ) MEDIA_TYPE="auto" ;;
|
"ide" | "usb" | "scsi" | "blk" | "auto" ) ;;
|
||||||
"" ) DISK_TYPE="scsi" && MEDIA_TYPE="$DISK_TYPE" ;;
|
|
||||||
"auto" | "ide" | "usb" | "scsi" ) MEDIA_TYPE="$DISK_TYPE" ;;
|
|
||||||
* ) error "Invalid DISK_TYPE, value \"$DISK_TYPE\" is unrecognized!" && exit 80 ;;
|
* ) error "Invalid DISK_TYPE, value \"$DISK_TYPE\" is unrecognized!" && exit 80 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
[[ "${MACHINE,,}" != "virt" ]] && MEDIA_TYPE="ide" || MEDIA_TYPE="auto"
|
||||||
|
|
||||||
if [ -f "$BOOT" ] && [ -s "$BOOT" ]; then
|
if [ -f "$BOOT" ] && [ -s "$BOOT" ]; then
|
||||||
DISK_OPTS=$(addMedia "$BOOT" "$MEDIA_TYPE" "0" "$BOOT_INDEX" "0x5")
|
ADD_OPTS=$(addMedia "$BOOT" "$MEDIA_TYPE" "0" "$BOOT_INDEX" "0x5")
|
||||||
|
DISK_OPTS+=" $ADD_OPTS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DRIVERS="/drivers.iso"
|
DRIVERS="/drivers.iso"
|
||||||
[ ! -f "$DRIVERS" ] || [ ! -s "$DRIVERS" ] && DRIVERS="$STORAGE/drivers.iso"
|
[ ! -f "$DRIVERS" ] || [ ! -s "$DRIVERS" ] && DRIVERS="$STORAGE/drivers.iso"
|
||||||
|
|
||||||
if [ -f "$DRIVERS" ] && [ -s "$DRIVERS" ]; then
|
if [ -f "$DRIVERS" ] && [ -s "$DRIVERS" ]; then
|
||||||
DRIVER_OPTS=$(addMedia "$DRIVERS" "auto" "1" "" "0x6")
|
ADD_OPTS=$(addMedia "$DRIVERS" "$MEDIA_TYPE" "1" "" "0x6")
|
||||||
DISK_OPTS="$DISK_OPTS $DRIVER_OPTS"
|
DISK_OPTS+=" $ADD_OPTS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DISK1_FILE="$STORAGE/data"
|
DISK1_FILE="$STORAGE/data"
|
||||||
|
@ -602,7 +616,7 @@ else
|
||||||
addDisk "$DISK4_FILE" "$DISK_TYPE" "disk4" "$DISK4_SIZE" "6" "0xd" "$DISK_FMT" "$DISK_IO" "$DISK_CACHE" || exit $?
|
addDisk "$DISK4_FILE" "$DISK_TYPE" "disk4" "$DISK4_SIZE" "6" "0xd" "$DISK_FMT" "$DISK_IO" "$DISK_CACHE" || exit $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DISK_OPTS="$DISK_OPTS -object iothread,id=io2"
|
DISK_OPTS+=" -object iothread,id=io2"
|
||||||
|
|
||||||
html "Initialized disks successfully..."
|
html "Initialized disks successfully..."
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue