Записки IT специалиста
8.91K subscribers
2.42K photos
57 videos
16 files
2.54K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
Download Telegram
Лог включен, но мало помогает

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

И, к сожалению, подобные отзывы не единичны. Многие считают, что лог должен… А вот что он должен?

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

Почему так? Начнем с самого лога. Чтобы лог приносил пользу – он должен содержать записи об интересующих нас событиях. А для этого нужно правильно настроить подробность лога.

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

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

Еще одна классическая ошибка – смотрим не туда. Чаще всего это связано с тем, что «ошибка» в понимании пользователя не является ошибкой для сервиса и соответственно вы не увидите никакой записи об ошибке в таком случае.

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

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

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

А смотреть надо в корень – на событие, которое должно вызвать реакцию сервиса. И начинать плясать от печки, т.е. от той системы – которое это событие инициализировала, а не от той, которая должна обработать.

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

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

А еще – логи нужно уметь читать. Мы сейчас не будем брать во внимание крайний случай, когда квалификации явно недостаточно и все написанное в логе является «китайской грамотой».

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

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

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

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

Да, сегодня у нас есть неплохой помощник в виде ИИ, но без самостоятельного понимания он может направить вас на неверный путь, особенно если вы «скормите» ему не ту часть лога или начнете задавать не те вопросы.

Поэтому просто включить лог – это мало, нужно понимать что именно вы хотите в нем увидеть и почему именно в нем.
👍112👌2🥱1
Самодеятельность, художественная и не очень

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

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

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

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

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

Почему так? Про неполноту документации мы уже писали. К этому накладывается еще и дополнительный эффект «это все знают». Разработчик мог вполне сознательно опустить в документации некоторые, очевидные для него, моменты. Которые могут оказаться непонятны окружающим.

Далее сами скрипты. Очень многие скриптовые языки позволяют писать двумя способами: быстро, рационально, но нечитаемо или долго, неоптимально, но читаемо. Надо ли говорить, что чаще всего превалирует первый подход, особенно среди админов-«староверов», которые не используют современные среды разработки с синтаксис-помощниками и автодополнением, а ваяют скрипты буквально на коленках.

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

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

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

А вот и нет, пакет тащить нужно, потому что пакет - это ожидаемые конфигурация и поведение системы, в отличие от скрипта. И не важно, что это не красиво, не оптимально, не эффективно, не соответствуем вашим религиозным воззрениями (нужное подчеркнуть).

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

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

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

Любое нестандартное решение – это дополнительные затраты на поддержу (часто косвенные) и дополнительные риски, связанные с нестандартностью. Во многих случаях абсолютно неуместные.

А желание отдельных сотрудников использовать собственные костыли к месту и не к месту заставляет серьезно задуматься в плане их профпригодности, причем не в техническом плане (тут обычно все в порядке), а в способности работать в коллективе и ставить общественные интересы выше собственных.

Ну а мораль сей басни проста: если есть стандартные и общепринятые решения – то следует их использовать, даже если вы можете за пять минут левым задним копытом набросать скрипт «в 1000 раз лучше».

Ну или пишите и выкладывайте его на GitHub и когда его начнут включать в дистрибутивы и использовать массы – тогда можно будет использовать его как стандартное решение.
👍20👎63🤮2🔥1
За одного битого двух небитых дают. Часть 1

Эту заметку прислал мой коллега с Урала и попросил опубликовать анонимно. История в сотню крат отражает классические грабли во взаимоотношениях ИТ и бизнеса. На мой взгляд — максимально поучительно.

Далее повествование от первого лица. Имена и места действия изменены.

В то время я был относительно молод, тридцать с небольшим. Работал на заводе системным администратором. Зарплата — не фонтан, зато стабильная, да и работой особо не заваливали. Плюс стандартные плюшки: соцпакет, предсказуемый отпуск и спокойствие. Жена как раз ушла в декрет, поэтому «синица в руках» была всяко лучше журавля, хоть временами и приходилось туго затягивать пояса.

Как-то вечером в своем районе я встретил одноклассника Сашу. Друзьями мы никогда не были, но несколько лет просидели за одной партой. Саша звезд с неба не хватал: занимался стройкой и ремонтом, а к моменту встречи открыл с компаньонами бизнес. У них было несколько строительных магазинчиков формата «все у дома» под управлением Саши и крупная торговая база за городом, которой рулили его партнеры.

