Записки IT специалиста
7.98K subscribers
1.56K photos
49 videos
15 files
2.23K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
加入频道
Привет. 

Меня зовут Андрей, я Engineering Manager и автор канала "Тимлид на удаленке".

Более 10 лет я управляю командами разработки. Больше пяти часть моей работы - это обучение тимлидов.

В своем канале я делюсь теми инструментами и подходами которые на практике приносят мне результаты. 

Некоторые статьи от меня:

Мои способы успевать больше
Про микроменеджмент
Видеть за цифрами цель
Как сохранить силы и психику (раз, два, три)
Когда готовить себе замену

Подпишись, чтобы не пропустить больше статей @teamleadonline

Реклама. Нечаев А.А. ИНН 343605128044.
🤡15🤮3🥱3👌1
Relax-and-Recover (ReaR) - средство аварийного восстановления системы

Среди инструментов резервного копирования существует отдельная группа - системы аварийного восстановления на "голое железо" (Bare Metal Disaster Recovery - BMDR), которые позволяют полностью восстановить систему в случае выхода из строя оборудования или уничтожения системы при воздействии иных факторов.

Relax-and-Recover - сокращенно ReaR - как раз и представляет такую систему, простую в использовании, но достаточно мощную в работе.

С ее помощью вы сможете быстро восстановить вашу ОС Linux на новое оборудование, либо выполнить перенос системы со старого оборудования на новое, либо в виртуальную среду.

https://interface31.ru/tech_it/2023/09/relax-and-recover-sredstvo-avariynogo-vosstanovleniya-sistemy.html
👍29
​​Утилизация CPU в Linux

Правильная интерпретация показателей утилизации процессора в Linux важна для каждого системного администратора. Данная информация помогает быстро понять характер нагрузки и может указать на потенциально узкое место.

Чтобы получить данную информацию мы будем использовать команду top, которая есть из коробки практически в каждом дистрибутиве.

В данном случае нас интересует строка, выделенная желтым маркером на рисунке ниже. Она показывает, как используется процессорное время вашей системы в процентном соотношении.

🔹 us (User CPU time) – время потраченное на пространство пользователя. Это основная рабочая нагрузка и именно сюда попадает процессорное время, которое наши программы или службы тратят на полезную работу. Высокие значения говорят о том, что мы интенсивно нагружаем систему и не являются какой-либо аномалией.

🔹 sy (System CPU time) – время потраченное на пространство ядра. В пространстве ядра работают драйвера оборудования, системные вызовы и т.п. Нормальны умеренные значения этого показателя, высокие значения могут говорить о проблемах с оборудованием, высокую нагрузку на системы ввода-вывода или являться признаком DDoS-атаки на систему.

🔹 ni (Nice CPU time) - время потраченное на процессы пользовательского пространства запущенные с пониженным приоритетом. Для данного показателя справедливо все то, что было сказано для us. Данный показатель нужен для оценки того, как система перераспределяет ресурсы и анализируется в совокупности с us.

🔹 id (Idle) — время простоя (бездействия).

🔹 wa (I/O wait) — время на ожидание операций ввода-вывода, высокие значения показывают на то, что система много времени тратит на ожидание дисковых операций. Может служить показателем выхода из строя накопителей, но также высокие значения могут быть нормальными при интенсивной дисковой нагрузке. Продолжительные высокие значения являются признаком того, что система ввода-вывода не справляется с текущей нагрузкой.

🔹 hi (Hardware IRQ) — время, потраченное на обработку аппаратных прерываний. В обычных сценариях значение этого показателя должно быть близким к нулю, высокие значения указывают на возможную неисправность оборудования либо на крайне высокую нагрузку на устройства ввода-вывода.

🔹 si (Software IRQ) — аналогично, время, потраченное на обработку программных прерываний, умеренные значения этого показателя являются нормой, высокие значения в первую очередь показывают на высокую сетевую нагрузку, неисправность сетевого оборудования или DDoS-атаку.

