From 870253f59609026137da6530be482eacd3cfeeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Wed, 6 May 2026 20:21:24 +0900 Subject: [PATCH] Add disk and RAM requirements to node installer --- install_virtuality_node.sh | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/install_virtuality_node.sh b/install_virtuality_node.sh index 8a0e78b..34b76f0 100644 --- a/install_virtuality_node.sh +++ b/install_virtuality_node.sh @@ -15,8 +15,13 @@ BACKUP_DIR="${STORAGE_DIR}/backups" LOG_DIR="/var/log/virtuality" COCKPIT_PORT="9090" LOG_FILE="${LOG_DIR}/install_node_$(date +%Y%m%d_%H%M%S).log" -TOTAL_STEPS=12 +TOTAL_STEPS=13 CURRENT_STEP=0 +MIN_ROOT_FREE_MB="${VIRTUALITY_MIN_ROOT_FREE_MB:-8192}" +MIN_VAR_FREE_MB="${VIRTUALITY_MIN_VAR_FREE_MB:-20480}" +MIN_RAM_MB="${VIRTUALITY_MIN_RAM_MB:-4096}" +MIN_CPU_CORES="${VIRTUALITY_MIN_CPU_CORES:-2}" +SKIP_REQUIREMENTS="${VIRTUALITY_SKIP_REQUIREMENTS:-0}" ESC="\033" RESET="${ESC}[0m" @@ -72,6 +77,26 @@ run_logged() { service_state() { systemctl is-active "$1" 2>/dev/null || echo "inactive"; } service_enabled() { systemctl is-enabled "$1" 2>/dev/null || echo "disabled"; } +free_mb_for_path() { local path="$1"; mkdir -p "$path" 2>/dev/null || true; df -Pm "$path" | awk 'NR==2 {print $4}'; } + +check_requirements() { + step "Проверяем системные требования" + if [[ "$SKIP_REQUIREMENTS" == "1" ]]; then + warn "Проверка требований отключена через VIRTUALITY_SKIP_REQUIREMENTS=1" + return 0 + fi + + local root_free var_free ram_mb cpu_cores + root_free="$(free_mb_for_path /)" + var_free="$(free_mb_for_path /var/lib 2>/dev/null || free_mb_for_path /)" + ram_mb="$(awk '/MemTotal/ {printf "%d", $2/1024}' /proc/meminfo)" + cpu_cores="$(nproc 2>/dev/null || echo 1)" + + (( root_free >= MIN_ROOT_FREE_MB )) && ok "Свободно на /: ${root_free} MB минимум ${MIN_ROOT_FREE_MB} MB" || fail "Недостаточно места на /: ${root_free} MB. Нужно минимум ${MIN_ROOT_FREE_MB} MB" + (( var_free >= MIN_VAR_FREE_MB )) && ok "Свободно для /var/lib: ${var_free} MB минимум ${MIN_VAR_FREE_MB} MB" || fail "Недостаточно места для VM-хранилища /var/lib: ${var_free} MB. Нужно минимум ${MIN_VAR_FREE_MB} MB" + (( ram_mb >= MIN_RAM_MB )) && ok "RAM: ${ram_mb} MB минимум ${MIN_RAM_MB} MB" || warn "RAM: ${ram_mb} MB меньше рекомендуемых ${MIN_RAM_MB} MB" + (( cpu_cores >= MIN_CPU_CORES )) && ok "CPU cores: ${cpu_cores} минимум ${MIN_CPU_CORES}" || warn "CPU cores: ${cpu_cores} меньше рекомендуемых ${MIN_CPU_CORES}" +} print_header @@ -93,6 +118,8 @@ else warn "Не найден /etc/os-release" fi +check_requirements + step "Проверяем аппаратную виртуализацию" if grep -E -q '(vmx|svm)' /proc/cpuinfo; then ok "CPU поддерживает аппаратную виртуализацию vmx/svm"