We rise up for the things we believe in over and over again

Ох и достал же меня этот экран блокировки в моей домашней лабе. Пора его отрубить. Огромное спасибо автору вот этой статьи:
How To Disable Windows Server's Auto Lock Feature - Клац!
Не знаю, удалось ли бы мне когда-нибудь самому домыслить, что за экран блокировки отвечает следующая настройка:

Computer Configuration \ Policies \ Administrative Templates \ System \ Power Management \ Video and Display Settings \ Turn off the display (plugged in)

Ставим ее в ноль и наслаждаемся результатом.

@музыка: The Offspring - Secrets from the other side

@настроение: Ну наконец-то!

@темы: Security

We rise up for the things we believe in over and over again
Да, да, я смотрю Ривердейл. На поверку вышел довольно неплохой сериал. Но вот на этих двух кадрах я ржал в голосинушку:



@темы: Этот веселый мир

We rise up for the things we believe in over and over again

Понадобилось тут восстановить случайно грохнутую папку на DFS-шаре. Shadow Copy использовать по некоторым причинам возможности нет, стало быть, придется обращаться к старым добрым бекапам. Сказано, сделано. DPM - Консоль - Восстановление - выбрать сервер - выбрать объект - восстановить в исходное расположение. Казалось бы - все просто. А вот ничерта не просто:

An existing connection was forcibly closed by the remote host (0x80072746)

И так каждый хренов раз. Ни перезапуск задания, ни перезапуск бекапера, ни перезапуск целевого сервера, чтобы обрубить "висящие" коннекты, если такие есть... Ничего не спасает. Интернет просто ломится от рекомендаций по редактированию реестра в случае такого сообщения при бекапе. Но не при восстановлении. Ожидаемо, что эти игры с реестром тоже ни к чему не привели. Ладно, шара эта лежит на DFS, а в DFS не один сервер, пробуем восстановить с резервной копии сервера-партнера. Восстановилось. Поскольку дело было ночью, а голова уже туго соображала, отложил до утра.

С утра начали мозговой штурм. Заметили странность. При первой попытке восстановления на целевой сервер удалось переслать чуть больше 2 Гб инфы, после чего соединение тушилось, но во всех последующих - десяток килобайт, и гуляйте, друзья-товарищи. Коллега, который больше моего возился с целевым файловиком тут-то и предположил - а что у нас с квотами на раздел, где эта папка лежала? Проверили - так и есть. Срабатывала жесткая квота, и сервер просто отрубал все коннекты для записи новый файлов на шару. Да твою же..... материнскую плату! Подняли квоту, дождались DFS-репилки с сервера-партнера. Case closed.

@музыка: The Offspring - Cruising California (Bumpin' In My Trunk)

@темы: DPM

11:35

Tech support

We rise up for the things we believe in over and over again
Картинка, отражающая суть работы первой линии.

Сложенные в ожидании лапки просто умиляют ^^

@музыка: Genesis - Throwing it all away

@настроение: :)

@темы: Этот веселый мир

We rise up for the things we believe in over and over again

Очень хорошая статья на тему автоматической начальной настройки гостевой ОС:
Specialize Windows Server Hyper-V guest OS automatically - Клац!
Интересна она тем, что применить изложенный метод можно не только к Hyper-V, но и к любому гипервизору, способному работать с файловой системой оффлайн-ВМ. Потому как на одном из этапов нужно будет подложить в гостевую ВМ файл с параметрами машины.

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

Первое. Засада с файлом ответов unattend.xml. В статье говорится, что ветку Autologon необходимо прописывать в этап конфигурации oobeSystem. В моем случае это не так, пришлось записать его в этап Specialize, иначе не работает.

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

@музыка: Nigel Stansord - Deep Space

@настроение: клац-клац-клац

@темы: PowerShell, VMWare, Virtualization, Hyper-V

We rise up for the things we believe in over and over again

Частенько бывает необходимо проверить сразу десяток-другой имен узлов в DNS: есть они там, нет их там, если есть - под какими адресами значатся. Каждый раз вбивать nslookup %hostname% руками - утомляет безумно. Потому набросал простенькую конструкцию:

Если узел в DNS есть - будет выведено его имя и его адрес. Если узла нет, или в процессе просмотра вылезла какая-нибудь ошибка - будет выведено только имя.

