Admin Guides | Сисадмин
11.4K subscribers
1.25K photos
20 videos
34 files
559 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Swap-файл vs swap-раздел: как влияет на SSD и работу в системах с малым ОЗУ

На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.

Но что выбрать: swap-файл или swap-раздел? И главное — как сделать, чтобы не угробить SSD и не словить тормоза?


Что выбрать — swap-файл или swap-раздел?

Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
менять его размер сложно (особенно без LVM);
требует переформатирования или изменения разметки;
неудобен в облаках и на VPS.

Swap-файл — более гибкий и удобный. Особенно если:
вы работаете на облаке с единственным диском;
у вас ограниченное место;
нужно быстро изменить размер или выключить swap.

На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.

Как правильно создать swap-файл

Не используйте dd — он может создать фрагментированный файл:

# Плохо:
dd if=/dev/zero of=/swapfile bs=1M count=1024


Вместо этого:

# Хорошо:
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile


В fstab:

/swapfile none swap sw 0 0


Дополнительные улучшения: zswap и zram

Чтобы продлить срок службы SSD и ускорить работу на слабых системах:

Zswap — сжатая подкачка в RAM. Включается одной командой:

echo 1 > /sys/module/zswap/parameters/enabled


Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:

modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 512M > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0


Настройка поведения подкачки

Чтобы система не бросалась в swap при любой нагрузке:

sysctl vm.swappiness=10


10–20 — хороший баланс: сначала используется RAM, и только потом swap.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥2
🤔13👍2🤨2👎1😁1
Почему apt не чистит /var/cache/apt — и как это может убить ваш контейнер

На голом Ubuntu-бейзовом контейнере вы устанавливаете пару пакетов, а потом обнаруживаете, что образ раздулся на сотни мегабайт.

Причина почти всегда одна — автоматический кэш deb-пакетов, который apt сохраняет в /var/cache/apt/archives, но не торопится удалять.

Что происходит

При установке пакета:

apt install nginx


apt скачивает .deb в /var/cache/apt/archives, а потом уже ставит. Но не удаляет их, если вы явно не вызвали:

apt clean


или

apt autoclean


Во многих минималистичных контейнерных сборках вы этого не делаете — и копите десятки мегабайт мусора при каждом apt install.

Почему это критично в контейнерах
Образы раздуваются — и занимают в 2–3 раза больше места, чем нужно.
Файловая система в overlayfs не освобождается даже если удалить файл вручную позже. Он всё равно останется в нижнем слое.
Контейнеры могут падать из-за переполнения ограниченного volume или rootfs (особенно в CI/CD).

Как это чинить правильно

Перед завершением сборки — чистите кэш:

apt-get clean
rm -rf /var/lib/apt/lists/*


или в Dockerfile:

RUN apt update && apt install -y \
curl \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*


Трюк с overlayfs

Если вы уже создали контейнер, в котором /var/cache/apt раздулся, а чистка не помогает — потому что это уже лежит в нижнем readonly-слое — можно:
1️⃣Использовать docker export / import — сохранит только активный слой.
2️⃣ Пересобрать образ с clean’ом до commit.
3️⃣ Смонтировать внешний tmpfs в /var/cache/apt в рантайме:

mount -t tmpfs -o size=100m tmpfs /var/cache/apt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172🔥2
Тратите много времени на повторяющиеся SQL-запросы, выполняя рутинные задачи вручную? 
На бесплатном вебинаре, который пройдет 22 апреля в 20:00, мы решим эту проблему и научим вас создавать и использовать хранимые процедуры для автоматизации процессов в SQL! https://otus.pw/sYDb/

Представьте, что вы можете автоматизировать эти задачи с помощью хранимых процедур в MS SQL Server и PostgreSQL, увеличив свою эфффективность. Больше не придется тратить на это лишние силы.

Записывайтесь на урок, получайте практические навыки, а также скидку на большое обучение «SQL для разработчиков и аналитиков»: https://otus.pw/sYDb/

erid: 2W5zFGp9d2g
👍1
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое systemd-nspawn и как он используется?

Ответ: systemd-nspawn — это легковесный инструмент контейнеризации, встроенный в systemd. Он позволяет запускать изолированные окружения, похожие на контейнеры, используя chroot и namespaces.

Ключевые особенности:
— Изоляция через PID, mount, user и network namespaces.
— Интеграция с systemd: контейнер можно управлять как обычным сервисом.
— Поддержка journald и машинного журнала логов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
MTU + TSO/GSO/UDP: когда jumbo frame ломает overlay-сеть

VxLAN, GENEVE и прочие overlay-технологии давно стали стандартом — но часто ломаются на ровном месте.

Один из таких кейсов — «всё работает, кроме какого-то странного трафика, который висит/рвётся/отваливается без объяснения». Виновник — неправильное сочетание MTU, jumbo-фреймов и offload’ов.


Что происходит

При использовании VxLAN поверх обычной сети каждый пакет получает дополнительный заголовок (VxLAN + UDP + IP), что увеличивает размер.

Если интерфейсы или туннельная прослойка не умеют в fragment/reassembly или MTU меньше ожидаемого, пакеты просто начинают теряться.

Особенно часто это бьёт по TCP SYN-ACK и UDP VoIP/QUIC.

Где это проявляется
• SSH зависает после ввода пароля
• веб-приложения внезапно «грузятся вечно»
• мониторинг теряет метрики
• nginx падает в 502 на старте TLS
• kubelet не подключается к apiserver через туннель

Как диагностировать
1️⃣Проверить MTU на всех интерфейсах в цепочке:

ip link show dev eth0
ip link show dev vxlan0


2️⃣ Проверить наличие offload’ов:

ethtool -k eth0 | grep -E '(tso|gso|gro)'


3️⃣ Поймать разрыв через tcpdump — будут видны обрезанные пакеты или ICMP fragmentation needed (не всегда!):

tcpdump -i vxlan0 -n -s 0 -vvv


4️⃣ Визуально ловить баги через ping -M do:

ping -s 8972 -M do <ip>


Как лечить
Убедитесь, что внутренний MTU на overlay-интерфейсах (vxlan0, flannel.1 и т.п.) занижен хотя бы на 50 байт.
Отключите GSO/TSO, если видите нестабильность:

ethtool -K eth0 gso off tso off


Используйте sysctl для отключения Path MTU discovery в VxLAN:

sysctl -w net.ipv4.ip_no_pmtu_disc=1


Проверяйте наличие проблемных маршрутов:

ip route get <destination>
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
Yandex Cloud выкатил сервис по аренде выделенных серверов в открытый доступ, который подходит как для хостинга сайтов или настройки тестовых сред, так и в качестве дополнительных мощностей для развития текущих сервисов.

Сервис даёт возможность выбрать сервер готовой конфигурации, установить на него подходящую виртуализации, ОС и ПО, а также разграничить права доступа. И всё это без влияния «шумных» соседей, ведь все мощности доступны только одному клиенту.

Управлять можно через SSH, консоль KVM или по API. А за железо отвечают специалисты Yandex Cloud — меняют, обновляют, следят за работоспособностью. Всё, чтобы вы могли думать о развитии сервисов, а не железе.

Архитекторы подготовили подробные инструкции по настройке прав доступа, VRRP, сетевой связности, а также по подключению резервного копирования тут.
👍8🤔2
😁42👌32
Виртуальные машины и контейнеры в одном окружении? Да, это реально! 

На вебинаре в среду расскажем и покажем, как виртуализация в экосистеме Deckhouse делает возможным запуск виртуальных машин рядом с контейнерами, обеспечивая единое, управляемое Kubernetes-окружение для построения современного частного облака. 

🗓 Дата: 23 апреля, среда
Время: 12:00 (МСК)
📌 Место: Онлайн, нужна регистрация

Обсудим:
🔹 какие возможности по управлению виртуальными машинами есть в Deckhouse;
🔹 для чего нужна совместная работа виртуальных машин и контейнеров;
🔹 какие сценарии виртуализации есть в экосистеме Deckhouse;
🔹 и главное — покажем тестовый стенд и приложение.

✍️ Участники вебинара смогут оставить заявку на тестирование Deckhouse Virtualization Platform или на запуск демоприложения в Deckhouse Kubernetes Platform.

Зарегистрироваться
👍1
TCP FIN_WAIT2 как зомби: кто на самом деле виноват

Когда сервер задыхается от тысяч FIN_WAIT2, первая реакция — «приложение не закрывает сокет». Но в реальности всё сложнее.

Это состояние — часть TCP state machine, в которой соединение уже завершено с одной стороны, но другая не закрыла свой конец. И залипнуть в нем можно надолго.


Что такое FIN_WAIT2?

После того как приложение вызывает close() на сокете, TCP-стек отправляет FIN и попадает в FIN_WAIT1. Как только получает ACK, соединение переходит в FIN_WAIT2. Ожидается, что вторая сторона тоже закроет соединение и отправит свой FIN.

Но если этого не происходит — соединение залипает. ОС ждёт. Иногда — вечно.

Где зарыта проблема?

1️⃣Клиент не закрывает соединение
Часто виновник — клиентское приложение, которое “забывает” вызывать close(), особенно если сессия рвётся без ошибок.

2️⃣ Сервер не настраивает таймауты FIN_WAIT2
Linux по умолчанию может держать FIN_WAIT2 бесконечно, если сокет уже передан в userspace.
Проверить:

sysctl net.ipv4.tcp_fin_timeout


Но это работает только для сокетов, не переданных в userspace. Если accept() уже был вызван — ядро не может удалить соединение самостоятельно.

3️⃣ Не освобождается сокет в приложении
Даже если вы вызываете close(), соединение может оставаться активным, если сокет всё ещё держится в дескрипторах. Проверить можно так:

lsof -nP | grep TCP | grep FIN_WAIT2


Как диагностировать
• Посмотреть, кто держит соединения:

ss -o state fin-wait-2 '( sport = :443 )'


• Локализовать виновника через lsof и netstat -p
• Проверить tcp_fin_timeout, tcp_keepalive_time и поведение приложения

Как лечить
Явно закрывайте соединения на клиенте, особенно если используете keep-alive
Включите tcp_tw_reuse и tcp_tw_recycle с осторожностью (лучше нет)
На стороне сервера: оберните close() в таймер или настройте logic shutdown после inactivity
Для embedded/ограниченных систем: можно использовать iptables для отсечения FIN_WAIT2 через conntrack timeout

Вместо вывода

FIN_WAIT2 — это не баг, а следствие честной реализации TCP. Но в проде оно ведёт к исчерпанию ресурсов и зомби-соединениям. Решение — всегда баланс между корректным shutdown и агрессивным таймаутом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Заглядываем в конфиги и превращаем хаос в систему

💬 Шёпотом: курс «Ansible: Infrastructure as Code» стартует 28 апреля.

Подойдёт всем, кто хочет научиться:

🔹 работать с подходом IaC и автоматизировать рутину;
🔹 выполнять всякие сложные задачи типа блоковой замены, управления потоком выполнения и пр.;
🔹 настраивать Ansible под необходимые задачи;
🔹 писать свои модули;
🔹 решать сисадминские задачи;
🔹 встраивать Ansible в пайплайн Gitlab и много чего ещё.

Успевайте оформить обучение, пока действует ранняя цена 🤝

Программа курса и все подробности — по ссылке ⬅️
👍2
Лимиты systemd: что произойдёт, если запустить 20k сервисов одновременно

Запустить 20 000 systemd-юнитов — звучит безумно, но на самом деле это вполне достижимо на современной машине. Вопрос в другом: где начнёт всё сыпаться?

Мы сгенерировали 20k простых сервисов с шаблоном ExecStart=/bin/sleep infinity, и попытались запустить их разом через systemctl start test@{1..20000}.


На что упёрлись:

1️⃣PID limits:
Первое, что кончилось — лимит процессов. Даже при ulimit -u unlimited, ядро имеет предельный pid_max. Проверить можно:

cat /proc/sys/kernel/pid_max


2️⃣File descriptors:
Каждый сервис тянет за собой файловые дескрипторы: сокеты, логирование через journald, pipe’ы.
Мониторить:

lsof | wc -l  
cat /proc/sys/fs/file-nr


3️⃣Cgroups:
systemd создаёт по cgroup на каждый юнит. При большом количестве можно уткнуться в лимит вложенности или число control group’ов.
Проверка:

systemctl status test@19999
cat /proc/self/cgroup


4️⃣journal:
Если сервисы пишут в журнал, journald начинает лагать или просто отваливается. Особенно, если RateLimitInterval не сконфигурирован.
Проверить, сколько записей в секунду:

journalctl -o short-precise -f


5️⃣CPU scheduler:
Если юниты зависают или выходят с ошибкой, systemd тратит кучу ресурсов на перезапуск. И даже при Restart=no огромный пул сервисов может повлиять на responsiveness системы.

Как наблюдать:
systemd-analyze dump | grep 'Service State'
systemctl list-units | grep test@ | wc -l
top, iotop, pidstat, journalctl — всё идёт в бой.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3
📡 Kafka-подобный брокер, который умеет больше

Когда команда переходит на событийную архитектуру, приходит и Kafka. Но за ней — своя плата: поддержка transactional outbox, дубли, потеря сообщений, неудобная интеграция с базой. В Яндексе не стали с этим мириться и сделали YDB Topics — брокер, который сам умеет чуть больше.

Он совместим с Kafka-протоколом, но при этом глубоко встроен в YDB. Это значит: ACID-транзакции с одновременным участием топиков и таблиц из коробки и реальная отказоустойчивость без хаков. Плюс корпоративные фичи: квоты и роли.

На вебинаре 23 апреля в 12:00 покажут, как построить надёжную событийную систему на базе YDB Topics и при этом не усложнять жизнь себе и коллегам.
🥴2🔥1
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Как работает Linux Security Module (LSM) и зачем он нужен?

Ответ: LSM — это подсистема ядра Linux, обеспечивающая инфраструктуру для реализации различных политик безопасности. Она предоставляет интерфейсы для внедрения ограничений на уровне ядра, не меняя сам код ядра напрямую.

LSM реализует механизм hook-based security, в котором в ключевые точки ядра встроены хуки. Эти хуки вызываются перед выполнением чувствительных операций (например, доступ к файлу, сетевой сокет или выполнение бинарника), и LSM-расширение решает — разрешить или запретить операцию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🔥1
Как найти самый медленный диск в RAID без iostat: только dd и strace

Когда RAID-массив уходит в degraded, и чтение с него начинает тормозить, первым делом хочется открыть iostat или dstat — но что делать, если этих утилит нет, или нужно быстро сориентироваться на минимальной системе?

RAID5 на mdadm, одно устройство помечено как degraded. Хотим понять, какой из оставшихся дисков тормозит, не прибегая к утилитам верхнего уровня.

1️⃣dd по /dev/mdX с отслеживанием времени

dd if=/dev/md0 of=/dev/null bs=4M status=progress


Смотрим, залипает ли на конкретных участках. Если чтение “пульсирует” — скорее всего, где-то один из дисков тормозит при чтении блоков.

2️⃣ strace на dd — трекинг задержек в syscalls

strace -T -e read dd if=/dev/md0 of=/dev/null bs=4M


Параметр -T покажет время, затраченное на каждый системный вызов read(). Если большинство идут быстро (<0.01s), а иногда появляются задержки в 0.2-0.5 секунды — именно в эти моменты диск фризит.

3️⃣ mdadm + cat /sys/block на live-данных
Можно сверить статистику по mdstat, а потом пойти глубже:

cat /proc/mdstat


Затем для каждого устройства в массиве:

for d in sd{a,b,c}; do echo "$d: $(cat /sys/block/$d/stat)"; done


Здесь можно отследить рост времени обработки I/O по полям в /sys/block/*/stat. Если у одного устройства счётчики существенно выше — это он и есть.

