Heck yeah!

Вот это совсем другое дело. Теперь мой канал в OnlyFans можно будет стримить в 8k в режиме реального времени.

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

В принципе, моя коробочка с pfSense легко потянула бы и больше — но потребовалась бы капитальная переделка всей внутредомовой сети на CAT6, апгрейд всех коммутаторов… в-общем, этот сок не стоит выжимки.

На собаках, что ли, доставляли?

Впервые на моей памяти посылка “Ю-Пи-Эс” умудрилась проездить целый месяц внутри одного города, Онтарио, что в солнечной Калифорнии (не в Канаде).

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

Корретто мне, корретто!

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

Во-первых, ещё в 2011 году Сан/Оракл наконец открыли исходники Джавы — ну, про это уже было известно. Та самая открытая Джава появилась, например, в Шапке.
А во-вторых, в 2018 году Оракл (видимо, решив поэкспериментировать с реальностью) объявил, что долгосрочную поддержку своей JDK они больше бесплатно давать не будут. А к этому моменту Джава уже работала в бесчисленных облачных и не только проектах, так что вендоры почесали репу и решили, что дешевле и проще будет разливать этот кофий самостоятельно.

И понеслась… Все начали клепать свою Джаву — и теперь у нас есть вариации от Амазона, Azul, SAP и даже самого Микрософта (!) Китайцы тоже подсуетились: теперь своя версия есть у Алибабы, Тенсента, Хуавея… Русские не остались в стороне и тоже разлили этот кофий в свой самовар; для государственных проектов существует, например, Астра JDK. В ней, к слову, есть поддержка русской криптографии ГОСТ-2012.

В общем, про Оракл (и их чудовищный сайт) нынче можно забыть как про страшный сон — бери любую Джаву, какая нравится, и используй под свои нужды. Больше нет нужды связываться с их “родной” JDK и её тупорылым, бессмысленным, и тормозным установщиком.

Для себя выбрана Амазоновская чашка под красивым названием “Корретто”. Это, если что, такой кофейный напиток — эспрессо с капелькой алкоголя, традиционно — с граппой.

Установщик их JDK отличный, продукт поставился моментально. В качестве IDE была выбрана IntelliJ IDEA CE вместо устаревшего в корягу Эклипса. Эклипс, конечно, продукт заслуженный, но застыл по развитию году примерно в 2005. Открылись старые исходники писулек десятилетней давности, и, не поверите, всё скомпилировалось и запустилось. Даже удивительно (и приятно). Современная Джава по производительности теперь, поди, ещё больше уделывает енту вашу корягу под названием “Си-плюс-плюс” 😉

Шаббат шалом

“Ящитаю” ©, что у хорошего сисадмина должен быть не только правильного диаметра, грамотно намоленный бубен, но ещё и специально обученная сисадминская ермолка.

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

Но сегодня один наш орёл решил проверить границы мироздания и перегрузил кластер виртуализации Hyper-V. ВЕСЬ. Не по одному хосту, не аккуратно и поочерёдно — а сразу всё, одновременно, чтоб наверняка.

Упало, слава Зевсу и всем богам SLA, не очень много — благо перезагрузка была ещё до начала рабочего дня. Но достаточно для того, чтобы наша мама (финдиректор) написала недоумённое:

«Ребята, у нас сегодня вообще-то зарплата начисляется. Вы там что, решили устроить приключение с утра пораньше?»

А зарплата (и наша мама) — это святое.

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

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

Хроники похудения

Вес, тем временем, преодолел отметку в 215 фунтов (~97 кг). Без бороды и прочей шерсти на теле, сбросив итого 25 фунтов (это со стартовой позиции — бывало на мне и побольше), притопали мы к тёще и тестю на День Благодарения, где были родственники, которые меня давно не видели. Меня тупо не узнали.

Было забавно наблюдать паническое состояние в глазах одного родственника, у которого на лице прямо читалось: “Я должен знать этого человека, но абсолютно не помню, кто это”. На его счастье, его супруга меня узнала (у женщин нейросетка для распознавания лиц в разы круче мужской), назвала меня по имени — и его паника мгновенно сменилась облегчением: “А, ну да, конечно же, как я мог забыть!”

Продолжаю наблюдения.

Дозу Зепбаунда, тем временем, пришлось увеличить до 7.5 миллиграм — 5mg уже не работают. Пройдено уже больше половины пути — до финального веса в 195 фунтов осталось меньше, чем уже получилось сбросить.

Современная фармакология рулит. Цыган с клубничным пирогом в гости пока не приходил (любители Стивена Кинга оценят).

Вчера FSLogix душили-душили

Запись будет интересна в основном сись-одминам. Так, заметки для себя и для своих.

FSLogix — это современная замена тому, что Microsoft раньше называл Roaming User Profiles. Самый большой их недостаток был в том, что профили хранились на контроллере домена. А контроллер — это, сюрприз-сюрприз, не файловый сервер. Нехрена на нём хранить всякий хлам, типа десктопных иконок, AppData, эскизов и прочей файлопомойки.