@музыка: Silence

@настроение: клац-клац-клац

@темы: PowerShell, Scripting

We rise up for the things we believe in over and over again
Вам тут лепоты завезли, наслаждайтесь :)


@музыка: Amaranthe - Afterlife

@настроение: !!!

@темы: Этот безумный мир, Этот веселый мир

We rise up for the things we believe in over and over again
Все же мои ночные рабочие посиделки - прям таки источник этих самых странных мыслей. На этот раз в мозги затесался вопрос по миру Ехо.
Как известно, пара, встретившаяся в Квартале Свиданий, проводит там ночь (да, да, шахматы и поэтессы, знаем), после чего разбегаются, как будто друг друга и не знали. И под страхом смерти им запрещено искать новых встреч друг с другом. Из-за этого Меламори и срулила в свое время на Арварох. ОК, а что будет, если гипотетическая парочка не сговариваясь снова отправится в вышеозначенный квартал, и там друг на друга снова нарвется? Кому-то по-любому кирдык, или мы имеем пусть и не очень эффективный, но все же лайфхак? :)

@музыка: Ryan Farish - Adoration

@настроение: призрак доволен, призрак ободрал еще одну стенку...

@темы: Random Thoughts

We rise up for the things we believe in over and over again
Blizzard, сами того не желая (а может быть, наоборот, с умыслом), очень тонко затроллили игроков в Diablo III. Объявили начало очередного сезона, разродившись по этому поводу очередной новостью. И в конце сделали просто потрясающее пожелание всем участникам:

Good luck, nephalem! May Kadala be generous and your deeds of valor always be remembered.

Кто не в курсе, вот откуда эта фразочка:

Да, да, друзья, это смерть в режиме Hardcore! Ну вы поняли, чего близзы нам желают %)

@музыка: Project Blue Sun - Escape

@настроение: Ыыы!

@темы: In-game

We rise up for the things we believe in over and over again

Бегать кругами по потолку можно начинать! Спасибо  banach space за наводку. Как вспомню момент прохождения последнего уровня в оригинальной игре в 4 часа утра - это был оргазм!

@музыка: Genesis - Land of Confusion

@настроение: Жду, черт побери!!!

@темы: In-game

We rise up for the things we believe in over and over again
Отсмотрел вчера нового паука. Ну, который человек-паук. Дико жалею ровно об одной вещи - что меня не вырубило прямо в кинозале, даже несмотря на то, что сеанс был сразу после моей ночной смены. Честное слово, лучше бы эти два часа потратил на сон, полезнее было бы. И без того не фанат человека-паука как персонажа, он меня выбесил еще в последних Мстителях... Но в этом фильме хотелось удавить его прямо на месте. И самое главное - не только его, а практически всех основных персонажей, кроме одного - местного глав.гада, которого просто по-человечески жаль. Особенно для меня удивительно это на фоне всех восторженных воплей по поводу нового фильма от Марвел.
Вообще, похоже, что у всех фильмов про всякую супергеройскую муть есть одна общая черта. Как только протагонист осознает, что стал обладателем каких-то суперсил, у него начисто отрубаются мозги, и весь фильм превращается в историю того, как эти самые мозги встают на место. По понятным причинам Стрела и Соколиный Глаз с милахой Вдовой громко протестуют, да.

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

@музыка: Dance with the Dead - Watching you

@настроение: много думаю...

@темы: Этот безумный мир

We rise up for the things we believe in over and over again
Небольшая подборка нарезанных в разное время скринов из разных шоу.
Смотреть

@музыка: Nicholas Gunn - Entering Twin Falls

@темы: Этот безумный мир, Этот веселый мир

We rise up for the things we believe in over and over again
Казалось бы, ну осудили уже Соколовского, вроде бы финита-ля-комедия. Нет! Надо добить.

"Федеральная служба по финансовому мониторингу внесла Руслана Соколовского, который осужден за «охоту» на покемонов в храме, в перечень террористов и экстремистов."

Такой или подобный заголовок встречается то тут, то там. Сначала не поверил, решил проверить лично. Пожалуйста! Идем сюда - www.fedsfm.ru/documents/terr-list, вбиваем интересующую фамилию и наслаждаемся результатом:

