Авторская информация о системном администрировании.
# apt install hwinfo
# hwinfo --disk
На выходе максимально подробная информация о диске - вендор, модель, серийный номер, метки диска в системе и многое другое. Программа показывает принадлежность диска к рейд массиву (если он поддерживает, например adaptec), что бывает удобно.
Smartmontools
# apt install smartmontools
# smartctl -i /dev/sda
Показывает основную информацию о диске, в том числе SMART.
Информация о дисках (разделы)
Общая информация о разделах и их размерах.
# lsblk -a
Более подробная информация о структуре диска, в том числе используемых секторах каждого раздела.
# fdisk -l
Создать или удалить раздел.
# cfdisk /dev/sdb
Обновить информацию об изменённых разделах.
# partprobe -s
Просмотр меток разделов.
# blkid
Cвободное место на диске
Общая информация о всех подмонтированных дисках.
# df -h
10 самых больших папок в текущем каталоге:
# du . --max-depth=1 -ah | sort -rh | head -10
Подключение сетевого диска
По smb.
# apt install cifs-utils
# mount -t cifs //10.1.4.4/backup /mnt/backup \
-o user=admin,password=passadmin
- 0.1.4.4/backup - сетевая шара
- /mnt/backup - локальная директория, куда монтируем сетевой диск
- admin - пользователь с доступом к сетевому диску
- passadmin - пароль
По NFS.
# apt install nfs-common
# mount -t nfs 10.1.4.4:/backup /mnt/backup
Перед подключением диска можете проверить, а если вам вообще доступ к сетевому диску на сервере:
# showmount --exports 10.1.4.4
Создание файловой системы ext4, xfs
XFS
# apt install xfsprogs
# mkfs.xfs /dev/sdb1
EXT4
# mkfs -t ext4 /dev/sdb1
Работа с LVM
Инициализация дисков для работы в LVM:
# pvcreate /dev/sdb /dev/sdc
Создание группы томов:
# vgcreate vgbackup /dev/sdb /dev/sdc
Создание раздела, занимающего 100% размера группы томов:
# lvcreate -l100%FREE vgbackup -n lv_full
Создание файловой системы:
# mkfs -t ext4 /dev/vgbackup/lv_full
Монтирование:
# mount /dev/vgbackup/lv_full /mnt/backup
Удаление раздела:
# umount /mnt/backup
# lvremove /dev/vgbackup/lv_full
Список физических томов:
# vgscan
Информация о Физическая томах:
# pvscan
# pvdisplay
Логическая информация о Физических томах:
# vgdisplay
Список логических разделов:
# lvscan
# lvs
Показать информацию о логических разделах:
# lvdisplay
Протестировать скорость диска
Тест записи.
# sync; dd if=/dev/zero of=tempfile bs=1M count=12000; sync
Тест чтения.
# apt install hdparm
# hdparm -t /dev/vda1
Проверить нагрузку на диск
# apt install sysstat
# iostat -xk -t 2
или
# apt install dstat
# dstat --top-bio
# dstat --top-io
# dstat -tldnpms 10
Нагрузка процессов или конкретного процесса:
# pidstat -d 1
# pidstat -p `pgrep mysqld` -d 1
#bash #terminalsize = 100M
Обычно люди ставят его и ожидают, что теперь логи будут автоматически ротироваться при достижении ими размера в 100 мегабайт. Ага, сейчас. Ничего подобного не произойдёт. По умолчанию logrotate запускается раз в сутки, поэтому он при всём желании не сможет следить за размером файла и ротировать его чаще, чем раз в сутки. Обычно за его запуск отвечает скрипт в директории /etc/cron.daily/logrotate.
Для того, чтобы logrotate мог проверять размер лог файла хотя бы раз в час, скрипт запуска надо перенести в директорию /etc/cron.hourly. А для более частой проверки, добавить его напрямую в cron с нужным интервалом запуска. Например, раз в 5 минут.
Допустим вы всё это сделали, но логи всё равно не будут ротироваться при достижении заданного размера. Понять, в чем же теперь проблема, не так просто. При запуске logrotate вы не увидите никаких ошибок. Он просто ничего не будет делать. Понять, в чём проблема, можно только при запуске в режиме отладки. Там вы увидите ошибку, если в этот день ротация уже была хотя бы раз.
destination /var/log/nginx/access.log.20220426.gz already exists, skipping rotation
Смысл тут в том, что logrotate сегодня уже произвел ротацию и создал архив лога с определенным именем и второй раз такой же файл он сделать не может. А маска имени файла при создании настроена в формате %Y%m%d. За эту маску отвечает параметр в /etc/logrotate.conf:
dateext
Самый простой вариант - это просто закомментировать этот параметр, тогда все архивы логов будут иметь следующую маску в файлах:
access.log.1.gz
access.log.2.gz
access.log.3.gz
Если же вам хочется сохранить исходный формат лога для всех файлов, а для тех, что ротируются по размеру, настроить другую маску имени, используйте дополнительный параметр:
dateformat -%Y-%m-%d_%H-%s
Формат имени архивного лога будет access.log.2022-04-26_15-1566819154.gz. Имена больше не будут дублироваться и logrotate сможет корректно запускать ротацию при достижении указанного размера файла.
Таким образом, чтобы настроить ротацию лог файла по достижении определенного размера, вам нужно:
1️⃣ Запускать через cron logrotate с достаточно высокой периодичностью, например раз в час или чаще.
2️⃣ Настроить маску файла для архива лога, чтобы она была уникальной в каждый момент запуска logrotate.
#logrotate #nginx #webserver