Proxmox #6: установка и swap, который забыли создать

Установщик Proxmox VE — обычный Debian-инсталлятор. При выборе ZFS как корневой ФС (raid0/raid1/raidz) он не создаёт swap — итог: под нагрузкой хост не деградирует плавно, а падает в OOM killer. Проверить после установки: free -h swapon --show # пусто — swap отсутствует Вариант 1 — swap-файл: fallocate -l 8G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab Вариант 2 — zvol, без сжатия (иначе deadlock под памятью): ...

16 июля 2026 г. · llexa

taskset и cpulimit: приручаем прожорливый процесс

nice/renice меняют приоритет в очереди планировщика, но не ограничивают, сколько ядер или % CPU займёт процесс. Для этого — taskset и cpulimit. taskset привязывает процесс к конкретным ядрам (CPU affinity) — чтобы шумный batch-job не мешал latency-чувствительному сервису: taskset -c 2,3 ./backup-script.sh # сразу на ядрах 2 и 3 taskset -cp 4,5 12345 # перепривязать уже запущенный PID cpulimit ограничивает процент CPU у уже работающего процесса, периодически ставя его на паузу — без изменения priority: ...

16 июля 2026 г. · llexa

DBA на минималках #4: EXPLAIN и EXPLAIN ANALYZE

EXPLAIN показывает план планировщика (Seq Scan, Index Scan, Nested Loop, Hash Join) без выполнения запроса. EXPLAIN ANALYZE запускает его по-настоящему, добавляя время и число строк на узел. EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 42; ⚠️ На INSERT/UPDATE/DELETE EXPLAIN ANALYZE реально пишет в таблицу — оборачивай в BEGIN; ... ROLLBACK;. Буферы (кэш vs диск) — первое, что смотрят при разборе медленного запроса: EXPLAIN (ANALYZE, BUFFERS) .... Главное в плане: cost=startup..total — оценка планировщика, не секунды; rows vs actual rows — расхождение значит устаревшую статистику (ANALYZE table_name); Seq Scan вместо Index Scan — повод проверить индекс. ...

15 июля 2026 г. · llexa

mdadm: программный RAID в Linux

mdadm — стандартный инструмент для программного RAID в Linux: массив собирается на уровне ядра (модуль md), без аппаратного контроллера. Дешевле и переносимее, чем железный RAID, но нагрузку на CPU при пересборке никто не прячет. Собрать зеркало из двух дисков: mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 Следить за состоянием и синхронизацией: cat /proc/mdstat mdadm --detail /dev/md0 Заменить отказавший диск: пометить как сбойный, убрать, добавить новый — ресинхронизация пойдёт автоматически: mdadm --fail /dev/md0 /dev/sdb1 mdadm --remove /dev/md0 /dev/sdb1 mdadm --add /dev/md0 /dev/sdd1 Сохранить конфигурацию массива, чтобы он собирался при загрузке: ...

15 июля 2026 г. · llexa

Современные ФС #5: ZFS — снапшоты и клоны

Снапшот в ZFS — не копия, а заморозка блоков через copy-on-write: старые блоки не перезаписываются, пока на них ссылается снапшот. Создаётся за миллисекунды, места почти не занимает. zfs snapshot tank/data@before-upgrade zfs list -t snapshot zfs rollback tank/data@before-upgrade Если полный откат не нужен — сделать из снапшота записываемый клон, который делит блоки с оригиналом, пока не разойдётся с ним: zfs clone tank/data@before-upgrade tank/data-test Перенести снапшот на другой пул/хост — целиком или только дельту с прошлой передачи (-i): ...

15 июля 2026 г. · llexa

Vim с нуля #6: сессии, метки и регистры

Открывать заново десяток файлов и панелей после каждого перезапуска vim — трата времени. Сессии, метки и регистры решают это по-разному: одна команда сохраняет весь layout, другая мгновенно прыгает к нужной строке, третья хранит текст между операциями копирования. :mksession! ~/.vim/session.vim — сохранить открытые окна, вкладки и позицию курсора; vim -S ~/.vim/session.vim — восстановить один в один ma — поставить метку a на текущей строке, `a — прыгнуть к ней (метки A-Z работают между файлами) "ayy — скопировать строку в именованный регистр a, "ap — вставить из него, не перезаписывая обычный буфер :reg — посмотреть содержимое всех регистров сразу #vim #linux

13 июля 2026 г. · llexa

Две кнопки sysadmin'а

Знакомый выбор в пятницу вечером. #linux #sysadmin #юмор

12 июля 2026 г. · llexa

Новые версии: 3 июля — 10 июля

Новые релизы за неделю — только то, что важно для сервера. prometheus v3.5.5 — [SECURITY] UI: обновили sanitize-html до v2.17.5, закрыли CVE-2026-53606. keycloak 26.7.0 — новые возможности для пользователей и администраторов Keycloak. syncthing v2.1.2 — поддержка HTTP/HTTPS-прокси с CONNECT, в дополнение к существующему SOCKS. patroni v4.1.4 — плановый релиз с фиксами. alertmanager v0.33.1 — фикс отсутствующего поля notification_reason в webhook-документации. immich v3.0.1 — фикс бага с альбомами, не отображавшимися в мобильном приложении. skim v5.0.0 — крупный релиз после v4: добавлена поддержка Windows. #linux #sysadmin #releases

10 июля 2026 г. · llexa

parted и gdisk: разметка GPT-дисков

MBR ограничен 2 ТБ на диск и 4 основными разделами — на современном железе стандарт давно GPT. parted работает и неинтерактивно (одной командой), и в консольном меню; gdisk — интерактивный аналог fdisk, но именно для GPT. Разметка через parted одной командой: parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary ext4 0% 100% parted -l Через gdisk — интерактивно: n создать раздел, p показать таблицу, w записать изменения: gdisk /dev/sdb Перед разметкой продакшен-диска — бэкап таблицы разделов, чтобы откатиться при ошибке: ...

8 июля 2026 г. · llexa

PostgreSQL: pg_stat_statements — статистика по запросам

pg_stat_statements — расширение, которое собирает статистику по каждому нормализованному запросу на сервере: сколько раз вызван, суммарное и среднее время выполнения, сколько строк вернул. Без него узкие места ищутся вслепую по логам. Включить: добавить в postgresql.conf и перезапустить кластер, затем создать расширение: shared_preload_libraries = 'pg_stat_statements' CREATE EXTENSION pg_stat_statements; Топ-10 самых тяжёлых запросов по суммарному времени: SELECT query, calls, total_exec_time, mean_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10; Сбросить накопленную статистику: SELECT pg_stat_statements_reset();. Для учёта времени на дисковый I/O отдельно от CPU включи track_io_timing = on. ...

8 июля 2026 г. · llexa