5847. СОКОЛОВСКИЙ РУСЛАН ГЕННАДЬЕВИЧ, 20.10.1994 г.р. , Г. ШАДРИНСК КУРГАНСКОЙ ОБЛАСТИ; - Действующий

Что такое "включение в список"? Блокировка всех ваших счетов с правом ежемесячного снятия средств в размере 10к. руб, на каждого члена семьи (и это если семья есть). Коли ты одиночка - вот твои 10к в месяц, и гуляй.

И самое главное - норм по выходу из этого списка в наших законах на текущий момент нет.

Думаем, делаем выводы.

UPD Внесли его еще и ранее. Но все равно, думаем и делаем выводы.
UPD 2 C баблом все интереснее. 10к отдадут сразу, остаток суммы - через пять дней. Проверять будут. Операции по зачислению на счет - в обычном порядке.

@музыка: Equilibrium - Waldschrein

@настроение: мрак, день сегодня не задался с самого начала

@темы: Этот безумный мир

We rise up for the things we believe in over and over again

«Доктор Веб»: портал государственных услуг Российской Федерации (gosuslugi.ru) скомпрометирован и может в любой момент начать заражать посетителей или красть информацию
Клац!

Читать всем до полного осознания масштаба проблемы.

@музыка: Equilibrium - Waldschrein

@настроение: мрак...

@темы: Этот безумный мир, Security

We rise up for the things we believe in over and over again

А вроде бы процессоры были, а не шмотки :)

@музыка: Nightwish - Deep Silent Complete

@темы: Этот веселый мир

We rise up for the things we believe in over and over again

Наконец-то руки дошли. Стряхнул пыль с трехсайтового домена в своей домашней лаборатории, и в одну из бессонных ночей в первом домене воткнул Exchange 2010. Чтобы был. Установка этой версии уже чуть ли не в слепую проводится. А чего там - одна PS-команда, которая все нужные роли воткнет, да пара файлов из раздела Prerequisites. Установка самого почтовика вообще никаких проблем не вызывает, все понятно и ежу.

На следующую бессонную ночь решил во второй сайт установить уже 2016 версию. Прямо в существующую организацию. Сценарий тот же - сначала в Powershell воткнуть все роли, найденные необходимые апдейты, затем сам Exchange. Не тут-то было. Не все апдейты нашлись. Дайте мне еще воооооооооон тот пакет мегов на 600. Ну ладно, чего нам, кабанам? Стащил, посмотрел на него, запустил. А он и говорит - на ЭТОЙ машине я ставиться не буду. Вот зараза. Ладно, где там раздел Prerequisites для этого апдейта? Ага, там еще пяток файлов надо. Ну хорошо, уговорил.

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

Наконец, все необходимые обновки поставлены, можно и за сам Exch приниматься. Запуск, EULA, режим установки, компоненты установки, имя организации Exchange... СТОП! Какое, к чертям, имя организации, если она уже есть? Есть-то есть, но установщик ее не видит в упор.
Ладно, быстрый гуглеж подсказал, что для полной совместимости нужно установить Exchange 2010 Update Rollup 11. Ладно, стащил, поставил. Еще на полчасика делов, еще половина очередной серии.

Повторная попытка поставить 2016 - и у нас все так же спрашивают имя организации. Мда, беда. Ладно, а что там ниже за ошибки? А ниже форменный ад: мы не видим AD. Вообще, никак. При условии, что я сижу под Enterprise-админом. Ну то есть выше уже некуда.
Вспоминаем. Лабу нужно запускать хотя бы один раз в 60 дней. Иначе будет очень много проблем в работе служб AD. Собственно, на это и нарвался. А учитывая, что у меня виртуальные машины все эти 60+ дней не то, что выключены были, а в состоянии паузы висели, представляю, какой у них взрыв мозга был, когда я их "разбудил" в прошлый раз.
Короче говоря, накрылась репликация SYSVOL через DFSR. На контроллере домена в том сайте, куда я пытаюсь воткнуть Exchange 2016, нет ни шары Netlogon, ни шары Sysvol. И это труба. Сначала восстанавливаем SYSVOL (Клац!), затем поднимаем из пыли репликацию (Клац! и смотрим на MaxOfflineTimeInDays). Проверяем, что обе шары появились, что репликация работает как надо, что в AD-Integrated DNS появились все ранее отсутствующие записи, в общем, проверяем всё! Вроде работает.

