fewit.ru :: Заметки недоайтишника

Ещё один криворукий админ

Проверить степень фрагментации:

xfs_db -r -c frag /dev/mapper/root-data

Запустить фрагментацию с наименьшим приоритетом:

ionice -c2 -n7 nice -n19 xfs_fsr -v -t /mnt/data

xfs_fsr -v → включён подробный вывод, чтобы видеть прогресс.
-t → «throttle», даёт паузы между операциями, чтобы другие IO могли проходить.

Скрипт анализа количества AG

#!/usr/bin/env bash
set -euo pipefail

MNT="${1:-}"
if [ -z "$MNT" ]; then
  echo "Использование: $0 "
  exit 1
fi

INFO=$(xfs_info "$MNT" 2>/dev/null) || {
  echo "Ошибка: не удалось выполнить xfs_info на $MNT"
  exit 2
}

# Получаем строку data (откуда берём bsize и blocks). fallback — первая строка с 'data'
DATA_LINE=$(printf "%s\n" "$INFO" | awk '/^[[:space:]]*data[[:space:]]*=/ {print; exit}')
if [ -z "$DATA_LINE" ]; then
  DATA_LINE=$(printf "%s\n" "$INFO" | grep -m1 'data' || true)
fi

# Парсим значения (сначала из DATA_LINE, иначе из всего INFO)
BSIZE=$(printf "%s\n" "$DATA_LINE" | sed -n 's/.*bsize=\([0-9]*\).*/\1/p')
TOTAL_BLOCKS=$(printf "%s\n" "$DATA_LINE" | sed -n 's/.*blocks=\([0-9]*\).*/\1/p')

[ -z "$BSIZE" ] && BSIZE=$(printf "%s\n" "$INFO" | sed -n 's/.*bsize=\([0-9]*\).*/\1/p' | head -n1 || true)
[ -z "$TOTAL_BLOCKS" ] && TOTAL_BLOCKS=$(printf "%s\n" "$INFO" | sed -n 's/.*blocks=\([0-9]*\).*/\1/p' | head -n1 || true)

AGCOUNT=$(printf "%s\n" "$INFO" | sed -n 's/.*agcount=\([0-9]*\).*/\1/p' | head -n1 || true)
AGSIZE=$(printf "%s\n" "$INFO" | sed -n 's/.*agsize=\([0-9]*\).*/\1/p' | head -n1 || true)

# Проверки
if [ -z "$BSIZE" ] || [ -z "$TOTAL_BLOCKS" ] || [ -z "$AGCOUNT" ] || [ -z "$AGSIZE" ]; then
  echo "Не удалось получить все необходимые параметры из xfs_info. Вывод xfs_info:"
  echo "------------"
  echo "$INFO"
  echo "------------"
  exit 3
fi

# Арифметика (байты)
AG_BYTES=$((AGSIZE * BSIZE))
TOTAL_BYTES=$((TOTAL_BLOCKS * BSIZE))
LAST_AG_BLOCKS=$((TOTAL_BLOCKS - AGSIZE * (AGCOUNT - 1)))
if [ "$LAST_AG_BLOCKS" -le 0 ]; then
  echo "Внимание: рассчитано LAST_AG_BLOCKS=$LAST_AG_BLOCKS (<=0). Проверьте вывод xfs_info."
  exit 4
fi
LAST_AG_BYTES=$((LAST_AG_BLOCKS * BSIZE))

# Конвертация в мегабайты с двумя знаками
to_mb() {
  awk -v b="$1" 'BEGIN{printf("%.2f", b/1024/1024)}'
}

AG_MB=$(to_mb "$AG_BYTES")
LAST_AG_MB=$(to_mb "$LAST_AG_BYTES")
TOTAL_MB=$(to_mb "$TOTAL_BYTES")

PERCENT=$(awk -v a="$LAST_AG_BYTES" -v b="$AG_BYTES" 'BEGIN{if (b==0) print "0.0"; else printf("%.1f", a/b*100)}')

echo "Mountpoint: $MNT"
echo "Block size: $BSIZE"
echo "AG count:   $AGCOUNT"
printf "Normal AG:  %s MB\n" "$AG_MB"
printf "Last AG:    %s MB (%.1f%% of normal)\n" "$LAST_AG_MB" "$PERCENT"
printf "Total FS:   %s MB\n" "$TOTAL_MB"

if awk "BEGIN{exit !($PERCENT < 50)}"; then
  echo "⚠️  Warning: последний AG меньше 50% от обычного — есть риск ENOSPC при reflink/CoW."
fi

25 сентября, 2025

Posted In: CentOS, Linux