Саша предложил подработку: автоматизировать магазины и настроить там нормальный учет. В свободное от завода время я как раз баловался программированием на «1С» — брал заказы на фрилансе, да и на основной работе по мелочи писал отчеты и обработки.

Понеслась. Задач подвалило много, и все интересные. Платил Саша исправно, и вскоре этот проект начал приносить мне вторую полноценную зарплату. Жить стало веселей.

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

1️⃣ Ошибка первая: Работа «как для себя». Я глубоко вникал в процессы и дорабатывал систему под нужды линейных сотрудников, чтобы сделать их работу проще и быстрее. Но делал это молча: никак не фиксировал, не афишировал, да никто с меня отчетов и не требовал. Всех все устраивало, деньги платились.

2️⃣ Ошибка вторая: Отсутствие учета задач. Никакой работы с обращениями не было. Проблемы решались по звонку или через удаленку в режиме «потушить пожар». Я просто брал фиксированную абонентскую плату в месяц с каждой торговой точки.

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

Задачи стали масштабнее, количество моих подопечных увеличилось раза в три. И вот тут начались настоящие проблемы. То, что идеально работало на маленькой сети, где все знали друг друга по именам, при масштабировании мгновенно сломалось.
 
Продолжение истории вечером…
👍128🤔5🥱4👌1
За одного битого двух небитых дают. Часть 2

Проблемы стали расти как снежный ком. Они больше не купировались на нижнем уровне, а летели прямиком к руководству. С программой тоже начался ад. Не секрет, что УТ 11 — конфигурация весьма специфическая. После древней, но понятной ТиС 9.7, которая стояла там раньше, глухое недовольство пользователей было абсолютно ожидаемым.
 
Контора бурно росла, появлялись новые люди. Меня они видели впервые, поэтому быстро предложили руководству: «А давайте позовём независимый аудит?»
 
В качестве «независимого светила» нашелся ведущий преподаватель местного учебного центра «1С», обвешанный сертификатами по самое не балуйся.
 
На встрече он разнес меня в пух и прах: «Всё написано не по методикам! Конфигурацию тупо изуродовали! Для чего это сделано? Зачем?» А я сидел, обтекая, и мотивированно ответить мне было нечем…
 
К счастью, собственники бизнеса оказались парнями хоть и простыми, но далеко не глупыми. Они предложили проверить теорию практикой: «Берем два компьютера. На один ставим "изуродованную" программу автора, на второй — чистую, но настроенную по методике эксперта».
 
«Светило» с темы технично съехало — мол, не барское это дело. В итоге оба стенда я собирал сам. Результат оказался предсказуем. Вердикт вынесли в мою пользу: «Косяки у автора есть, не без этого. Но в штатной "коробочной" версии вообще финиш — мы там соберем очереди как в мавзолей, а то, что сейчас делается за день, будет занимать неделю».
 
Когда мы вышли покурить с Сашей, я не выдержал и упрекнул его: «Чего ты сидел и молчал, пока меня ссаной тряпкой по морде возили? Обидно вообще-то. Столько впахивал, делал как для себя!»
 
И тут Саша выдал абсолютно резонную вещь, которая перевернула мое понимание ИТ-архитектуры. Он сказал, что не молчал, а слушал. А то, что я делал «как для себя» и не ставил их в известность — это огромная ошибка.
 
«Во-первых, мы понятия не имели, что в программе было изначально, а что добавил ты. Во-вторых, ты не владелец бизнеса и смотришь со своей колокольни. Максимум, что ты можешь потерять  — это сумму в месяц. Все остальные издержки лягут на меня. Ты же не будешь кормить моих детей и платить зарплату моим сотрудникам?»
 
Мне нечего было возразить.
 
С тех пор правила игры жестко изменились. Теперь все идеи, проблемы и доработки идут строго через верх, санкционируются руководством и только потом спускаются вниз. Такой подход позволяет директорам четко видеть: окупаются ли доработки и использует ли их персонал.
 
И теперь на классическое нытье линейщиков: «А тут у нас… Это… Того… Не работает!» — у руководства сразу готов ответ: «Вам под эту задачу неделю назад кнопку вывели и инструкции на почту скинули. Почему не пользуемся?»
 
