mirror of
				https://github.com/vdsm/virtual-dsm.git
				synced 2025-11-04 17:04:52 +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