FSLogix работает по-другому: для каждого пользователя, логинящегося в систему, создаётся персональный VHDX-файл, который монтируется как его профиль. Хранится VHDX уже правильно — на файловом сервере. Поэтому куда бы ты ни залогинилась — хоть на физическую машину, хоть на VDI — ты везде получаешь свой рiдний профиль со всеми настройками. Для лучшего эффекта профили желательно держать на шаре, стоящей на SSD, и неплохо бы, чтобы файловый сервер был подключён, как у больших дяденек, через 10+ гигабит.

Самое распространённое применение FSLogix — фермы виртуальных десктопов. Ага, это именно туда мне недавно пришлось вписать 66 тупорылых пользователей, из которых отдельные граждане вместо .com писали .cum. Не хочу даже думать, какие сайты они до этого посещали. Мда.

Чтобы включить FSLogix, надо скачать клиент, поставить его на каждую клиентскую машину (можно через групповые политики), а затем засунуть ADMX/ADML-шаблоны в SYSVOL на все контроллеры доменов, как положено, чтобы появилась новая групповая политика.

Всё нужное берётся здесь:
https://learn.microsoft.com/en-us/fslogix/

Дальше на файловом сервере создаёшь шару (желательно скрытую $, чтобы юзвери ушастые туда не лезли), прописываешь её в политике как место хранения профилей — и алга, комсомол.

Самое сложное — настроить разрешения НА ШАРЕ ТОЧНО ТАК, КАК НАДО, иначе FSLogix будет устраивать тебе цирк с конями и каждый раз выкидывать “Access Denied”. Вот докУмент, который надо читать очень внимательно. Мне понадобилось два дня плясок с бубном и заячьей лапкой, чтобы всё наконец заработало:
https://learn.microsoft.com/en-us/fslogix/how-to-configure-storage-permissions

Для лучшей иллюстрации чувствительности прав: при правильно выставленных ACL команда mkdir на этой шаре с клиентской машины должна успешно создавать папку.
Но вот попытка создать файл (например, New-Item) должна отфутболиваться с Access Denied.
Так FSLogix и определяет, что дерево разрешений настроено идеально: директорию сделать можно, файл — нельзя. Если это поведение не совпадает — значит, права опять где-то поехали, и пора доставать бубен.

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

Котополицейский

Смерть на мягких лапах. “А глаза добрые-добрые”.

“Ну что, бурундучила… допрыгался?”

Котяра продолжает честно отрабатывать положенный ему по штату паёк. Бурундуки — это хорошо. Это почти белки. Если он и белкам устроит цугундер, будет прямо вообще красота.

Что-то с партией моей стало…

У меня на протяжении довольно длительного времени к республиканцам было отношение… ну, скажем так: с пониманием. Не фанатично, но со взглядом извне, где ценишь идею маленького государства, индивидуальной свободы и права человека самому решать, как жить, во что верить, что носить, и чем защищать свои уши на стрельбище. “Меньше правительства, больше свободы”, “оружие — это право, а не привилегия” — всё вот это вот. Нормальная такая классическая американская либертарианская песня. С припевом про Founding Fathers.

А теперь у нас вместо песни какие-то марши играют. И как бы не похожие на немецкие, годов эдак 1930-х. Как известно, у нас отменили налог на покупку оружия, подпадаемого под акт NFA, как-то: кулемёты, ручные бонбы, обрезы, глушаки, и так далее. Мне из этого всего интересны были — только глушаки, кулемёт кормить — это никаких бабок не напасёсся. Ну, и после этого группы по защите прав на оружие, включая моих любимых GOA, влепили иск — “Ребята, если налог нынче составляет нуль без палочки талеров, на каком основании вы, собственно, всё это продолжаете регулировать?”

Ну, и сегодня наш рідний Минюст под руководством Памелы Бонди (да-да, при администрации Трампа) врубил то, что обычно включают демократы: Commerce Clause и Necessary and Proper Clause. То есть буквально говорит: “А знаете, Конгресс вообще может почти всё, если мы назовём это исполнением федеральных полномочий”.

И это уже не про глушаки или обрезы. Это про то, что партия, которая годами кричала о “чрезмерном вмешательстве федерального правительства”, теперь сама бодро объясняет суду, что у федерального правительства руки-то длинные, и, вообще, не мешало бы их ещё удлинить.

А теперь внимание — парадокс.
Я-то, как нормальный стрелок, хочу просто иметь возможность защитить свои уши. Это не про кулемёты с бонбами, и не про какие-то экзотические штуки. Это про маленькую железную банку, которая делает “бах” менее похожим на взрыв бомбы. В Европе это покупается без всяких форм, отпечатков пальцев, и регистрации — просто как “защита органов слуха”.

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

И тут я ловлю себя на неприятной мысли.

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

Оказалось, нет. А там, где у GOP начинается реальная возможность уменьшить государственное вмешательство — они внезапно становятся очень даже ЗА вмешательство. Особенно если это можно продать как Законъ и Порядокъ™.