🔹 st (Steal Time) - время «украденное» гипервизором у виртуальной машины, имеет значение внутри виртуальной машины и показывает какое количество процессорного времени она недополучила от гипервизора. Указывает на наличие конкуренции за процессорное время между виртуальными машинами или виртуальными машинами и процессами гипервизора.
👍823
С 01 января 2027 года полностью прекращается поддержка программного продукта 1С:Управление Производственным Предприятием (УПП)

Что это означает?
- Функциональные блоки не обновляются несколько лет и уже сильно отстают от требований законодательства
- Отсутствие отраслевой поддержки.
- Расходы в человеко-часах на ручное отслеживание изменений в законодательстве
- Поддержка «1С:УПП» обходится почти вдвое дороже аналогичной подписки для 1С:ERP.

Что ждет компании, которые до сих пор на устаревшем решении? И что делать, чтобы минимизировать затраты и риски?

Приглашаем на бесплатный вебинар
"ПЕРЕХОД С 1С:УПП" 
17.04.25  в 11:00 

Кому будет полезен вебинар
Собственникам бизнеса
Генеральному директору
Главному бухгалтеру
ИТ-руководителю

Интегратор "Цифровизация Производства" покажет свои кейсы. Расскажет как подготовиться к проекту. Рассчитает примерные сроки и стоимость вашего проекта

Регистриуйтесь сейчас, так как количество участников ограничено вебинарной комнатой
Почему у жесткого диска указан TRIM и что это обозначает?
Итак, откуда у жесткого диска команда TRIM

К сожалению, правильный ответ на вопрос дали немногие читатели. И это действительно диск с SMR, а наличие поддержки TRIM у жесткого диска – 100% признак черепицы.

Коротко вспомним, что SMR диск, как и SSD, имеет большой штраф на запись, потому что мы не можем изменить один кластер, не перезаписав всю ленту. Поэтому запись всегда идет в свободные ленты или медиакеш с обычной технологией записи.

В моменты простоя диск начинает заниматься реорганизацией, т.е. перемещать записанные данные в занятые ленты, чтобы увеличить количество свободных, здесь же и начинает работать TRIM, также как и в SSD сообщая об удаленных на уровне файловой системы данных.

Это позволяет диску более эффективно реорганизовывать данные и поддерживать максимальный запас свободных лент.

Более подробно об этом в нашей статье: Что такое черепичная магнитная запись SMR и стоит ли ее избегать?
👍383
​​Почему именно systemd?

Практически после каждой нашей заметки о возможностях systemd в комментариях появляются читатели, которые пишут, что мол, а не проще ли это сделать … и далее идет перечисление простых утилит или скриптов.

С одной стороны, они могут показаться в чем-то правы. Зачем нужны все эти юниты, когда можно просто дернуть утилиту, получить результат и обернуть все это в скрипт.

Но это очень узкий и односторонний взгляд. Современные системы очень сложны и требуют стандартизации и унификации средств администрирования.

Вы можете мастерски владеть скриптами и автоматизировать все с их помощью, но ваши коллеги не сильно обрадуются этому факту, если им придется принять у вас обслуживание этой системы. Да и самому элементарно можно забыть, где лежит и для чего нужен тот или иной скрипт, особенно если подробного документирования не производилось.

Поэтому первый плюс systemd – это унификация и стандартизация. Теперь у нас есть юниты: юниты служб, юниты таймеров, юниты путей, юниты монтирования и т.д. и т.п.

Все юниты стандартизованы и научившись работать с одним типом вы без труда освоите другой. Кроме этого, юниты просты, очень просты и не идут ни в какое сравнение со скриптами.

Списки юнитов и их состояние также можно получить централизованно, одной простой командой. А чтобы проверить все возможные задания того же cron вам придется пробежать несколько каталогов, а также проверить crontab.

Второй плюс – это углубленная интеграция в систему, systemd предоставляет множество удобных инструментов, начиная от управления автозагрузкой и заканчивая средствами логирования.

Чтобы посмотреть результат работы скрипта – вам придется самому позаботиться о ведении лога. В systemd все это можно посмотреть «не отходя от кассы», стандартными инструментами. При этом никаких особых усилий к этому прикладывать не придется.