Это гораздо лучше ситуации, когда сотрудники бегут жаловаться начальству, а руководство косо смотрит на админа, который «изуродовал» систему.
 
Но самый главный мой косяк был в другом: я вовремя не донес до руководства истинное положение дел на низах. Пока я героически тушил пожары в одиночку, у боссов была иллюзия, что проблем нет — ни с людьми, ни с процессами, ни с софтом. А когда при масштабировании всё это разом выплеснулось наружу, на меня вылили ушат холодной воды, и оправдываться пришлось мне.
 
Как дела обстоят сейчас:
 
1️⃣ Тотальный учет: Каждое обращение тщательно фиксируется, систематизируется и раз в месяц ложится на стол собственникам с моими выводами.
 
2️⃣ Платная поддержка: Все заявки теперь оплачиваются отдельно, и я не боюсь обсуждать их с бизнесом.
 
3️⃣ Разделение логики: Там, где виной человеческий фактор, руководство включает материальную мотивацию (штрафы/премии). Там, где можно помочь технически — я пилю доработки.
 
👆 Главный урок, который я вынес: всё, что вы делаете для бизнеса (неважно, на фрилансе или в штате), должно учитываться, документироваться и согласовываться наверху. У руководства должна быть полная картина. Иначе однажды бизнесу откроется весь пласт накопившихся проблем, а крайним сделают вас — просто потому, что вы замкнули всё на себя и вовремя никого не предупредили.
👍38🥱73🤣3
Как узнать какие пакеты установлены из какого репозитория

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

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

Чтобы получить интересующую нас информацию прежде всего выведем список подключенных репозиториев командой:
apt policy 


В ее выводе нас прежде всего будет интересовать опция «источник (origin)», которая выводится после ключа o=.

Теперь мы можем получить полный список пакетов из этого репозитория командой:
apt list ~Onginx


В данном случае указываем наименование источника сразу после ключа ~O, без пробела. Обратите внимание, что данная команда выводит все пакеты, содержащиеся в репозитории, установленные пакеты при этом помечены отдельно как [установлен].

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

В противном случае нужно будет добавить дополнительные отборы, например, добавим фильтр по только установленным пакетам:
apt list ?and\(~i\,~Oprox\)


Здесь мы соединили через логическое И два условия: пакет установлен ~i и пакет принадлежит определенному источнику ~O, также не забывайте использовать обратный слеш для экранирования служебных символов.

Также обратите внимание, что имя источника не обязательно указывать полностью, так как это регулярное выражение. Так для репозитория o=Proxmox мы использовали просто ~Oprox.

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

Статус [установлен, автоматически] обозначает что мы не выбирали этот пакет для установки, и он был получен автоматически, по зависимостям. Для больших репозиториев таких пакетов может оказаться сильно много, и они серьезно ухудшают восприятие. Поэтом добавим еще одно условие:
apt list ?and\(~i\,\!~M\,~Oprox\)


Где параметр !~M обозначает «кроме установленных автоматически». Теперь вывод команды покажет только пакеты, которые были установлены вручную из указанного репозитория.

Данные конструкции можно использовать не только с командой apt list, но и с любыми другими командами apt, например для установки или удаления пакетов. А больше информации вы можете получить при помощи:
man apt-patterns


Или обратившись к подобной информации в сети интернет.
👍152🤔2
Обновляем Proxmox Mail Gateway с версии 8 до 9

Proxmox Mail Gateway - специализированное решение почтового шлюза для фильтрации входящих и исходящих потоков почты эффективно защищающее от спама и вредоносных вложений.

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

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

Читать далее: https://interface31.ru/post/obnovlyaem-proxmox-mail-gateway-s-versii-8-do-9/
👍10
Надо еще больше золота!

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

И, как это водится последнее время, ждем аналогичных инициатив от Майл.ру.

P.S. А куда ты с подводной лодки денешься...
🤬16😁7💯1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие признаки выхода из строя можно увидеть в SMART NVMe-диска
 
NVMe-диски имеют совершенно иной, собственный SMART, разработанный для твердотельных накопителей, а не унаследованный от жестких дисков и содержит достаточно простые и понятные показатели, а также отдельный параметр Critical Warning для отображения критических состояний.
 
