Это не линукс боится вирусов, а вирусы боятся линукса
LinuxCamp | #memes
Скачал вирус для Linux. Распаковал. Запустил от root - не сработало.
Оказалось, что вместо /usr/local/bin вирус распаковался в /usr/bin, куда у malware нет прав на запись, поэтому вирус не смог создать файл процесса.
Нашел пропатченный configure и makе - не хватало библиотеки, которой в Ubuntu нет. Собрал вручную. Запустился и упал с core dump.
Разобрал логи - вирус предполагал, что работает на ext4, и обращался к API шифрования диска. Под btrfs этот API уже давно депрекейтнут и ядро просто перевело раздел в read-only.
Открыл исходники, нашёл Bitcoin-кошелёк и скинул туда $5 из жалости.
LinuxCamp | #memes
😁133❤8😎4👍3🤗3💊2❤🔥1👏1🤔1
EXT4 vs XFS vs Btrfs
Ext4: стабильная классика
Работает предсказуемо, стоит по умолчанию почти везде. Но нет CoW (Copy-on-Write), снапшотов, сжатия, дедупликации и менеджера томов. На больших дисках тратит много места на служебные структуры.
Проверка раздела:
Хорошо подходит если нужен простой, надёжный вариант без излишков - рабочие станции, обычные сервера, любые дефолтные сценарии.
XFS: скорость и параллелизм
Максимальная производительность на больших файлах и высокой параллельности. Не умеет уменьшать размер раздела и не имеет современного функционала вроде снапшотов или сжатия.
Инфа о разделе:
Подойдет, когда важны большие объёмы и скорость - базы данных, file storage, сервисы с тяжёлыми нагрузками.
Btrfs: современный функционал
Система нового поколения: CoW, снапшоты, субтомы, встроенный RAID, сжатие, дедупликация, контрольные суммы. Гибкая и функциональная, но более требовательная к настройкам и дисциплине работы. Нужно быть аккуратней с данными, потому что есть мнение, что она все еще нестабильна.
Статистика по разделу:
Лучше использовать, если нужны снапшоты, откаты, экономия места, встроенный RAID и контроль целостности - dev-сервера, домашние машины, контейнерные среды, CI/CD.
LinuxCamp | #file_system
Ext4: стабильная классика
Работает предсказуемо, стоит по умолчанию почти везде. Но нет CoW (Copy-on-Write), снапшотов, сжатия, дедупликации и менеджера томов. На больших дисках тратит много места на служебные структуры.
Проверка раздела:
fsck.ext4 /dev/sdX
tune2fs -l /dev/sdX
Хорошо подходит если нужен простой, надёжный вариант без излишков - рабочие станции, обычные сервера, любые дефолтные сценарии.
XFS: скорость и параллелизм
Максимальная производительность на больших файлах и высокой параллельности. Не умеет уменьшать размер раздела и не имеет современного функционала вроде снапшотов или сжатия.
Инфа о разделе:
xfs_info /dev/sdX
Подойдет, когда важны большие объёмы и скорость - базы данных, file storage, сервисы с тяжёлыми нагрузками.
Btrfs: современный функционал
Система нового поколения: CoW, снапшоты, субтомы, встроенный RAID, сжатие, дедупликация, контрольные суммы. Гибкая и функциональная, но более требовательная к настройкам и дисциплине работы. Нужно быть аккуратней с данными, потому что есть мнение, что она все еще нестабильна.
Статистика по разделу:
btrfs filesystem df /mnt
Лучше использовать, если нужны снапшоты, откаты, экономия места, встроенный RAID и контроль целостности - dev-сервера, домашние машины, контейнерные среды, CI/CD.
LinuxCamp | #file_system
👍38❤12❤🔥4🔥1
Что такое Docker context
Docker context определяет, куда отправляются команды docker и docker compose. Контекст может быть локальным или удалённым. Удалённый контекст использует подключение по SSH.
Создание и переключение контекстов
Создать удалённый контекст:
Посмотреть доступные контексты:
Переключиться на нужный:
Где выполняются команды
После переключения любая команда:
выполняется на удалённом сервере, но файлы из текущей локальной директории не копируются на сервер.
Docker Engine на сервере получает только API-команды, но не получает ваши файлы.
Ограничения при работе с compose
Если в compose-файле есть:
удалённый Docker Engine не сможет найти эти пути, потому что это ваш локальный каталог, который не существует на сервере. Чтобы запуск через context работал, нужно использовать образы:
или заранее скопировать проект на сервер и запускать compose через SSH:
Важное про docker compose up --build
Команда, выполненная локально:
не передаёт ваш проект на сервер и не пересобирает его там. Для удалённого Docker Engine ваш каталог недоступен.
Вывод
Docker context только указывает, какой Docker Engine обслуживает ваши команды. Он не синхронизирует директории, не копирует файлы, не выбирает проект по имени папки на вашей машине.
LinuxCamp | #docker #devops
Docker context определяет, куда отправляются команды docker и docker compose. Контекст может быть локальным или удалённым. Удалённый контекст использует подключение по SSH.
Создание и переключение контекстов
Создать удалённый контекст:
docker context create prod --docker "host=ssh://user@server"
Посмотреть доступные контексты:
docker context ls
Переключиться на нужный:
docker context use prod
Где выполняются команды
После переключения любая команда:
docker ps
docker compose up -d
docker compose down
выполняется на удалённом сервере, но файлы из текущей локальной директории не копируются на сервер.
Docker Engine на сервере получает только API-команды, но не получает ваши файлы.
Ограничения при работе с compose
Если в compose-файле есть:
build: .
volumes:
- .:/app
удалённый Docker Engine не сможет найти эти пути, потому что это ваш локальный каталог, который не существует на сервере. Чтобы запуск через context работал, нужно использовать образы:
image: myapp:latest
или заранее скопировать проект на сервер и запускать compose через SSH:
ssh user@server
cd /project
docker compose up -d
Важное про docker compose up --build
Команда, выполненная локально:
docker compose up --build
не передаёт ваш проект на сервер и не пересобирает его там. Для удалённого Docker Engine ваш каталог недоступен.
Вывод
Docker context только указывает, какой Docker Engine обслуживает ваши команды. Он не синхронизирует директории, не копирует файлы, не выбирает проект по имени папки на вашей машине.
LinuxCamp | #docker #devops
👍14❤11🔥3❤🔥1
ZFS: файловая система, которая работает иначе
Что делает ZFS особенной
ZFS - это не просто файловая система, а целый стек: менеджер томов + RAID + CoW + проверки целостности + снапшоты. Она не похожа на ext4, XFS или Btrfs по внутреннему устройству.
Dnode вместо inode
В ZFS нет классических inode. ZFS использует dnode - динамический объект, который создаётся по мере необходимости. Количество файлов не ограничено заранее. Пока в пуле есть место, ZFS может создавать новые dnode.
Посмотреть пул:
Посмотреть ФС:
Copy-on-Write
ZFS не перезаписывает данные. Любое изменение → новая копия блока → обновление ссылок. Это защищает от порчи данных и позволяет делать быстрые снапшоты.
Снапшот:
Контрольные суммы
Каждый блок данных хранится с checksum. Если блок повреждён, ZFS его обнаружит и попробует восстановить (если есть зеркало/RAID).
Проверка целостности:
Сжатие и дедупликация
ZFS умеет прозрачное сжатие:
Дедупликация есть, но дорого стоит по памяти.
RAID в коробке
RAID - это способ объединить несколько дисков в одну систему так, чтобы увеличить скорость, защитить данные от выхода диска из строя или и то и другое сразу. В ZFS RAID встроен прямо в файловую систему. RAID1/5/6/10/50 доступны "из коробки". Не нужен LVM, mdadm, dm-crypt.
Вывод
ZFS выигрывает там, где важнее всего надёжность и контроль над данными. Уникальный набор инструментов, который точно пригодится, особенно в больших системах и там где важна надежность.
LinuxCamp | #file_system
Что делает ZFS особенной
ZFS - это не просто файловая система, а целый стек: менеджер томов + RAID + CoW + проверки целостности + снапшоты. Она не похожа на ext4, XFS или Btrfs по внутреннему устройству.
Dnode вместо inode
В ZFS нет классических inode. ZFS использует dnode - динамический объект, который создаётся по мере необходимости. Количество файлов не ограничено заранее. Пока в пуле есть место, ZFS может создавать новые dnode.
Посмотреть пул:
zpool status
Посмотреть ФС:
zfs list
Copy-on-Write
ZFS не перезаписывает данные. Любое изменение → новая копия блока → обновление ссылок. Это защищает от порчи данных и позволяет делать быстрые снапшоты.
Снапшот:
zfs snapshot tank/home@today
Контрольные суммы
Каждый блок данных хранится с checksum. Если блок повреждён, ZFS его обнаружит и попробует восстановить (если есть зеркало/RAID).
Проверка целостности:
zpool scrub tank
Сжатие и дедупликация
ZFS умеет прозрачное сжатие:
zfs set compression=zstd tank/data
Дедупликация есть, но дорого стоит по памяти.
RAID в коробке
RAID - это способ объединить несколько дисков в одну систему так, чтобы увеличить скорость, защитить данные от выхода диска из строя или и то и другое сразу. В ZFS RAID встроен прямо в файловую систему. RAID1/5/6/10/50 доступны "из коробки". Не нужен LVM, mdadm, dm-crypt.
Вывод
ZFS выигрывает там, где важнее всего надёжность и контроль над данными. Уникальный набор инструментов, который точно пригодится, особенно в больших системах и там где важна надежность.
LinuxCamp | #file_system
👍33❤7🔥4👏2😐1
Зачем вообще нужен swap
Swap - это место, куда ядро может выгружать редко используемые анонимные страницы, чтобы освободить ОЗУ под действительно нужные данные и файловый кеш. Проверить состояние памяти и подкачки можно так:
Что бывает без swap
Если swap отключен, анонимная память не имеет резервного хранилища. Ядро начинает выдавливать файловый кеш и чаще читать данные с диска. Система может подлагивать даже без формального OOM, а при резком росте нагрузки процессы быстрее попадают под OOM-killer. Можно отключить вот так (только для тестов!!!):
Как swap улучшает работу системы
При умеренной нагрузке swap позволяет убрать в подкачку старые, почти неиспользуемые данные процессов. Освободившаяся RAM идёт под кеш файловой системы, что уменьшает реальные обращения к диску. Балансом управляет параметр vm.swappiness:
ZRAM и Zswap
ZRAM создаёт в ОЗУ сжатое блочное устройство и используется как быстрый swap. Zswap сжимает страницы перед записью в обычный swap и уменьшает объём дисковых операций. Оба механизма полезны на системах с медленным диском или небольшим объёмом памяти:
Вывод
Можно улучшить поведение системы под нагрузкой задав небольшой, но ненулевой swap, настроив vm.swappiness под свои диски и сценарии, а при необходимости использовать ZRAM/Zswap для уменьшения дискового I/O.
LinuxCamp | #swap
Swap - это место, куда ядро может выгружать редко используемые анонимные страницы, чтобы освободить ОЗУ под действительно нужные данные и файловый кеш. Проверить состояние памяти и подкачки можно так:
free -h
cat /proc/swaps
Что бывает без swap
Если swap отключен, анонимная память не имеет резервного хранилища. Ядро начинает выдавливать файловый кеш и чаще читать данные с диска. Система может подлагивать даже без формального OOM, а при резком росте нагрузки процессы быстрее попадают под OOM-killer. Можно отключить вот так (только для тестов!!!):
sudo swapoff -a
free -h
Как swap улучшает работу системы
При умеренной нагрузке swap позволяет убрать в подкачку старые, почти неиспользуемые данные процессов. Освободившаяся RAM идёт под кеш файловой системы, что уменьшает реальные обращения к диску. Балансом управляет параметр vm.swappiness:
cat /proc/sys/vm/swappiness # посмотреть
sudo sysctl vm.swappiness=40 # временно изменить
ZRAM и Zswap
ZRAM создаёт в ОЗУ сжатое блочное устройство и используется как быстрый swap. Zswap сжимает страницы перед записью в обычный swap и уменьшает объём дисковых операций. Оба механизма полезны на системах с медленным диском или небольшим объёмом памяти:
# Пример включения ZRAM вручную
sudo modprobe zram
echo 2G | sudo tee /sys/block/zram0/disksize
sudo mkswap /dev/zram0 && sudo swapon /dev/zram0
Вывод
Можно улучшить поведение системы под нагрузкой задав небольшой, но ненулевой swap, настроив vm.swappiness под свои диски и сценарии, а при необходимости использовать ZRAM/Zswap для уменьшения дискового I/O.
LinuxCamp | #swap
👍20❤11❤🔥2🔥1
Страницы памяти и HugePages
Что такое страница
Страница - это базовая единица виртуальной памяти (обычно 4 КБ). Через неё ядро мапит виртуальные адреса на физические. Это даёт изоляцию и контроль доступа. Проверить размер можно так:
Почему это быстро
Преобразование адресов кешируется в TLB - небольшой кеш мапинга страниц. Пока программа ходит по близким адресам, почти все обращения попадают туда без лишних затрат. Посмотреть информацию о TLB:
Что такое HugePages
HugePages увеличивают размер страницы до 2 МБ или 1 ГБ, уменьшая количество записей в таблице страниц и снижая TLB-промахи. Это ускоряет работу приложений с большими объёмами RAM.
Применение, плюсы и минусы
Плюсы: меньше накладных расходов на управление памятью, стабильнее работа больших баз данных и аналитических систем. Минусы: крупные страницы требуют непрерывных блоков памяти, что усложняет управление и может приводить к фрагментации. На практике HugePages чаще всего включают для PostgreSQL, ClickHouse, JVM-сервисов и других систем, активно обходящих большие массивы данных.
Вывод
Страницы задают структуру памяти, TLB ускоряет доступ, а HugePages дают прирост там, где объёмы RAM велики и обращений много.
LinuxCamp | #storage
Что такое страница
Страница - это базовая единица виртуальной памяти (обычно 4 КБ). Через неё ядро мапит виртуальные адреса на физические. Это даёт изоляцию и контроль доступа. Проверить размер можно так:
getconf PAGE_SIZE
Почему это быстро
Преобразование адресов кешируется в TLB - небольшой кеш мапинга страниц. Пока программа ходит по близким адресам, почти все обращения попадают туда без лишних затрат. Посмотреть информацию о TLB:
grep -i tlb /proc/cpuinfo
Что такое HugePages
HugePages увеличивают размер страницы до 2 МБ или 1 ГБ, уменьшая количество записей в таблице страниц и снижая TLB-промахи. Это ускоряет работу приложений с большими объёмами RAM.
grep -i huge /proc/meminfo
Применение, плюсы и минусы
Плюсы: меньше накладных расходов на управление памятью, стабильнее работа больших баз данных и аналитических систем. Минусы: крупные страницы требуют непрерывных блоков памяти, что усложняет управление и может приводить к фрагментации. На практике HugePages чаще всего включают для PostgreSQL, ClickHouse, JVM-сервисов и других систем, активно обходящих большие массивы данных.
Вывод
Страницы задают структуру памяти, TLB ускоряет доступ, а HugePages дают прирост там, где объёмы RAM велики и обращений много.
LinuxCamp | #storage
👍16❤9🔥3
Совместимость игр под Windows с Linux достигла рекордно высокого уровня благодаря постоянным усилиям разработчиков WINE и Proton. 90% (девять из десяти) игр теперь запускаются на Linux 🎮
Valve активно работает с издателями и разработчиками, чтобы новые игры запускались на Linux с первого дня выпуска.
LinuxCamp | #news
Valve активно работает с издателями и разработчиками, чтобы новые игры запускались на Linux с первого дня выпуска.
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥56👍16❤🔥5🥱4
Легализация ИИ для разработки ядра
Команда разработчиков ядра завершает работу над документом «Kernel Guidelines for Tool [AI] Generated Content».
Теперь использование ИИ-инструментов допускается официально во всех аспектах разработки: от написания кода до генерации changelog-ов.
Что нового:
— Код, сгенерированный ИИ, может быть принят как любой другой вклад.
— При ревью теперь можно предлагать не правки кода, а «лучший prompt» для чата, чтобы тот сам допилил его.
— Эти правила уже обсуждены и одобрены лидерами сообщества.
— В ядре Linux уже есть код, сгенерированный ИИ.
LinuxCamp | #news
Команда разработчиков ядра завершает работу над документом «Kernel Guidelines for Tool [AI] Generated Content».
Теперь использование ИИ-инструментов допускается официально во всех аспектах разработки: от написания кода до генерации changelog-ов.
Что нового:
— Код, сгенерированный ИИ, может быть принят как любой другой вклад.
— При ревью теперь можно предлагать не правки кода, а «лучший prompt» для чата, чтобы тот сам допилил его.
— Эти правила уже обсуждены и одобрены лидерами сообщества.
— В ядре Linux уже есть код, сгенерированный ИИ.
До этой официальности 100 проц патчи только так и делали "с ИИ")
LinuxCamp | #news
😭40🥴18🤝4❤2🔥2
KDE отказывается от X11
Команда KDE Plasma объявила о начале новой эры в развитии рабочего стола: в релизе Plasma 6.8 будет полностью прекращена поддержка сессии X11, и рабочее окружение станет эксклюзивно работать на Wayland.
Поддержка приложений X11 будет осуществляться через совместимый слой Xwayland, а сама сессия Plasma X11 будет исключена из дистрибутивов.
В долгосрочной перспективе это позволит ускорить разработку, улучшить производительность и внедрять новые возможности.
По статистике 73% юзеров Plasma 6 используют Wayland, а не X11, такие дела... Рано или поздно X11 вымрут окончательно.
LinuxCamp | #news
Команда KDE Plasma объявила о начале новой эры в развитии рабочего стола: в релизе Plasma 6.8 будет полностью прекращена поддержка сессии X11, и рабочее окружение станет эксклюзивно работать на Wayland.
Поддержка приложений X11 будет осуществляться через совместимый слой Xwayland, а сама сессия Plasma X11 будет исключена из дистрибутивов.
В долгосрочной перспективе это позволит ускорить разработку, улучшить производительность и внедрять новые возможности.
По статистике 73% юзеров Plasma 6 используют Wayland, а не X11, такие дела... Рано или поздно X11 вымрут окончательно.
LinuxCamp | #news
👍28😱11💔8🤨5🤔3❤1❤🔥1😨1🫡1
Как cgroups v2 реально ограничивает CPU, память и IO
Что такое cgroups v2
cgroups v2 - это механизм ядра, который делит ресурсы системы между группами процессов. Для каждой группы ядро считает и ограничивает CPU, память, дисковый и сетевой IO. Всё управляется через файловую систему /sys/fs/cgroup.
Проверить, используется ли v2:
Иерархия и контроллеры
Все группы - это директории внутри /sys/fs/cgroup. В каждой можно включить контроллеры и настроить лимиты. Процесс "попадает" в cgroup, когда его PID записывают в файл cgroup.procs.
Пример создания отдельной группы вручную:
Ограничение CPU
CPU в v2 настраивается через квоту и период. Так ядро решает, какую долю от одного ядра может использовать группа. Пример: не более 50% одного CPU:
Для полного запрета ограничения (no throttle):
Ограничение памяти
Ядро отслеживает все страницы памяти группы и сравнивает их с лимитом. При превышении включается reclaim, а в крайнем случае OOM внутри cgroup. Пример жёсткого лимита 512 МБ:
Текущие значения и пики:
Ограничение дискового IO
Контроллер io задаёт лимиты на чтение и запись для конкретных устройств. Ядро контролирует количество операций и суммарную пропускную способность. Пример: ограничить чтение до 10 МБ/с для /dev/sda:
Узнать номера устройств:
Вывод
cgroups v2 - это единая иерархия, где для каждой директории можно включить контроллеры CPU, памяти и IO, добавить процессы и задать жёсткие лимиты. Всё управление сводится к записи чисел и параметров в файлы внутри /sys/fs/cgroup, а дальше ядро само выполняет политику.
LinuxCamp | #overview
Что такое cgroups v2
cgroups v2 - это механизм ядра, который делит ресурсы системы между группами процессов. Для каждой группы ядро считает и ограничивает CPU, память, дисковый и сетевой IO. Всё управляется через файловую систему /sys/fs/cgroup.
Проверить, используется ли v2:
mount | grep cgroup2
cat /sys/fs/cgroup/cgroup.controllers
Иерархия и контроллеры
Все группы - это директории внутри /sys/fs/cgroup. В каждой можно включить контроллеры и настроить лимиты. Процесс "попадает" в cgroup, когда его PID записывают в файл cgroup.procs.
Пример создания отдельной группы вручную:
cd /sys/fs/cgroup
mkdir test.slice
echo "+cpu +memory +io" > cgroup.subtree_control
cd test.slice
echo $$ > cgroup.procs # добавить текущий shell
Ограничение CPU
CPU в v2 настраивается через квоту и период. Так ядро решает, какую долю от одного ядра может использовать группа. Пример: не более 50% одного CPU:
echo "100000" > cpu.max # период 100 мс
echo "50000" >> cpu.max # квота 50 мс
Для полного запрета ограничения (no throttle):
echo "max" > cpu.max
Ограничение памяти
Ядро отслеживает все страницы памяти группы и сравнивает их с лимитом. При превышении включается reclaim, а в крайнем случае OOM внутри cgroup. Пример жёсткого лимита 512 МБ:
echo $((512 * 1024 * 1024)) > memory.max
Текущие значения и пики:
cat memory.current
cat memory.events
Ограничение дискового IO
Контроллер io задаёт лимиты на чтение и запись для конкретных устройств. Ядро контролирует количество операций и суммарную пропускную способность. Пример: ограничить чтение до 10 МБ/с для /dev/sda:
echo "8:0 rbps=10485760" > io.max
Узнать номера устройств:
lsblk --output NAME,MAJ:MIN
Вывод
cgroups v2 - это единая иерархия, где для каждой директории можно включить контроллеры CPU, памяти и IO, добавить процессы и задать жёсткие лимиты. Всё управление сводится к записи чисел и параметров в файлы внутри /sys/fs/cgroup, а дальше ядро само выполняет политику.
LinuxCamp | #overview
👍29❤6🔥5
Как обеспечить безопасность в Kubernetes?
5 декабря в 11:00 разработчики Luntry, решения для защиты контейнерной инфраструктуры, и платформы контейнеризации «Штурвал» проведут совместный вебинар.
В программе:
◾предоставление доступов и анализ прав RBAC;
◾погружение в сетевую безопасность и организацию Zero Trust;
◾мультитенантность и ее связь с контролем Kubernetes-ресурсов.
Luntry и «Штурвал» вместе создают сквозной контур безопасности для Kubernetes, который не только обнаруживает уязвимости, но и предоставляет инструменты для их оперативного устранения и даже предотвращения.
Будет полезно инженерам безопасности, SRE, DevOps-инженерам, тимлидам.
📌 Зарегистрироваться
5 декабря в 11:00 разработчики Luntry, решения для защиты контейнерной инфраструктуры, и платформы контейнеризации «Штурвал» проведут совместный вебинар.
В программе:
◾предоставление доступов и анализ прав RBAC;
◾погружение в сетевую безопасность и организацию Zero Trust;
◾мультитенантность и ее связь с контролем Kubernetes-ресурсов.
Luntry и «Штурвал» вместе создают сквозной контур безопасности для Kubernetes, который не только обнаруживает уязвимости, но и предоставляет инструменты для их оперативного устранения и даже предотвращения.
Будет полезно инженерам безопасности, SRE, DevOps-инженерам, тимлидам.
📌 Зарегистрироваться
👍5
Почему показатели нагрузки кажутся странными и чем помогает htop
CPU% и несколько ядер
Показатель %CPU у процесса это доля одного логического ядра, а не всей системы. На машине с 8 ядрами суммарный %CPU может быть больше 100%, это нормально. Сначала смотрим, сколько вообще ядер:
Затем открываем htop и включаем отображение по ядрам, чтобы понимать распределение нагрузки.
load average не процент загрузки
load average показывает среднее количество процессов, которые либо выполняются, либо ждут CPU или I/O. Это не процент и не "нагрузка процессора". Значение 4.0 на 4 ядрах означает, что в среднем одновременно 4 задачи хотят работать.
Если load примерно равен числу ядер система работает в нормальном режиме. Если намного выше, значит есть очередь на CPU или на диск.
Steal time и работа в виртуалках
В htop есть поле st в строке CPU. Это время, когда ваша виртуальная машина хотела получить CPU, но гипервизор отдал его другим. Если st заметно выше нуля, а сама нагрузка небольшая, узкое место не в вашем приложении, а в окружении.
IOWait и зависания из-за диска
Поле wa (iowait) показывает, сколько времени CPU простаивает в ожидании диска или сети. Высокий wa при невысоком %CPU и большом load average означает, что проблема в I/O. Для проверки дисков удобно использовать iostat:
Как смотреть нагрузку
Корректный минимум: понять число ядер и текущий load, затем посмотреть разбиение CPU по user/system/iowait/steal и проверить диск.
Если эти команды анализировать вместе, показания htop перестают выглядеть странными и становится ясно, где именно упирается система: в CPU, диск, память или виртуализацию.
LinuxCamp | #utils
CPU% и несколько ядер
Показатель %CPU у процесса это доля одного логического ядра, а не всей системы. На машине с 8 ядрами суммарный %CPU может быть больше 100%, это нормально. Сначала смотрим, сколько вообще ядер:
nproc
lscpu | grep '^CPU(s):'
Затем открываем htop и включаем отображение по ядрам, чтобы понимать распределение нагрузки.
htop
load average не процент загрузки
load average показывает среднее количество процессов, которые либо выполняются, либо ждут CPU или I/O. Это не процент и не "нагрузка процессора". Значение 4.0 на 4 ядрах означает, что в среднем одновременно 4 задачи хотят работать.
uptime
cat /proc/loadavg
Если load примерно равен числу ядер система работает в нормальном режиме. Если намного выше, значит есть очередь на CPU или на диск.
Steal time и работа в виртуалках
В htop есть поле st в строке CPU. Это время, когда ваша виртуальная машина хотела получить CPU, но гипервизор отдал его другим. Если st заметно выше нуля, а сама нагрузка небольшая, узкое место не в вашем приложении, а в окружении.
IOWait и зависания из-за диска
Поле wa (iowait) показывает, сколько времени CPU простаивает в ожидании диска или сети. Высокий wa при невысоком %CPU и большом load average означает, что проблема в I/O. Для проверки дисков удобно использовать iostat:
iostat -x 1
Как смотреть нагрузку
Корректный минимум: понять число ядер и текущий load, затем посмотреть разбиение CPU по user/system/iowait/steal и проверить диск.
nproc
uptime
htop
iostat -x 1
Если эти команды анализировать вместе, показания htop перестают выглядеть странными и становится ясно, где именно упирается система: в CPU, диск, память или виртуализацию.
LinuxCamp | #utils
👍27❤13🔥5❤🔥1
ROI в DevOps ↗️
Эффективны ли ваши инвестиции в DevOps? Как посчитать возврат от вложений?
Команда юнита «Экспресс 42» (Флант) приглашает вас на вебинар, где:
Вебинар пройдёт 5 декабря (пт) в 12:00
Зарегистрироваться
Если ищете способы увеличить прибыль или сократить издержки, а также усовершенствовать качество поставки цифровых продуктов, ждём вас на эфире 🧑🏼💻
Эффективны ли ваши инвестиции в DevOps? Как посчитать возврат от вложений?
Команда юнита «Экспресс 42» (Флант) приглашает вас на вебинар, где:
– Поделится инструментами оценки ROI сверху вниз (верхнеуровневая оценка трансформации) и снизу вверх (детальная оценка отдельных изменений).
– Проанализирует выгоды и ROI на примере компании среднего размера.
– Объяснит, как DevOps помогает сократить трудозатраты и получить дополнительную доходность.
Вебинар пройдёт 5 декабря (пт) в 12:00
Зарегистрироваться
Если ищете способы увеличить прибыль или сократить издержки, а также усовершенствовать качество поставки цифровых продуктов, ждём вас на эфире 🧑🏼💻
👍2😁1
dmesg: что реально можно увидеть в логах ядра
Зачем нужен dmesg
dmesg показывает сообщения ядра: загрузка драйверов, ошибки устройств, падения модулей, проблемы с памятью и сетевым стеком. Это первый инструмент, когда что-то странное происходит на уровне железа или ядра.
Использование
Показать последние события ядра:
С фильтром по ошибкам:
Живой вывод, как tail -f:
Пример реальной проблемы
Сервер начал подвисать и рандомно отключать сетевой интерфейс. Система молчит, journalctl не даёт понятных подсказок. Смотрим dmesg:
И видим:
Причина - умирающий сетевой адаптер или битый firmware/EEPROM. Без dmesg найти такое почти невозможно: приложение думает, что сеть просто пропадает.
Ещё один пример: проблемы с диском
Вывод:
Ядро сообщает, что диск не может прочитать сектор,это верный признак начала деградации.
Вывод
dmesg - это прямой канал общения с ядром. Если проблема связана с железом, драйверами, памятью, сетевыми интерфейсами или файловой системой, то почти всегда подсказка лежит именно здесь.
LinuxCamp | #utils
Зачем нужен dmesg
dmesg показывает сообщения ядра: загрузка драйверов, ошибки устройств, падения модулей, проблемы с памятью и сетевым стеком. Это первый инструмент, когда что-то странное происходит на уровне железа или ядра.
Использование
Показать последние события ядра:
dmesg | tail -n 30
С фильтром по ошибкам:
dmesg -T | grep -i error
Живой вывод, как tail -f:
dmesg -w
Пример реальной проблемы
Сервер начал подвисать и рандомно отключать сетевой интерфейс. Система молчит, journalctl не даёт понятных подсказок. Смотрим dmesg:
dmesg -T | grep -i eth0
И видим:
[Mon Dec 1 10:15:12 2025] e1000e 0000:00:19.0 eth0: EEPROM corrupted
[Mon Dec 1 10:15:13 2025] eth0: link down
[Mon Dec 1 10:15:14 2025] eth0: link up
Причина - умирающий сетевой адаптер или битый firmware/EEPROM. Без dmesg найти такое почти невозможно: приложение думает, что сеть просто пропадает.
Ещё один пример: проблемы с диском
dmesg -T | grep -i "read error"
Вывод:
blk_update_request: I/O error, dev sda, sector 1587840
Ядро сообщает, что диск не может прочитать сектор,это верный признак начала деградации.
Вывод
dmesg - это прямой канал общения с ядром. Если проблема связана с железом, драйверами, памятью, сетевыми интерфейсами или файловой системой, то почти всегда подсказка лежит именно здесь.
LinuxCamp | #utils
👍36❤11🔥9❤🔥1
fdisk: базовый инструмент разметки дисков в Linux
Зачем нужен fdisk
fdisk управляет таблицей разделов на диске: показывает структуру, создаёт и удаляет разделы, меняет типы и метки. Работает с MBR и GPT-таблицами. Это утилита низкого уровня без файловых систем и монтирования.
Просмотр структуры диска
Показать все устройства:
Информация по конкретному диску:
Вывод покажет размер, таблицу разделов, типы, смещения и флаги.
Работа в интерактивном режиме
Для изменения разметки диска:
(важно: быть аккуратным и убедиться, что выбран правильный диск) Команды внутри fdisk:
Пример использования
Создаём новый раздел на дополнительном диске /dev/sdb:
Форматируем:
Монтируем:
Вывод
fdisk - это точный и простой инструмент для управления таблицей разделов. Работает надёжно, но требует аккуратности: изменения сразу затрагивают структуру диска, поэтому перед записью (w) всегда проверяй, что работаешь именно с нужным устройством.
LinuxCamp | #utils
Зачем нужен fdisk
fdisk управляет таблицей разделов на диске: показывает структуру, создаёт и удаляет разделы, меняет типы и метки. Работает с MBR и GPT-таблицами. Это утилита низкого уровня без файловых систем и монтирования.
Просмотр структуры диска
Показать все устройства:
fdisk -l
Информация по конкретному диску:
sudo fdisk -l /dev/sda
Вывод покажет размер, таблицу разделов, типы, смещения и флаги.
Работа в интерактивном режиме
Для изменения разметки диска:
sudo fdisk /dev/sdb
(важно: быть аккуратным и убедиться, что выбран правильный диск) Команды внутри fdisk:
p — показать текущие разделы
n — создать новый раздел
d — удалить раздел
t — изменить тип
w — записать изменения и выйти
q — выйти без сохранения
Пример использования
Создаём новый раздел на дополнительном диске /dev/sdb:
sudo fdisk /dev/sdb
# внутри:
n # новый раздел
p # primary
1 # номер
<enter> # старт по умолчанию
<enter> # конец по умолчанию
w # записать (осторожно!)
Форматируем:
sudo mkfs.ext4 /dev/sdb1
Монтируем:
sudo mount /dev/sdb1 /var/log2
Вывод
fdisk - это точный и простой инструмент для управления таблицей разделов. Работает надёжно, но требует аккуратности: изменения сразу затрагивают структуру диска, поэтому перед записью (w) всегда проверяй, что работаешь именно с нужным устройством.
LinuxCamp | #utils
1❤16👍12🔥3🤝1