Из этого вытекает еще одно большое преимущество юнитов – их гораздо проще отлаживать. Во-первых, у вас уже есть лог, который ведется автоматически. Во-вторых, юниты предсказуемы и работают одинаково, вне зависимости от того, запущены они вручную или другим юнитом.
В тоже время отлично работающий при интерактивном запуске скрипт может оказаться неработоспособным при вызове через cron или из другого скрипта просто потому, что оказался запущен в другом контексте, с другими переменными окружения.

До сих пор нами были перечислены простые задачи, на которых преимущества systemd, конечно, видны, но еще не раскрыли всех своих возможностей.

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

Для традиционного решения этой задачи придется немало поломать голову, выполнить кучу проверок или, как делается чаще всего, пойти по пути костылей и синей изоленты. Скажем, просто поставить задержку, в надежде что за это время сервис, от которого зависит работа успеет подняться. Ну а нет, так нет…

Systemd предоставляет простой и удобный способ работы с зависимостями. При этом вы можете указывать как отдельные службы, так и цели (таргеты), которые составляют группы служб, объединенные по некоторому признаку. Нужна сеть? Просто указываем в зависимостях network.target.

Еще одна важная задача – обработка отказа. Если служба упала – вы можете ее автоматически перезапустить. Но это можно сделать и без systemd, а вот systemd позволяет сделать это грамотно, указав частоту и количество попыток.

Если проблема приняла системный характер или находится на другой стороне, то systemd попробует несколько раз перезапустить службу и прекратит это делать, не получив результата. И это гораздо лучше, чем тупо долбить скриптом, вызывая повышенную нагрузку на систему и сеть.

Размер заметки не дает углубиться в подробности, но даже перечисленное дает исчерпывающий ответ на вопрос: почему именно systemd?
👍68🔥61
​​😎 systemd - управляем загрузкой служб

Прежде всего выясним статус службы, для этого выполним

systemctl status myservice

В выводе нас интересует следующая строка:

Loaded: loaded (/path_to/myservice.service; enabled; vendor preset: enabled)

Где loaded - обозначает что юнит проанализирован systemd и загружен в текущую конфигурацию, enabled - автозагрузка сервиса включена, vendor preset: enabled - статус автозагрузки по умолчанию, enabled обозначает, что служба будет автоматически добавлена в автозагрузку при установке пакета.

Для того, чтобы включить автозагрузку службы используйте:

systemctl enable myservice

При этом, чтобы два раза не вставать, можно сразу и запустить службу:

systemctl enable --now myservice

Для выключения автозагрузки выполните:

systemctl disable myservice

Посмотреть полный список служб в системе можно командой:

systemctl list-units --type=service

Вывод представляет собой несколько колонок:

🔹 UNIT - юнит службы

🔹 LOAD - статус юнита, loaded - загружен в конфигурацию systemd

🔹 ACTIVE - текущий статутс, показывает запущена ли служба

🔹SUB - более низкоуровневое состояние, зависит от типа юнита, так running показывает что служба запущена и работает, а exited - что она выполнила свою задачу и прекратила работу.

☝️ Также существует простой и удобный способ узнать текущий статус службы.

Чтобы проверить запущена ли она, выполните:

systemctl is-active myservice

Включена ли в автозагрузку:

systemctl is-enabled myservice

Завершился ли ее запуск ошибкой:

systemctl is-failed myservice

👍 Код завершения команды при положительном ответе - 0, что позволяет удобно выяснять состояние служб в скриптах.
👍65
Ананас в аренду?

В 18 веке ананасы считались признаком богатства и власти по всей Европе. Фрукт был настолько почитаем, что люди даже арендовали ананасы на ночь, чтобы показать их своим друзьям.

А сколько ещё удивительных вещей вы не знаете?
Наш канал Кот учёный – ваш проводник в мир интересных фактов!
Подписывайся’!👇
https://yangx.top/kot_u4enyy

erid: 2W5zFGM7MWG
🔥2👀2
​​Стандартные systemd target в Linux

Говоря о юнитах systemd, нельзя не отметить такой тип юнита как таргет (цель, taget). Таргет – это особый тип юнита, который позволяет объединить несколько юнитов в группу и управлять ими как единым целым.

