Современные ФС #1: btrfs — основы

btrfs — файловая система с CoW (Copy-on-Write), встроена в ядро с 2.6.29: mkfs.btrfs /dev/sdb # создать ФС mount /dev/sdb /mnt/data # смонтировать btrfs filesystem show /mnt/data # UUID, размер, устройства btrfs filesystem df /mnt/data # занятое/свободное по типу данных Прозрачное сжатие — включается при монтировании: # /etc/fstab UUID=... /mnt/data btrfs compress=zstd:3,noatime 0 0 # или на лету (только новые записи) mount -o remount,compress=zstd /mnt/data Уровни zstd от 1 (быстро) до 15 (максимум). :3 — хороший баланс скорость/степень. ...

17 июня 2026 г. · llexa

at и batch: отложенный запуск команд

at запускает команду один раз в нужное время: echo "/usr/bin/backup.sh > /tmp/bak.log 2>&1" | at now + 1 hour echo "reboot" | at 03:00 tomorrow echo "cleanup.sh" | at 14:30 Jun 20 atq # посмотреть очередь atrm 3 # удалить задание №3 batch — то же, но задача стартует только когда load average опускается ниже 0.8: echo "heavy-job.sh > /tmp/out.log 2>&1" | batch Вывод заданий идёт в почту локального пользователя — либо редиректь вывод прямо в команде. #linux #bash #sysadmin

16 июня 2026 г. · llexa

bash: массивы — индексированные и ассоциативные

Индексированный массив: arr=("alpha" "beta" "gamma") echo "${arr[0]}" # alpha echo "${arr[@]}" # все элементы echo "${#arr[@]}" # количество: 3 arr+=("delta") # добавить for item in "${arr[@]}"; do echo "$item"; done Ассоциативный массив (словарь): declare -A hosts hosts[web]="192.168.1.10" hosts[db]="192.168.1.20" echo "${hosts[web]}" for key in "${!hosts[@]}"; do echo "$key → ${hosts[$key]}" done "${arr[@]}" — всегда в кавычках, иначе пробелы в значениях сломают цикл. #bash #linux #sysadmin

16 июня 2026 г. · llexa

sqltoerdiagram.com: ER-диаграмма из SQL DDL

Телефонный справочник: 4 таблицы, 3 связи. CREATE TABLE contacts ( id INT PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE ); CREATE TABLE phone_numbers ( id INT PRIMARY KEY, contact_id INT NOT NULL REFERENCES contacts(id), type VARCHAR(20) NOT NULL, number VARCHAR(20) NOT NULL ); CREATE TABLE groups (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL); CREATE TABLE contact_groups ( contact_id INT NOT NULL REFERENCES contacts(id), group_id INT NOT NULL REFERENCES groups(id), PRIMARY KEY (contact_id, group_id) ); Вставляешь на sqltoerdiagram.com — инструмент разбирает REFERENCES и рисует связи. contact_groups встаёт между contacts и groups как M:N автоматически. Экспорт PNG/SVG. ...

16 июня 2026 г. · llexa

sysctl: параметры ядра без перезагрузки

sysctl управляет параметрами ядра через /proc/sys/ на лету: # посмотреть значение sysctl vm.swappiness # изменить — действует до перезагрузки sysctl -w vm.swappiness=10 sysctl -w net.ipv4.ip_forward=1 sysctl -w net.core.somaxconn=4096 # все параметры sysctl -a | grep swappiness Чтобы сохранить навсегда — добавить в /etc/sysctl.conf или файл в /etc/sysctl.d/: echo "vm.swappiness=10" >> /etc/sysctl.d/99-custom.conf sysctl -p /etc/sysctl.d/99-custom.conf Типичные настройки: net.ipv4.ip_forward=1 для роутинга, vm.swappiness=10 на серверах. #linux #sysadmin #network

16 июня 2026 г. · llexa

nftables: замена iptables

nftables — современная замена iptables: одна утилита nft вместо iptables/ip6tables/arptables, атомарная загрузка правил, читаемый синтаксис. # просмотр всех правил nft list ruleset # создать таблицу и базовый stateful файрвол nft add table inet filter nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; } nft add rule inet filter input ct state established,related accept nft add rule inet filter input iif lo accept nft add rule inet filter input tcp dport { 22, 80, 443 } accept # сохранить и загрузить при старте nft list ruleset > /etc/nftables.conf systemctl enable nftables Миграция с iptables — утилита iptables-restore-translate: ...

15 июня 2026 г. · llexa

Proxmox #4: резервное копирование через PBS

Proxmox Backup Server (PBS) хранит бэкапы VM и LXC с дедупликацией по блокам. Подключается как хранилище: Datacenter → Storage → Add → Proxmox Backup Server. # бэкап VM вручную (VMID 101) vzdump 101 --storage pbs --mode snapshot # список резервных копий в хранилище proxmox-backup-client list --repository user@pbs-host:datastore # верификация целостности proxmox-backup-client verify --repository user@pbs-host:datastore # удаление старых копий по политике proxmox-backup-client prune --keep-last 3 --keep-weekly 2 \ --repository user@pbs-host:datastore Расписание — Datacenter → Backup → Add. Там же Prune Policy: keep-last, keep-daily, keep-weekly, keep-monthly. После бэкапа PBS показывает степень дедупликации — обычно 3–10x для однотипных VM. ...

15 июня 2026 г. · llexa

Vim с нуля #5: splits, tabs и макросы

Splits — вертикальное и горизонтальное разбиение окна: :vs fichier.py " вертикальный сплит :sp log/app.log " горизонтальный сплит Ctrl+w h/j/k/l " переход между панелями Ctrl+w = " выровнять размеры Ctrl+w q " закрыть панель Tabs — несколько раскладок одновременно: :tabnew файл.py " новая вкладка gt / gT " следующая / предыдущая :tabc " закрыть вкладку Макросы — запись и воспроизведение последовательности команд: qa " начать запись в регистр a dd " (любые команды — удалить строку, например) q " остановить запись @a " воспроизвести 5@a " повторить 5 раз @@ " повторить последний макрос Макросы хранятся в регистрах — "ap вставит содержимое макроса как текст, если нужно его отредактировать. ...

15 июня 2026 г. · llexa

Будь добрее #3: Инклюзия, которая работает

Детям не важны диагнозы — они видят человека, дружбу и искренность. #будьдобрее

14 июня 2026 г. · llexa

Фразы, от которых у sysadmin'а дёргается глаз

Некоторые слова бьют точнее, чем PagerDuty в 03:47. «Я просто ничего не трогал» — трогал. Всё трогал. «Можешь быстренько глянуть?» — следующие 4 часа уже не твои. «Деплоим в пятницу вечером» — ты знаешь, как это заканчивается. «А бэкапы-то есть?» — спрашивают уже после. «Попробуй перезагрузи прод» — это не запрос. Это приговор. #linux #sysadmin #юмор #devops

14 июня 2026 г. · llexa