Но, как это чаще всего бывает, диск умирает, когда ничто не предвещает беды. Вроде и SMART отличный, а диск все равно умер. Ситуация знакомая еще по жестким дискам и сразу скажем, что SMART – это не панацея, но есть определенные параметры, изменение которых может указывать на проблемы с диском.
 
Начнем со следующей  пары:
 
🔹 Media and Data Integrity Errors - ошибки целостности данных и носителя – данный счетчик фиксирует случаи, когда информация из ячейки не смогла быть прочитана и восстановлена при помощи механизмов коррекции. Указывает на ошибки и износ памяти.
 
 🔹 Error Information Log Entries - записи в журнале ошибок – это другой тип ошибок, происходящих на уровне общения диска с внешним миром, могут указывать на кривые драйвера, плохой разъем, перегрев и ошибки контроллера и не обязательно означают неисправность самого диска.
 
Поэтому если у вас начал расти первый показатель – это повод серьезно напрячься и задуматься о дальнейшем здоровье диска. Если растет второй – то прежде всего изучите внешние условия и режимы эксплуатации, скорее всего проблема не в самом диске, а в окружающей инфраструктуре.
 
Также крайне полезно контролировать еще один параметр:
 
🔹 Available Spare -  количество запасных ячеек, в норме это значение равно 100%.
 
Есть еще один связанный параметр - Available Spare Threshold – который показывает при снижении запасных ячеек до какого количества диск выбросит критическую ошибку, разные производители устанавливают разные значения: от 1% до 10%.
 
Если же у нас вместе с ростом Media and Data Integrity Errors наблюдается падение Available Spare – то можно говорить о том, что диск посыпался и его следует заменить. Не ждите появления критической ошибки, если процесс пошел, то в какой-то момент он может начать развиваться лавинообразно и до предупреждения диск может не дожить.
 
В ответственных системах следует поставить эти два показателя на мониторинг.
👍17👌141👨‍💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍18🤮21👌1
🚀 26 лет — и уже тимлид в ИТ. Как это возможно?

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

Но путь может быть быстрее, если с первых лет учёбы получать опыт, делать проекты и работать с реальными задачами.

Как выглядит грамотный карьерный трек в ИТ — разобрали в МАП 👇

🔗 Читать
#реклама
О рекламодателе
🤡8
Zabbix – а куда делся мой ресурс SSD?

Жил был Zabbix и его судьба, как это обычно случается, была трудна. Вначале, он как Сирота Казанская жил, где придется, потом, кое-как обрел свой угол, где и обретался худо-бедно…

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

Сказано – сделано. Докупили память, новые NVMe диски, поставили Proxmox и запустили это все в эксплуатацию.

А третьего дня сильно удивились – а куда делся ресурс SSD? За четыре с небольшим месяца (131 день) кто-то скушал 79% ресурса SSD. Диски, так как серьезной нагрузки не предполагалось, брали недорогие, Kingston NV2 500 ГБ с TBW 160 ТБ.

Несложный подсчет показал, что ежесуточный объем записи на диски составил 745 ГБ и основной виновник в этом – процесс MySQL обслуживающий Zabbix. Если продолжать такими темпами, то дисков хватит еще на два месяца.

👆 Мораль? Изучайте потребности собственных приложений в ресурсах перед покупкой комплектующих, а не после. И да, диск – это расходный материал.
👍15🤡2🔥1
«Столото» — тысячи точек продаж и миллионы игроков онлайн, инфраструктура, которой нельзя останавливаться. Свой SOC у команды уже был, но число и сложность атак росли — мониторинг и реагирование нужно было усиливать.

Решением стал круглосуточный сервис F6 SOC MDR. Он не заменил внутреннюю команду, а стал её продолжением: развёрнут XDR-контур, взят под контроль внешний периметр с помощью решения ASM и бесшовно подключена действующая SIEM.

В результате — единый контур управления инцидентами и сокращение времени реакции на нейтрализацию угроз, что позволило ИБ-команде заниматься стратегией, а не разбором потока алертов.

Полная история и комментарий CISO «Столото» — на сайте
#реклама
О рекламодателе
🤮1
Почему CoW увеличивает WAF? Часть 1
 