Вы можете создать собственный таргет из взаимозависимых служб и, скажем, одновременно перезапускать все относящиеся к веб-серверу службы: веб-север, СУБД, PHP и т.д.

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

Посмотреть список стандартных целей можно командой:

systemctl -–type=target

После чего мы увидим список всех активных таргетов, чтобы увидеть полный список используйте команду:

systemctl -–type=target -–all

Что в этом полезного и для чего мы можем их использовать? Прежде всего для указания зависимостей. Допустим нам нужно, чтобы наша служба запускалась после того, как будет инициирована сеть, нет ничего проще:

After=network.target

Если вы используете сетевые файловые системы, такие как NFS или CIFS/SMB и ваша служба должна запуститься после того, как они будут смонтированы:

After=remote-fs.target

И не нужно ничего придумывать, systemd уже подумала за вас.

У некоторых целей может быть сразу несколько вариантов, например, существуют сразу три сетевых таргета:

▫️ network-pre.target
▫️ network.target
▫️ network-online.target

Цель network-pre.target представляет собой точку состояния системы перед запуском сетевых служб и может быть использована для запуска тех служб, которые обязательно должны быть активны на момент запуска сети, например, брандмауэр.

Данная цель должна использоваться как Before=network-pre.target или Wants=network-pre.target.

Собственно network.target обозначает состояние запуска всех сетевых служб системы и для прочих юнитов, которым нужна сеть мы должны использовать After=network.target, т.е. состояние после того, как все сетевые службы были запущены.

И, наконец, network-online.target – это точка состояния системы, когда все сетевые службы успешно и гарантированно запущены. Используется только с Wants= и After=, используется в основном для устаревших служб или сценариев, которые некорректно работают с After=network.target.

Отдельного разговора заслуживают Boot targets – цели загрузки, эти таргеты являются аналогами уровней запуска init. Существуют следующие загрузочные таргеты:

▫️ poweroff.target (runlevel 0) – выключение системы
▫️ rescue.target (runlevel 1) – режим восстановления системы
▫️ multi-user.target (runlevel3) – многопользовательский режим (консольный режим без графики)
▫️ graphical.target (runlevel 5) – режим графического окружения
▫️ reboot.target (runlevel 6) – перезагрузка системы

Также существует загрузочный таргет по умолчанию - default.target, который является символьной ссылкой на один из загрузочных таргетов и определяет в какой именно режим будет загружена система по умолчанию.

Узнать текущее состояние по умолчанию можно командой:

systemctl get-default

А установить новую цель загрузки можно командой:

 systemctl set-default graphical.target

При этом graphical.target имеет одну особенность, при отсутствии графики он запускается и работает аналогично multi-user.target и поэтому не следует удивляться, увидев его в системе без графической оболочки или в контейнере.

По-умолчанию graphical.target для систем без графического окружения используют Debian и Ubuntu.

Также мы можем переключаться между уровнями загрузки без перезагрузки системы при помощи команды isolate. Так если мы выполним в графической среде:

systemctl isolate multi-user.target

То все графические модули будут остановлены, и система перейдет в режим командной строки.

Ну и напоследок весьма злая шутка:

systemctl set-default reboot.target 👻👻👻

После чего можно принимать ставки как быстро коллега разберется в чем дело. Но такие шутки довольно вредны для здоровья. Минздрав предупреждает!
👍45
​​Как правильно редактировать юниты systemd

Сегодня systemd стал безальтернативной системой управления службами в дистрибутивах первого эшелона и предоставил администраторам простые и удобные возможности для решения этой задачи.

Действительно, сравните сложность написания init-файла и юнита. 🤷🏻‍♀️

И, как всякая хорошо спроектированная и продуманная система systemd предполагает многоуровневую систему управления юнитами.

Начнем с мест их расположения, которые перечислим в порядке повышения приоритета:

▫️ /usr/lib/systemd/system – юниты установленные вместе с пакетами
▫️ /run/systemd/system – юниты, которые создаются автоматически при загрузке системы и существующие только в рамках текущего сеанса
▫️ /etc/systemd/system – юниты, созданные системным администратором