Снова запускаем установщик Exchange 2016. Чудо, эта зараза наконец-то увидела организацию, смогла выполнить /prepareAD и пошла ставить почтовик. Ура!

@музыка: Dance with the dead - Skeletons in the Attic

@темы: MS Exchange

16:07

The Expanse

We rise up for the things we believe in over and over again
Этот сериал сегодня сломал мне мозг вторично.
Первый раз - когда я увидел самую первую серию еще в прошлом году. Со времен нежно-любимого В-5 такой качественной фантастики не видел.
Второй раз - как я уже написал, сегодня. Потому что вздумалось мне освежить память по поводу всего того, что остается за кадром. А именно - физики. Мать моя женщина, да мне в школу надо заново, потому что за годы после школьной скамьи я начисто позабывал все формулы, выкладки, теоремы и прочая прочая. Дошло до того, что не сразу смог для себя сформулировать связь между скоростью, ускорением и равномерным движением.
Розоп и дытс! (с) XD

@музыка: Eluveitie - A rose for Epona

@темы: Этот безумный мир, Этот веселый мир

We rise up for the things we believe in over and over again
Уже давно, где-то со времен старой Арии и Автографа с его Казенным демоном (к этой песне у меня особое отношение), зарекался слушать что-то, относящееся к русскому Hard-or-Heavy. Особенно учитывая, что нынче подразумевается под т.н. русским роком. Как оказалось, еще не все потеряно:





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

@музыка: Земля Ветров - Война Миров

@темы: Music

We rise up for the things we believe in over and over again

Попробую собрать в кучу все свои мысли по поводу давешнего скрипта подсчета доступных лент на серверах Data Protection Manager.
Итак, что у нас имеется. Имеется жутко тормозная консоль, которая представляет в сводной таблице сведения о доступных лентах в неудобном формате: Free Tapes и Expired Tapes. Штука в том, что Free Tapes отражает общее количество доступных лент, включая просроченные (expired). И в то же время если докапываться до подробностей - сам же DPM различает эти сущности - Free и Expired. Для именно свободных лент целый пул есть, который так и называется - Free. В скрипте он фигурирует, там, где подсчитываются пустые ленты. Вот этот формат вывода информации тоже хотелось бы поменять на более вменяемый - X доступных лент, из которых Y пустых и Z просроченных.

Собственно, с подсчетом пустых лент сложностей никаких. Взять все ленты, которые есть в данный момент в библиотеке, да выбрать из них те, что принадлежат к пулу Free. Невеликого ума задача. С просроченными дело обстоит куда сложнее (ну и интереснее, теперь я уже могу это сказать).

Что такое просроченная лента? Это кассета, на которой истекло время хранения всех бекапов. Отдельного признака Tape Expired (или чего-то подобного) у объекта Tape не нашлось, стало быть, придется опрашивать непосредственно ленты. Ну, не сами ленты, конечно же, а сведения о них в базе данных DPM. ОК, выбираем все ленты, не принадлежащие к пулу Free, и относящиеся к типу "Архивная лента" (иначе в выборку попадут чистящие кассеты, а это нам не нужно). А потом в цикле просматриваем их содержимое:

Get-RecoveryPoint -Tape $Tape

С этого момента начался мой персональный ад. Когда-то давно использовался найденный на просторах интернета скриптик, который и занимался подсчетом лент, как свободных, так и просроченных. Да вот беда, неделю назад нашлось расхождение между тем, что показывает этот скрипт, и тем, что показывает сам DPM. А именно - консоль показывает ленту как просроченную, а скрипт утверждает, что на ней еще есть "живые" бекапы, и затирать ленту нельзя. Более того, лента "сдохнет" только через месяц, который, к слову, уже почти истек. Вот эту чертовщину и нужно решить.

Хорошо, давай смотреть, что у нас на такой проблемной ленте лежит. Там лежат такие же бекапы, что и везде, они прекрасно видны через Get-RecoveryPoint. We need to go deeper... Берем один из таких бекапов (они называются точками восстановления в терминах DPM) и изучаем его под микроскопом:

Get-RecoveryPointLocation -RecoveryPoint $RP

Команда выдает нам тучу объектов, которые technet называет RecoveryPointLocation, в скрипте они обозваны как RSL- RecoverySourceLocation (и не спрашивайте, почему так, я сам не до конца разобрался, что меня заставило именно так их назвать). Как я понял - это карта размещения данных в точке восстановления на кассете. И уже с вот этими объектами связаны временные метки, когда точка восстановления была сделана, когда она сдохнет, там даже отдельное поле есть - Validity. Собственно, прошлый скрипт именно на это поле и смотрел, но делал это как-то странно: он смотрел только на первую такую запись. Если она просрочена - помечал всю точку восстановления как сдохшую. И шел себе дальше.

Казалось бы, все просто - исправив пару строк пройтись в цикле по всем этим записям, и если не найдется ни одного вхождения Validity = Valid, точка восстановления должна быть признана сдохшей. Как только попадется хоть одна запись вида Validity = Valid, точку восстановления помечаем как живую и прекращаем ее обработку, перейдя к следующей. Вот тут-то расхождение в показаниях и раскрылось: на ленте куча RSL, для которых поле Validity = Valid. Но консоль же эту ленту так же упорно видит как просроченную. И вот-вот ее затрет, лишив возможности разобраться окончательно.

В попытках рассмотреть под микроскопом уже сами RSL я себе чуть не сжег остатки мозга и глаз. Везде сплошные IDшники и ничего более, буквы и цифры чуть ли не снились. Подключил коллегу, который те бекапы и настраивал. Смотрим вместе с ним, видим поле Generation. Далее диалог двух уже основательно окосевших от обилия буквенно-цифровой информации людей:

- Стоп. Поколения, это что еще за хрень?
- Ыы, там отцы и сыновья. А может ли это быть бекапом бекапа?
- Хм. Может. У нас же настроено копирование с ленты на ленту. Давай сравним поколения и временные метки.


Эх, счастье было так возможно, так близко. Но нет, для разных RSL на той ленте были "живыми" и сыновья, и отцы. Нашлись все варианты комбинаций Father/Son, Valid/Expired. То есть так просто по полю Generation тоже не отфильтруешь. Но ведь консоль это как-то делает! Да и мысль о "бекапах бекапов" покоя все не дает.

$RSL | Get-member

Покажи мне, что еще есть у этих записей. Та же куча IDшников, но в свете обсуждения копий лент глаз резанул параметр MediaMapList. Это уже интереснее. Берем одну RSL и заглядываем в нее. А там... А там ни что иное, как список ID лент, на которых лежат копии этой самой точки восстановления. Вот оно! Картина вырисовывается такая:
- берется лента, на ней читаются точки восстановления.
- берется точка восстановления, читаются все объекты RSL.
- если во всех объектах RSL в поле Validity стоит Expired - проблемы нет, лента просрочена.
- если в какой-то RSL в поле Validity видим Valid, нужно определить, что именно еще не умерло: запись на этой самой ленте, или информация на совершенно другой ленте (тот самый бекап бекапа).
- смотрим на параметр MediaMapList и получаем оттуда ID всех лент, задействованных для этой RSL.
- если среди всего там имеется ID текущей ленты, "живая" информация лежит на именно этой ленте, и значит, всю ленту помечать как просроченную нельзя. Если же среди найденного нет ID текущей ленты, "живая" информация находится на других лентах, а значит, точку восстановления на текущей ленте можно пометить как просроченную.
Вот именно последних двух шагов ранняя версия скрипта и не делала. И именно этим обусловлены расхождения в результатах. Щелкание кнопок, дописывание соответствующего кода, тестовый прогон на нескольких "подозрительных" лентах - результаты что в скрипте, что в консоли - идентичны. Прогон на нескольких серверах - все прекрасно.

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

@музыка: Земля Ветров - Моя земля (для разнообразия)

@темы: PowerShell, DPM

We rise up for the things we believe in over and over again

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

Но как бы то ни было - задача выполнена.

@музыка: Nigel Stansord - Deep Space

@настроение: Бобер - выдыхай!

@темы: PowerShell, DPM