Использование файловых систем с копированием при записи (Copy-on-Write / CoW), таких как ZFS и Btrfs, оказывает специфическое влияние на коэффициент усиления записи (WAF — Write Amplification Factor) на SSD. Из-за своей архитектуры они могут как лавинообразно увеличивать WAF, так и уменьшать его.
 
Но критичным является именно увеличение WAF, которое при непонимании происходящих процессов может привести к самым неприятным последствиям.
 
Основная причина усиления записи лежит в том, что файловые системы с CoW никогда не изменяют существующие блоки. Новые данные всегда пишутся на свободное место, а затем изменяются указывающие на них метаданные.
 
Даже при изменении одного байта запускается следующая цепочка событий:

▫️Записывается новый блок данных
▫️ Изменяется указывающий на него блок метаданных
▫️ Изменяется родительский блок метаданных, и так далее до корневого узла
 
Стоит отметить, что CoW системы оперируют достаточно крупными размерами блоков, скажем в ZFS вполне нормально увидеть блок в 128 КБ.
 
Таким образом активно пишущая база данных, скажем MySQL и оперирующая блоками по 4 КБ генерирует сотни килобайт записи на одну операцию, критически увеличивая объем реальной записи во флеш. Далее его умножит еще и сам твердотельный накопитель за счет алгоритмов уборки мусора.
 
При заполнении диска более чем на 80-85% (а при активной мелкоблочной записи и при меньших числах) происходит очередное лавинообразное увеличение WAF, потому что контроллер, не имея свободных ячеек для записи пытается на лету очищать текущие.
 
Таким образом худшие сценарии для CoW файловых систем и SSD это:

🔹 Базы данных с интенсивной случайной записью (OLTP): PostgreSQL, MySQL/MariaDB, Oracle. Постоянные мелкие транзакции (обычно по 8 или 16 КБ) и частые вызовы fsync вызывают колоссальный WAF.
 
🔹 Образы виртуальных машин: Запуск баз данных или активных ОС внутри raw-образов или qcow2 поверх CoW. Накладываются две ФС друг на друга, что умножает WAF.
 
🔹 Заполнение пула > 80-85%: В CoW-системах при дефиците места механизмы аллокации начинают тратить огромные ресурсы на поиск свободных блоков, что перегружает и ФС, и контроллер SSD.
 
🔹 Использование потребительских (Consumer) SSD: Бюджетные диски без DRAM-буфера и с агрессивным SLC-кэшированием при высоком WAF быстро теряют производительность и выходят из строя.
 
Чтобы минимизировать это явление можно использовать:

🔹 Включение встроенного сжатия (LZ4 / ZSTD). Если данные хорошо сжимаются, физический объем данных, отправляемых на SSD, уменьшается (например, в 2 раза). Это пропорционально снижает WAF. Даже с учетом накладных расходов на метаданные, итоговый износ диска часто оказывается ниже, чем на ext4 без сжатия.
 
🔹 Выравнивание блоков (Recordsize / Volblocksize). Размер блока ФС должен строго соответствовать размеру блока приложения. Если СУБД оперирует блоками по 8 KБ, то на ZFS также ставьте recordsize=8k
 
🔹 Ограничение синхронной записи. Если потеря последних 5 секунд данных при сбое питания не критична, можно установить sync=disabled (в ZFS), что уберет двойную запись через ZIL.
 
Последнее требует отдельного пояснения, так как синхронная запись не должна быть потеряна, ZFS использует ZIL (ZFS Intent Log), куда синхронные записи (fsync) пишутся немедленно. Это означает, что одни и те же данные сначала пишутся в лог (для отказоустойчивости), а затем, спустя короткое время, сбрасываются на диск.
 
Отказ от синхронной записи также позволяет более эффективно использовать:

🔹 Агрегирование записи в оперативную память. ZFS собирает все асинхронные записи в транзакции (Transaction Groups) в RAM и сбрасывает их на диск раз в несколько секунд большими линейными пачками.
 
На этом сегодня закончим, но на самом деле это только начало, в следующих публикациях мы разберем особенности, связанные с использованием виртуальных машин и снапшотов, которые тоже способны преподнести множество неприятных сюрпризов.
👍18