Директория /etc/systemd/system имеет наивысший приоритет и если нам нужно изменить существующий юнит службы, то мы можем скопировать его сюда из /usr/lib/systemd/system и внести свои изменения.

Вроде бы просто, да не совсем. При обновлении пакета юнит в /usr/lib/systemd/system тоже будет обновляться, при этом, в отличии от изменения конфигурационных файлов, никакого предупреждения мы не получим.

Юнит пакета будет жить сам по себе, и наш, скопированный юнит тоже сам по себе. Но применяться, в силу приоритета, будет именно наш юнит.

К чему это может привести? Да к чему угодно и отловить причину внезапно возникшего непонятного поведения службы может быть достаточно проблематично.

Особенно критично это может быть при обновлении системы на новую версию, где исходный юнит службы может подвергнуться серьезным изменениям.

Как быть? К счастью, в systemd, как в хорошо спроектированной системе, есть возможность точечно вносить изменения в конфигурацию юнита при помощи технологии drop-in.

Скажем, нам нужно внести изменения в работу юнита myservice.service, для этого мы должны создать каталог /etc/systemd/system/ myservice.service.d и поместить в него один или несколько фалов с расширением conf.

Проще всего это сделать с помощью команды:

systemctl edit myservice

Напоминаем, что если вы не указали тип юнита, то по умолчанию он принимается за service, а если вам нужно внести изменения в таймер, то придется указать имя юнита полностью:

systemctl edit myservice.timer

Затем указываем только те опции, которые хотим переопределить или добавить, например:

[Unit]
Requires=новая зависимость
After=новая зависимость

Для опций, предполагающих множественные значения следует предварительно выполнить их сброс, иначе переопределяемое значение будет добавлено к уже существующему в файле юнита. К таким опциям относятся ExecStart или OnCalendar в таймерах.

Если вы добавите:

[Service]
ExecStart=новая команда

То эта строка будет добавлена к существующим строкам ExecStart в юните, если вы хотите переопределить это значение, то его сначала необходимо сбросить:

[Service]
ExecStart=
ExecStart=новая команда

Если у вас несколько Drop-in файлов, то изменения в них будут применяться по очереди, для расстановки приоритетов можете использовать цифровые префиксы файлов.

Еще одним достоинством команды systemctl edit является то, что по окончании редактирования конфигурация systemd будет перечитана, а служба перезапущена.

Откатить изменения можно командой

systemctl revert myservice

Если вы редактируете drop-in файлы вручную, то после каждого изменения перечитайте конфигурацию:

systemctl daemon-reload

И перезапустите службу

systemctl restart myservice

Как видим, systemd дает в руки администратора серьезные инструменты позволяющие точечно редактировать конфигурацию юнитов.

Мы рекомендуем использовать данный подход даже для внесения изменения в собственные юниты, так откатить изменения в drop-in файле проще, чем восстановить исходное состояние конфигурации службы.
👍49👀3
Субботнее ночное

Со вчерашнего дня по дореволюционным проездным на пригородные поезда то пускают, то не пускают, то пускают, но не на все направления.

Что такое пригородные поезда рекомендуем почитать тут: https://yangx.top/interface31/3387

Похоже, халява накрылась. Теперь в область только на маршрутках, с импортными буквами на боку: X-RAY, VLESS, REALITY

Что они значат? Да пес его знает, наверное модель маршрутки.

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

Да и маршрутки нечего так, быстрые, удобные.
👍21😁14🔥4🤡2
​​Кеширующий прокси или зеркало репозитория?

Уже не первый раз сталкиваемся с тем, что начинающие администраторы путают эти два понятия. Поэтому попробуем внести ясность.

По мере роста количества машин под управлением Linux возникает проблема доступа к репозиториям. Например, при обновлении весь парк машин будет многократно выкачивать один и тот же объем трафика.

Дополнительными негативными факторами могут быть скорость канала или скорость доступа к репозиториям. Все это заставляет задуматься о том, как решить проблему.

