105 lines
3.5 KiB
Bash
Executable File
105 lines
3.5 KiB
Bash
Executable File
#!/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 настроен"
|