#!/bin/bash #=============================================================================== # ШАГ 9: НАСТРОЙКА SWAP #=============================================================================== # Запуск: sudo bash 01-k-server-initial-setup.09.sh #=============================================================================== SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) source "$SCRIPT_DIR/01-k-server-initial-setup.00.sh" init_log check_root print_header "ШАГ 9: НАСТРОЙКА SWAP" #------------------------------------------------------------------------------- # 9.1 Проверка существующего swap #------------------------------------------------------------------------------- print_subheader "Проверка swap" if has_swap; then print_success "Swap уже настроен:" swapon --show free -h print_success "Шаг 9 завершён (пропуск)" exit 0 else print_info "Swap не найден" fi #------------------------------------------------------------------------------- # 9.2 Запрос размера #------------------------------------------------------------------------------- print_subheader "Создание swap" echo "" echo "Рекомендуемый размер swap: 1-2GB" echo "" read -p "Размер swap в GB [2]: " SWAP_SIZE SWAP_SIZE=${SWAP_SIZE:-2} SWAP_FILE="/swapfile" #------------------------------------------------------------------------------- # 9.3 Создание swap-файла #------------------------------------------------------------------------------- print_info "Создание swap-файла ${SWAP_SIZE}GB..." # Проверка свободного места FREE_SPACE=$(df -BG / | tail -1 | awk '{print $4}' | tr -d 'G') if [[ "$FREE_SPACE" -lt "$SWAP_SIZE" ]]; then print_error "Недостаточно свободного места: ${FREE_SPACE}GB < ${SWAP_SIZE}GB" exit 1 fi # Создание fallocate -l "${SWAP_SIZE}G" "$SWAP_FILE" chmod 600 "$SWAP_FILE" mkswap "$SWAP_FILE" swapon "$SWAP_FILE" print_success "Swap создан" #------------------------------------------------------------------------------- # 9.4 Добавление в fstab #------------------------------------------------------------------------------- print_subheader "Настройка fstab" if ! grep -q "$SWAP_FILE" /etc/fstab; then echo "$SWAP_FILE none swap sw 0 0" >> /etc/fstab print_success "Swap добавлен в fstab" else print_info "Swap уже в fstab" fi #------------------------------------------------------------------------------- # 9.5 Оптимизация swappiness #------------------------------------------------------------------------------- print_subheader "Оптимизация swappiness" # Установить swappiness = 10 (меньше использовать swap) SWAPPINESS=10 sysctl vm.swappiness=$SWAPPINESS if ! grep -q "vm.swappiness" /etc/sysctl.conf; then echo "vm.swappiness = $SWAPPINESS" >> /etc/sysctl.conf print_success "swappiness настроен" else sed -i "s/vm.swappiness.*/vm.swappiness = $SWAPPINESS/" /etc/sysctl.conf print_success "swappiness обновлён" fi #------------------------------------------------------------------------------- # 9.6 Проверка #------------------------------------------------------------------------------- print_subheader "Проверка" echo "" free -h echo "" swapon --show print_success "Шаг 9 завершён: Swap настроен"