Первое что приходит на ум – это локальное зеркало репозитория. Создать его несложно, для этого есть штатная утилита apt-mirror. С ее помощью можно поддерживать на собственных ресурсах полную копию репозиториев системы.

Но тут возникают иные сложности, так, например, размер репозиториев текущей версии Debian для архитектуры amd64 составляет 778 ГБ, сюда как минимум следует добавить all и еще 258 ГБ. Получаем примерно 1 ТБ требуемого дискового пространства.

Если у нас в эксплуатации несколько систем, то зеркала репозиториев нужно будет организовать для каждой из них. При переходе на новую версию – добавить новые репозитории.

В итоге получаем весьма значительное расходование места, причем достаточно бесполезное, поскольку по факту вы будете использовать лишь малую его часть.

Уменьшить размер локальных репозиториев в целом можно, например, скачав только самые нужные или оставив только последние версии пакетов, но все это не устраняет общей проблемы – значительный перерасход места.

Альтернатива локальному репозиторию – кеширующий прокси-сервер. Он работает по схожему, но несколько иному принципу.

Как и любой прокси-сервер он становится посредником между системой и репозиторием и один раз скачав любой пакет помещает его в локальный кеш. При последующих запросах пакет будет уже отдаваться из кеша, без повторного скачивания.

Локальная структура также организуется по принципу репозиториев, с учетом версии системы, архитектуры, источника пакетов и т.д.

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

Потребовался новый пакет или обновление? Аналогично, один раз качаем, остальное получаем локально.

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

Поэтому для большинства сценариев оптимальным будет использование именно кеширующего прокси.

Локальные репозитории в свою очередь следует использовать для закрытого контура или крупных систем с узким внешним каналом.

Настроить кеширующий прокси Apt-Cacher NG можно по нашей статье: Установка и настройка Apt-Cacher NG - кеширующего прокси-сервера обновлений для Debian и Ubuntu
👍49🤝1
Очередной ушедший в страну вечной охоты диск. Пополнил статистку и подтвердил нашу теорию о том, что первым признаком скорого выхода из строя является утилизация диска на 100% без заметной дисковой активности - https://yangx.top/interface31/3840

В данном случае все повторилось, диск начал с сильными тормозами залипать на чтение без видимой дисковой активности, особенно если пытаемся читать мелкоблочку. Потом начал отваливаться и после очередного отвала перешел в состояние read-only.

После чего с него еще некоторое время можно было что-то считать, но не более 30-50 ГБ, после чего диск снова отваливался.

В настоящий момент он также в RO, все файлы видны и даже можно что-то прочитать, но теперь не более 7-9 ГБ за один присест, при этом некоторые файлы оказываются битыми.

Куплен в августе 2023 года за смешные 3860руб., сильно нагружен не был – использовался во внешнем переносном боксе, никаких ценных данных не содержал.

А мы еще раз напоминаем – если ваш диск стал уходить в 100% загрузки без видимой активности и ощутимыми тормозами – спасайте данные, не откладывая и начиная с самых ценных.
👍552🔥2🤣2
​​Большой SLC-кеш, хорошо ли это?

Сегодня основным типом твердотельного накопителя является накопитель с типом ячеек TLC, три бита на одну ячейку. Другой памяти вы в современных дисках не найдете, за исключением QLC – еще более медленной с четырьмя битами на одну ячейку.

Те редкие модели с памятью MLC которые сегодня можно встретить в продаже относятся к устаревшим моделям с интерфейсом SATA и их скоростные характеристики оставляют желать лучшего.

Сама TLC память достаточно медленная, и чтобы улучшить скоростные характеристики накопителя был придуман SLC-кеш.

Сразу скажем, что никакой отдельной памяти для этого кеша нет, просто в SLC-режим переводится часть ячеек накопителя. А так как SLC – это один бит на ячейку, то емкость ячейки падает в три раза для TLC и в четыре для QLC.

Таким образом максимальный объем SLC кеша для TLC не может превышать 33,3% емкости накопителя, а для QLC – 25%.

Режим кеширования производителем не разглашается и зависит от программных настроек прошивки контроллера, но бытует мнение, что чем больше размер кеша, тем лучше. Но это далеко не так. Почему?