smartctl на подозреваемом диске
После того, как нашли “виновника”, имеет смысл проверить его S.M.A.R.T.:

smartctl -a /dev/sdX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥41
Киберугрозы не ждут. А вы?
Защити себя или свою команду от проверок и взломов — обучись защите КИИ по стандартам ФСТЭК.

 До 31 мая действует спецпредложение🔥 -50% на второй курс!

 Выбирай один, а второй — за полцены:
 1️⃣ Техническая защита информации → 29 950 ₽
 2️⃣ Безопасность персональных данных → 40 000 ₽

 Записал сотрудника на курс по КИИ?
 → Получи -50% на “Защиту объектов КИИ” (всего 32 000 ₽)
👨‍🎓 Выпускникам Softline — скидка 40% на «Безопасность КИИ»
 (149 000 → 89 400 ₽)

Почему выбирают нас:
  Преподаватели из ФинЦЕРТа и Банка России
  Программы одобрены ФСТЭК
  Вебинары в прямом эфире
  Рассрочка 0%
До 31 мая — оставь заявку и зафиксируй скидку

 👉 Оставить заявку 
👍2😁21
😁31🔥3🤣21🥱1
Поддержка ядра Linux 6.13 завершена

Серия 6.13 официально получила статус EOL (End of Life). Последнее обновление — 6.13.12 от 20 апреля 2025.

