mirror of
https://github.com/vdsm/virtual-dsm.git
synced 2025-02-24 13:30:02 +08:00
Make preallocation configurable
Make preallocation configurable
This commit is contained in:
commit
ec10de346f
@ -48,6 +48,7 @@ EXPOSE 5000
|
|||||||
EXPOSE 5001
|
EXPOSE 5001
|
||||||
|
|
||||||
ENV URL ""
|
ENV URL ""
|
||||||
|
ENV ALLOCATE Y
|
||||||
ENV CPU_CORES 1
|
ENV CPU_CORES 1
|
||||||
ENV DISK_SIZE 16G
|
ENV DISK_SIZE 16G
|
||||||
ENV RAM_SIZE 512M
|
ENV RAM_SIZE 512M
|
||||||
|
63
run/disk.sh
63
run/disk.sh
@ -29,19 +29,26 @@ if [ -f "${DATA}" ]; then
|
|||||||
|
|
||||||
echo "INFO: Resizing data disk from $OLD_SIZE to $DATA_SIZE bytes.."
|
echo "INFO: Resizing data disk from $OLD_SIZE to $DATA_SIZE bytes.."
|
||||||
|
|
||||||
REQ=$((DATA_SIZE-OLD_SIZE))
|
if [ "$ALLOCATE" != "Y" ]; then
|
||||||
|
|
||||||
# Check free diskspace
|
truncate -s "${DATA_SIZE}" "${DATA}";
|
||||||
SPACE=$(df --output=avail -B 1 "${STORAGE}" | tail -n 1)
|
|
||||||
|
else
|
||||||
|
|
||||||
|
REQ=$((DATA_SIZE-OLD_SIZE))
|
||||||
|
|
||||||
|
# Check free diskspace
|
||||||
|
SPACE=$(df --output=avail -B 1 "${STORAGE}" | tail -n 1)
|
||||||
|
|
||||||
|
if (( REQ > SPACE )); then
|
||||||
|
echo "ERROR: Not enough free space to resize virtual disk to ${DISK_SIZE}." && exit 84
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
|
||||||
|
echo "ERROR: Could not allocate a file for the virtual disk." && exit 85
|
||||||
|
fi
|
||||||
|
|
||||||
if (( REQ > SPACE )); then
|
|
||||||
echo "ERROR: Not enough free space to resize virtual disk." && exit 84
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
|
|
||||||
echo "ERROR: Could not allocate file for virtual disk." && exit 85
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DATA_SIZE" -lt "$OLD_SIZE" ]; then
|
if [ "$DATA_SIZE" -lt "$OLD_SIZE" ]; then
|
||||||
@ -52,22 +59,31 @@ if [ -f "${DATA}" ]; then
|
|||||||
mv -f "${DATA}" "${DATA}.bak"
|
mv -f "${DATA}" "${DATA}.bak"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "${DATA}" ]; then
|
if [ ! -f "${DATA}" ]; then
|
||||||
|
|
||||||
# Check free diskspace
|
|
||||||
SPACE=$(df --output=avail -B 1 "${STORAGE}" | tail -n 1)
|
|
||||||
|
|
||||||
if (( DATA_SIZE > SPACE )); then
|
|
||||||
echo "ERROR: Not enough free space to create virtual disk." && exit 86
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create an empty file
|
# Create an empty file
|
||||||
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
|
|
||||||
rm -f "${DATA}"
|
if [ "$ALLOCATE" != "Y" ]; then
|
||||||
echo "ERROR: Could not allocate file for virtual disk." && exit 87
|
|
||||||
|
truncate -s "${DATA_SIZE}" "${DATA}"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# Check free diskspace
|
||||||
|
SPACE=$(df --output=avail -B 1 "${STORAGE}" | tail -n 1)
|
||||||
|
|
||||||
|
if (( DATA_SIZE > SPACE )); then
|
||||||
|
echo "ERROR: Not enough free space to create a virtual disk of ${DISK_SIZE}."
|
||||||
|
echo "ERROR: Specify a smaller size or disable preallocation with ALLOCATION=N." && exit 86
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
|
||||||
|
rm -f "${DATA}"
|
||||||
|
echo "ERROR: Could not allocate a file for the virtual disk." && exit 87
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if file exists
|
# Check if file exists
|
||||||
@ -80,12 +96,11 @@ if [ ! -f "${DATA}" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AGENT_VERSION=1
|
|
||||||
AGENT="${STORAGE}/${BASE}.agent"
|
AGENT="${STORAGE}/${BASE}.agent"
|
||||||
[ -f "$AGENT" ] && AGENT_VERSION=$(cat "${AGENT}")
|
[ -f "$AGENT" ] && AGENT_VERSION=$(cat "${AGENT}") || AGENT_VERSION=1
|
||||||
|
|
||||||
if ((AGENT_VERSION < 5)); then
|
if ((AGENT_VERSION < 5)); then
|
||||||
echo "INFO: The installed VirtualDSM Agent is an outdated version, please upgrade it."
|
echo "INFO: The installed VirtualDSM Agent v${AGENT_VERSION} is an outdated version, please upgrade it."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KVM_DISK_OPTS="\
|
KVM_DISK_OPTS="\
|
||||||
|
@ -112,12 +112,12 @@ SYSTEM_SIZE="4954537983"
|
|||||||
SPACE=$(df --output=avail -B 1 "$TMP" | tail -n 1)
|
SPACE=$(df --output=avail -B 1 "$TMP" | tail -n 1)
|
||||||
|
|
||||||
if (( SYSTEM_SIZE > SPACE )); then
|
if (( SYSTEM_SIZE > SPACE )); then
|
||||||
echo "ERROR: Not enough free space to create virtual system disk." && exit 87
|
echo "ERROR: Not enough free space to create a 4 GB system disk." && exit 87
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! fallocate -l "${SYSTEM_SIZE}" "${SYSTEM}"; then
|
if ! fallocate -l "${SYSTEM_SIZE}" "${SYSTEM}"; then
|
||||||
rm -f "${SYSTEM}"
|
rm -f "${SYSTEM}"
|
||||||
echo "ERROR: Could not allocate file for virtual system disk." && exit 88
|
echo "ERROR: Could not allocate a file for the system disk." && exit 88
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PART="$TMP/partition.fdisk"
|
PART="$TMP/partition.fdisk"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
# Docker environment variabeles
|
||||||
|
|
||||||
: ${VM_NET_TAP:=''}
|
: ${VM_NET_TAP:=''}
|
||||||
: ${VM_NET_IP:='20.20.20.21'}
|
: ${VM_NET_IP:='20.20.20.21'}
|
||||||
: ${VM_NET_HOST:='VirtualDSM'}
|
: ${VM_NET_HOST:='VirtualDSM'}
|
||||||
|
@ -42,9 +42,8 @@ _graceful_shutdown(){
|
|||||||
|
|
||||||
# If we cannot shutdown the usual way, fallback to the NMI method
|
# If we cannot shutdown the usual way, fallback to the NMI method
|
||||||
|
|
||||||
AGENT_VERSION=1
|
|
||||||
AGENT="${STORAGE}/${BASE}.agent"
|
AGENT="${STORAGE}/${BASE}.agent"
|
||||||
[ -f "$AGENT" ] && AGENT_VERSION=$(cat "${AGENT}")
|
[ -f "$AGENT" ] && AGENT_VERSION=$(cat "${AGENT}") || AGENT_VERSION=1
|
||||||
|
|
||||||
if ((AGENT_VERSION < 2)); then
|
if ((AGENT_VERSION < 2)); then
|
||||||
|
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
# Docker environment variabeles
|
||||||
|
|
||||||
|
: ${URL:=''}. # URL of PAT file
|
||||||
|
: ${ALLOCATE:='Y'} # Preallocate diskspace
|
||||||
|
: ${CPU_CORES:='1'} # vCPU count
|
||||||
|
: ${DISK_SIZE:='16G'} # Initial disk size
|
||||||
|
: ${RAM_SIZE:='512M'} # Amount of RAM
|
||||||
|
|
||||||
echo "Starting Virtual DSM for Docker v${VERSION}..."
|
echo "Starting Virtual DSM for Docker v${VERSION}..."
|
||||||
|
|
||||||
STORAGE="/storage"
|
STORAGE="/storage"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user