Один из распространенных алгоритмов кеширования предусматривает выделение под кеш большого объема, примерно в 30% от общего объема накопителя.

Что это значит? Это значит, что мы перевели в SLC-режим практически всю память, потому что 30% кеша – это 90% объема.

Да, такой кеш будет поддерживать высокую скорость записи, но по его исчерпанию диску просто становится некуда писать. Поэтому ему приходится одновременно уплотнять запись, переводя SLC-ячейки в TLC-режим и принимать новые данные. При этом скорость записи катастрофически падает, местами до 100 МБ/с и ниже.

Другая стратегия предлагает выделение небольшого объема под кеш 5-10% емкости диска. При этом основная часть ячеек диска остается в режиме TLC и по исчерпании кеша вполне способны обеспечить скорость записи в районе весьма комфортных 400 – 500 МБ/с.

Что из этого лучше? Однозначного мнения тут нет и быть не может. Все зависит от сценариев работы. В первом случае вы сможете принять на полной скорости примерно треть свободного объема диска, но потом получите скорость улитки, попавшей в студень.

Во-втором на полной скорости получится записать лишь небольшой объем данных, но за пределами кеша также будет сохраняться вполне комфортная скорость.

Поэтому если ваши сценарии предусматривают запись значительных объемов данных, то дополнительно будет неплохо почитать обзоры и выяснить алгоритмы кеширования выбранного диска.

При этом помните, что это сугубо программная настройка. И на рынке присутствует множество моделей абсолютно одинаковых аппаратно, но имеющие разные алгоритмы кеширования и, соответственно, разные скоростные характеристики.
👍562
Аренда выделенного сервера от АТОМДАТА под любые задачи

Бесплатное тестирование оборудования!

Аренда физического сервера в любой точке РФ:
- SLA 99,98 с финансовой компенсацией;
- Оперативный подбор конфигурации под задачу, бюджет или по другими параметрам;
- Техническая поддержка 24/7. 3 линии поддержки
- Быстрое предоставление оборудования с собственного склада или подбор и закупка под проект;
- Размещение оборудования в собственных ЦОДах "Росатома", а также партнерских ЦОДах в РФ или на площадке заказчика;
- Помощь с настройкой ПО и запуском оборудования;

Конфигурации в аренду:
- Импортозамещенные серверы/Серверы из реестра Минпромторга (Kraftway);
- Бюджетные (HP DL 360);
- Высокопроизводительные (HP);
- Enterprise (ASUS/INSPUR);
- СХД (HPE/Huawei).

Подробности и бесплатная консультация

#реклама
О рекламодателе
👍4
​​Журналирование при помощи systemd

Про управление службами при помощи systemd мы уже рассказывали: https://yangx.top/interface31/956

Но на этом его возможности не исчерпываются, systemd берет на себя автоматическое журналирование и ротацию логов. Причем в лог будет писаться любой вывод процесса, даже если вы ничего не настраивали.

Это удобно, особенно для простых скриптов, запускаемых по таймерам, в случае использования Cron вам бы пришлось самостоятельно озадачиться логированием.

Самая известная команда для просмотра логов, это:

journalctl -xe

Которая предлагается системой при неудачном запуске сервиса. Ключ предписывает выводить ссылки или пояснения для стандартных ошибок, а -e «перематывает» журнал к последней записи.

Для просмотра текущих сообщений лога в реальном времени введите:

journalctl -f

Для вывода последних событий укажите:

journalctl -n 50

Что выведет 50 последних записей, по умолчанию выводится 10.

Чтобы посмотреть сообщения ядра используйте

journalctl -k

Для того, чтобы посмотреть логи определенной службы укажите ее имя после ключа -u:

 journalctl -u myservice

Чтобы ограничить журнал текущей загрузкой используйте:

journalctl -b 0

Предыдущие сеансы будут иметь отрицательные номера в сторону уменьшения, так предыдущая загрузка будет:

journalctl -b -1

А список всех доступных загрузок можно получить:

journalctl --list-boots

Для получения событий с указанием времени используйте:

journalctl --since “2023-09-20” --until “2023-09-22 12:30:00”