Дальнейших патчей, включая security-фиксы, больше не будет.


Что делать:
— Переходите на Linux 6.14 (актуальная стабильная версия).
— Или на Linux 6.12 LTS, если нужен долгосрочный цикл поддержки (до декабря 2026).

Оставаться на EOL-ядре — значит работать без критических патчей. Особенно опасно для серверов и продакшн-сред.

LTS-ядра, которые ещё живы:
• 6.12 (до 12.2026) — Ubuntu 24.04, Oracle UEK8
• 6.6 (до 12.2026)
• 6.1 (до 12.2026) — Debian 12, OpenWRT
• 5.15 (до 10.2026) — Ubuntu 22.04, OpenWRT 23.05
• 5.10 (до 12.2026) — Debian 11, Android 12
• 5.4 (до 12.2025) — Ubuntu 20.04

Если вы используете 6.13 — самое время накатить миграционный план.
👍16
Автоматизация процессов в проекте: пополните свою базу знаний и расширьте стек со скидкой до 37%

👍🏻Обучающие материалы, которые помогут вам быстро освоить CI/CD, IAC и ИБ, повысить продуктивность и оптимизировать процессы:

- Gitlab CI/CD
- CI/CD c Jenkins
- Kubernetes: мониторинг и логирование
- Terraform автоматизация
- Продвинутый PostgreSQL
- Keycloak безопасность и аутентификация
- Основы информационной безопасности
и многие другие

Все программы актуальны в 2025 году, курсы ведут практикующие спикеры.

👉Смотрите подборку и выбирайте подходящий курс со скидкой до 15000р 👉 Смотреть подборку
1👍1