Метки:

dnf module list php
dnf module enable php:7.4
dnf module list mariadb
dnf module enable mariadb:10.5

21 февраля, 2022

Posted In: CentOS, php

Метки: , , , ,

wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1m.tar.gz
tar xvzf openssl-1.1.1m.tar.gz
cd openssl-1.1.1m/
mkdir /opt/openssl
./config --prefix=/opt/openssl --openssldir=/opt/openssl shared zlib
make
make install
tar xvzf Python-3.10.2.tgz
cd Python-3.10.2/
nano Modules/Setup

_socket socketmodule.c

# Socket module helper for SSL support; you must comment out the other
# socket line above, and edit the OPENSSL variable:
OPENSSL=/opt/openssl
 _ssl _ssl.c \
     -I$(OPENSSL)/include -L$(OPENSSL)/lib \
     -lssl -lcrypto
_hashlib _hashopenssl.c \
     -I$(OPENSSL)/include -L$(OPENSSL)/lib \
     -lcrypto
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/openssl/lib
./configure --enable-optimizations --with-openssl=/opt/openssl
make altinstall
/usr/local/bin/pip3.10 install --proxy "http://proxy:8080" paramiko

python3 spkg: ModuleNotFoundError: No module named ‘binascii’
build/make/Makefile.in: Uninstall setuptools before reinstalling python3

26 января, 2022

Posted In: CentOS, Python

Метки: , , ,

Изменим строчку в sshd_config:

Subsystem sftp /usr/libexec/openssh/sftp-server

на

Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f AUTH

Добавим в /etc/rsyslog.conf:

auth.* /var/log/sftp.log

Настроим ротацию /etc/logrotate.d/sftp

/var/log/sftp.log {
weekly
missingok
rotate 30
compress
delaycompress
postrotate
invoke-rc.d rsyslog reload > /dev/null
endscript
}

Рестартим сервисы:

systemctl restart sshd.service rsyslog.service

25 октября, 2021

Posted In: CentOS, ftp, Linux

Метки: , , ,

Берем архив бекапа в формате tar. Если в формате tar.gz, то ганзипте.
Добавляем туда файлик настроек. Его можно взять у любой существующей виртуальной машины созданной в VEManager:

tar -rvf VM.tar etc/vzdump/vps.conf
Папки надо создать что бы файл лежал в нужной пути.
Далее восстанавливаем ВМ:
vzdump --restore VM.tar 600
Далее импортируем сервер в VEManager:
/usr/local/mgr5/sbin/mgrctl -m vemgr import.local user=2 elid=600 hostnode=12
Особенности:
Файл настроек должен быть с ВМ у которой тоже simfs.

1 июня, 2021

Posted In: CentOS, ISPSystem, Linux

Метки: , , , , , ,

Для тех у кого перестал работать пакетный менеджер yum, так как поддержка кончилась, и репозитории потерли. Для это его есть ресурс: vault.centos.org

Для работы потребуется изменить файлик с репо CentOS-Base.repo на:

[base]
name=CentOS-$releasever - Base
baseurl=https://vault.centos.org/6.10/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[updates]
name=CentOS-$releasever - Updates
baseurl=https://vault.centos.org/6.10/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS-$releasever - Extras
baseurl=https://vault.centos.org/6.10/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://vault.centos.org/6.10/centosplus/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[contrib]
name=CentOS-$releasever - Contrib
baseurl=https://vault.centos.org/6.10/contrib/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

18 декабря, 2020

Posted In: CentOS, Linux

Метки: , , , ,

Обязательно сначала новый, потом старый диск

sgdisk -R НОВЫЙ_ДИСК СТАРЫЙ_ДИСК

Не забывает сделать новый GUID для нового диска:

sgdisk -G /dev/sdb

14 мая, 2020

Posted In: CentOS, Linux, RAID

Метки: , ,

echo vm.swappiness=10 >> /etc/sysctl.d/99-sysctl.conf
sysctl -p

vm.vfs_cache_pressure=50

30 марта, 2020

Posted In: CentOS, Debian, Linux, swap

Метки: , , , ,

cat << EOF > /etc/modprobe.d/kvm_intel.conf
options kvm-intel nested=1
options kvm-intel enable_shadow_vmcs=1
options kvm-intel enable_apicv=1
options kvm-intel ept=1
EOF
cat << EOF > /etc/sysctl.d/98-rp-filter.conf
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
EOF

22 февраля, 2020

Posted In: CentOS, kvm, Linux, qemu

Метки: , , , , ,

yum install psmisc

2 апреля, 2019

Posted In: CentOS, Linux

Следующая страница →