Где --since – обзначает нижний предел фильтра, --until – верхний. Дата вводится в формате ГГГГ-ММ-ДД ЧЧ:ММ:CC, время, при необходимости, можно пропустить.

Также можно отфильтровать сообщения по приоритету, всего используются следующие уровни приоритета:

▫️0 emergency (неработоспособность системы)
▫️1 alerts (предупреждения, требующие немедленного вмешательства)
▫️2 critical (критическое состояние)
▫️3 errors (ошибки)
▫️4 warning (предупреждения)
▫️5 notice (уведомления)
▫️6 info (информационные сообщения)
▫️7 debug (отладочные сообщения)

Приоритет уменьшается с увеличением номера. Так если мы хотим отфильтровать только ошибки и более значимые сообщения, то достаточно указать:

journalctl -p 3

Ключи можно сочетать, например, выведем все сообщения ядра от ошибки и серьезнее за текущий сеанс работы:

journalctl -k -b 0 -p 3

По умолчанию journalctl разбивает вывод на страницы, если нужно изменить такое поведение, скажем для перенаправления вывода в файл, то укажите:

journalctl --no-pager

Также используя ключ -o можно вывести сообщения в формате JSON или syslog, для этого нужно будет указать:

▫️json: стандартный формат JSON с одной записью на строку.
▫️json-pretty: код JSON в формате, более удобном для чтения человеком
▫️short: вывод в формате syslog по умолчанию
▫️short-iso: формат по умолчанию, дополненный для отображения временных меток часов ISO 8601.

journalctl -b 0 -p 3 -u myservice -o json

Как видим, journalctl весьма мощная и удобная система, позволяющая не только собирать, но и удобно просматривать логи без применения дополнительных инструментов.
👍46🔥1🤬1
​​Loginctl – управляем пользователями и сессиями

Сегодня мы расскажем еще об одной простой и удобной утилите из состава systemd – loginctl, которая предназначена для управления пользователями и сессиями.

Вообще-то утилита оперирует тремя типами объектов:

▫️session – сессия, каждая авторизация пользователя в системе, исключая sudo и su.

▫️user – пользователь системы, который может иметь одну или несколько сессий одновременно.

▫️seat – рабочее место, имеет актуальность только для терминальных сред.

Начнем с просмотра, чтобы увидеть все активные сессии введите:

loginctl list-sessions

или просто

loginctl

Для вывода всех выполнивших вход пользователей:

loginctl list-users

Для вывода текущего состояния пользователя или сессии выполните:

loginctl user-status <username>

или

loginctl session-status <ID>

Где вам потребуется указать имя пользователя или идентификатор сессии.

Вместе с информацией о сессии или пользователе вы также увидите дерево запущенных от его имени процессов.

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

loginctl show-session <ID>
loginctl show-user <username>

Для завершения сессии можно использовать:

loginctl kill-session <ID>

При этом всем процессам сессии будет послан сигнал SIGTERM, если мы хотим это изменить, то можем указать сигнал явно:

loginctl kill-session <ID> --signal SIGKILL

В качестве альтернативы можно использовать:

loginctl terminate-session <ID>

В целом обе команды дают аналогичный результат, но terminate не позволяет явно указывать сигнал и для завершения процессов использует инструменты systemd, такие как StopUnit().

Если мы хотим завершить все сессии пользователя, то можно использовать:

loginctl kill-user <username>

или

loginctl terminate-user <username>

В графическом интерфейсе мы можем блокировать или разблокировать экран командами:

loginctl lock-session | unlock-session <id>

Также можем переключаться на нужную сессию:

loginctl activate <id>

Еще один интересный момент, это управление службами пользователя. Обычно они запускаются при интерактивном входе пользователя в систему и останавливаются при его выходе.

Однако бывает необходимость, чтобы они стартовали без входа в систему, в таком случае используйте команду:

loginctl enable-linger <username>

Чтобы отключить такое поведение:

loginctl disable-linger <username>

Как видим, systemd – это не только службы, но и обширный набор простых инструментов для полноценного управления вашей Linux-системы.
👍46