И вот я смотрю на всё это и думаю: что-то с партией моей стало.

Причём стало не сегодня и не вчера. Просто раньше как-то мы по большим количествам вопросов сходились, чем теперь. Теперь у нас вообще — реально ничего общего. Dude, where’s my party? Серьёзно, вы вообще кто теперь такие?

PS: Сегодня в GOA ушёл небольшой донат. Поглядим ещё, кто кого.

Домашне-сисадминское

Я, конечно, очень люблю TrueNAS Core. Ибо FreeBSD, и это тру. Он позволяет дома из говна и палок поднять весьма серьёзную инфраструктуру: ZFS с RAIDZ, снапшоты, репликации, iSCSI, SMB, NFS, виртуальные машины, алерты — всё это работает, и работает стабильно и предсказуемо.

Но есть у Core одно характерное свойство, которое периодически, как фи тепер тошше коффорите по-русски, анноит: чрезмерная щепетильность в отношении состояния пула.

ZFS обнаружил один бит, который не совпал? Автоматически восстановил блок из паритета? Скраб подтвердил целостность?

С точки зрения ZFS — всё прекрасно. Но с точки зрения TrueNAS — “Пул дисков нездоров! Срочно, срочно! Хватай мешки — вокзал отходит!”

Core упорно считает пул проблемным до тех пор, пока:

  1. Администратор лично не зайдёт в интерфейс или консоль,
  2. Не проверит SMART по каждому диску,
  3. Не убедится в отсутствии деградации,
  4. Не подтвердит, что ошибка была исправлена,
  5. И вручную не снимет памперсы тревогу командой zpool clear.

Даже если произошёл единичный, случайный сбой — будь то мимолётная проблема в SATA, кратковременный таймаут контроллера, одиночный флипнутый бит в оперативной памяти (не ECC, ибо говно и палки) от обычного фонового излучения, или любая другая разовая аномалия — и ZFS полностью восстановил повреждённый блок из паритета, TrueNAS всё равно ожидает ручного вмешательства: администратор должен зайти, проверить и формально подтвердить событие.

С точки зрения надёжности подход формально оправдан: ZFS может восстановить блок, но факт возникновения ошибки — это всё же диагностическое событие.

Но на практике это приводит к тому, что после любого минимального чиха — одна исправленная контрольная сумма, один сбой чтения, одно кратковременное событие в канале передачи данных — TrueNAS сообщает о “нездоровом” пуле, и срочно требует ручной проверки.

Иногда хочется, чтобы система умела говорить проще: “Да, демоны были. Мы этого не отрицаем. Но они самоликвидировались.”

Но философия TrueNAS Core другая: каждый сбой должен быть зафиксирован, проверен и подтверждён человеком. Нравится это или нет — это часть его дизайна. Но иногда… анноит.

Сисадминско-ИИшно-рабочее

Дано: отказоустойчивый кластер Hyper-V.
Надо: обеспечить сорок рыл виртуальными десктопами на Windows 11.

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

Какие варианты решения?

Официальный RDS от Microsoft. Стоит каких-то совершенно невменяемых денег — по 220 монет за рыло (CAL, client access license)! Это, на минуточку, дороже, чем лицензия на Винду!

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

Понадобится:

Одна машинка под Linux. На неё ставим nginx, который будет работать крокодилом балансировщиком нагрузки. Цепляться люди будут именно к нему — а он будет читать список доступных виртуалок из файла available.conf, и раздавать траффик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf постоянно обновляется другим скриптом — на Python.
Этот скрипт поднимает крохотный веб-сервер на Flask, в который каждая виртуалка присылает свой статус: «занято» или «свободно».

Статус они получают с помощью встроенной команды Windows:
qwinsta | Select-String "Active"

Если выводится хоть что-то — машина занята. Дальше PowerShell-скрипт формирует JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добавляем в Task Scheduler, раз в минуту — и впердё.

Питоновский скрипт довольно замухрёжный (в хорошем смысле), и я его тут выкладывать не буду. Скажу только, что он не только добавляет свободные машины, но и чистит пул: выкидывает те виртуалки, которые заняты, либо которые не присылали свой статус в течение двух минут — потому что если виртуалка выключена, послать статус она, разумеется, не может. За этим надо следить.

Всё это было придумано и реализовано при помощи Кейт — так я называю свою ChatGPT-чку.
Безусловно, под моим чутким руководством:

— А что будет, если виртуалку выключить?
— Ах да, сломается. Надо обновить скрипт, чтобы старые машины удалял, вот так: [код].

Получилось бы у меня всё это воплотить самостоятельно? Конечно. И не такое приходилось делать.
Но, японский бог, это заняло бы уйму времени: мне пришлось бы отдельно выяснять, как запускать Flask-сервер, как слать JSON из PowerShell, как его принимать, как менять конфиги nginx на лету, и так далее.

А тут — всё получилось буквально за пару часов.

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

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