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

Недавно я отмечал, что DPM - синоним слова "проблема". Лишний раз убедился в этом, только на этот раз в связке с серверами SQL. Бекапить SQL-базы можно по-разному. Можно сделать полный бекап всего, и делать его раз за разом. Долго, много места. Можно делать полный бекап, а за ним цепочку инкрементов. По времени будет гораздо эффективнее, хотя процедура восстановления будет слегка сложнее, чем просто развернуть полный бекап. Запись немного о другом.

Мониторинг выкинул предупреждение - на SQL-сервере на системном диске кончается место. Посмотрели, реально заканчивается, 15% от всей емкости. При этом ничего нового на серваки не ставилось. Ок, windirstat в зубы и смотрим, куда место ушло. А ушло оно под базу данных. Оставлю вопрос о том, почему база была на системном разделе (сам прекрасно знаю, что так не делается). Смотрим, что там место скушало. Оказалось, распух ldf-файл. Но позвольте, у нас же бекапы настроены. Каждый день эти базы бекапятся, и без ошибок. Значит, логи должы были отсекаться.

И вот тут на сцену выходит DPM:

В терминологии DPM синхронизация - это и есть инкрементальный бекап, во время которого отсекается журнал транзакций. Любой, повторюсь, любой админ настройки синхронизации в этом окне читает следующим образом: мне дают выбор - делать инкрементальный бекап через равные промежутки времени, либо делать каждый раз прямо перед снятием полного бекапа (которым является Express Full Backup, но это в приближенном виде, на практике чуть сложнее). И проблема в том, что на самом деле работает все не так! Ни в одном абзаце документации по DPM не сказано, что если выбрать в данных настройках значение Just before recovery point, DPM не будет делать бекап логов транзакций. Вместо этого он стащит с сервера SQL изменившиеся блоки в файле самой БД, сольет их с репликой на сервере DPM, после чего на основе получившихся данных сделает очередную точку восстановления. Хотите нормальные инкрементальные бекапы - ставьте регулярную синхронизацию через определенные интервалы времени, это единственный вариант.

В сухом остатке проблему с распухшими логами решили так. Сняли полный бекап базы (бекапов много не бывает), затем саму базу перевели на использование модели восстановления Simple. Затем штатная операция Shrink на файле журналов, который тут же ужался до каких-то 4-5 мегабайт. После чего база снова переводится на обычную для нее модель восстановления Full, а в настройках DPM создается новая группа защиты, в которой указана синхронизация каждые 2 часа. После этого создается новая реплика базы, по расписанию проходит синхронизация логов, и вуаля - мониторинг радостно верещит, что проблем с местом больше нет. Ну и в идеале надо бы запланировать перенос базы на другой раздел. Негоже данным болтаться на системном диске.

Уважаемые сотрудники компании MS (хотя что это я, уважением там давно уже не пахнет). До каких пор вы будете плодить в своем хваленом ПО настолько обидные косяки, что просто диву даешься, как ЭТО проходит какой-либо контроль качества. Да ладно, я задам другой вопрос - у вас в принципе QA еще осталось хоть в каком-то виде? Или ваши пресловутые эффективные манагеры разогнали эти отделы окончательно? Вашу же гребаную американскую мать, одумайтесь!

@музыка: Midnight Danger - Terror by Night

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

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

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

И вот где-то в апреле мне во время очередного разбора полетов попалась на глаза статья, где предлагалось чинить не сам файловик, а именно реплику. Потому что проблема может быть на ее стороне. DAFUQ?!, подумал я
тогда. Это же реплика, там ничего никогда не делается без ведома самого DPM, какие там могут быть проблемы? С другой стороны - во многих аспектах DPM это синоним слова "проблема", а поскольку других вариантов нет, почему-бы и не попробовать. Тем более, что админам это не стоит ничего, а пользователи вообще ничего не заметят, работа будет проходить на сервере резервного копирования, а не на файловике. Каково же было удивление, когда это сработало. Система, действительно, исправила ошибку внутри тома с репликой, после чего запуск задачи на синхронизацию реплики с источником данных дал нужный результат - Sync OK. Что ж, алгоритм действий был таким:

1. Определяем том, где лежит пораженная реплика. Для этого в DPM открываем свойства источника данных по ссылке Replica Path: Click to view details. Нам покажут окно с примерно следующей информацией:

D:\ on FS1.DOMAIN.COM c:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\Volumes\Replica\File System\vol_48342fb3-5e1f-43b9-b1a3-641aea404c23\8b28e1f0-0e38-4c4c-a1b8-af5881f4a4bf\Full\

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

c:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\Volumes\Replica\File System\vol_48342fb3-5e1f-43b9-b1a3-641aea404c23

Именно по этому пути DPM будет искать реплику при любых операциях с оной.

2. Исходя из найденного пути нужно определить, на каком томе лежит нужная нам реплика. Тут все просто - mountvol. Выводим список всех точек подключения и смотрим, где появится найденный путь. Наша цель - идентификатор тома примерно такого вида:
\\?\Volume{GUID}

3. После того, как найден том с репликой, выполняем проверку этого тома на наличие ошибок и их коррекцию:
chkdsk /f \\?\Volume{GUID}
Процесс займет какое-то время, после чего в результате получаем стандартный вывод команды chkdsk о том, что система нашла проблемы в структуре файлов внутри реплики и исправила их.

4. Финальный шаг - синхронизация отремонтированной реплики с источником данных. Штатная команда самого DPM, расписывать которую здесь смысла нет.

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

Однако, есть еще кое-что, чего хотелось бы избежать. Правильно, слишком много ручной работы. А потому пришла мысль обернуть все это (ну или почти все) в powershell-скрипт. На входе он принимает путь к файлам с репликой (все та же строка вида c:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\Volumes\Replica\File System\vol_48342fb3-5e1f-43b9-b1a3-641aea404c23\8b28e1f0-0e38-4c4c-a1b8-af5881f4a4bf\Full\, а на выходе отдаст сообщение:
Use: chkdsk /f \\?\Volume{найденный GUID}

После чего уже запускаем проверку реплики и синхронизацию.

Скрипт ниже. Надеюсь, кому-то он будет полезен.



@музыка: Midnight Danger - The Last Day

@темы: PowerShell, DPM

We rise up for the things we believe in over and over again
Заголовок записи - это название одного из поистине бесценных кусочков моей фонотеки. Ниже я расскажу, почему так, а сама композиция - вот она:


Львиную долю тех чувств, что вызывает прослушивание того или иного трека составляют воспоминания, которые волей-неволей всплывают в мозгу слушателя. И для меня эта композиция является проводником не только в ту игру, откуда она взята - Punishing: Grey Raven. Все гораздо интереснее. Пойдем по порядку:

1. 0:00 - 0:38. Как бы это странно ни было, но первый кусок отсылает меня не вовсе не в PGR, как можно было бы предположить. Нет, здесь мы отправляемся в Deus Ex: Human Revolution, в местный China-town :)

2. 0:39 - 1:51. Эта сам PGR. Много тут не скажешь, это надо просто прочувствовать своими пальцами, когда играешь.

3. 1:52 - 2:28. Ад, боль и унижение. Знатоки сейчас заржут - это Code Vein. А именно бой с Мечницей и Пушкарем. За всю мою игровую жизнь было ровно два случая, когда для успешного прохождения какой-либо арены мне пришлось выключить всю музыку, оставив только те звуковые эффекты, что помогают ориентироваться в пространстве. И именно этот поединок - один из них (про второй я напишу позже в каком-нибудь другом посте). Отвлекать не должно ничто, права на ошибку просто нет, потому что любая оплошность - и тебя тут же огреет мечница, введя в стаггер, после чего прилетит плюха от пушкаря, а это гарантированный полет на местный костер. Дааа, "Орнштейн и Смоуг с Алиэкспресса" ((с) Полезный бес) тогда дали моему персонажу прикурить.
К чему я это все? Единственное и главное ощущение от указанного куска композиции - чувство абсолютно полного сосредоточения на происходящем у тебя перед глазами. Все, что не относится к твоей задаче, просто перестает существовать. Ты и цель, больше ничего. И вариантов исхода всего два - ты либо победил, либо умер.

4. 2:28 - end. Единственная и неповторимая... NiER: Automata. Опять же - знающие поймут, а всем остальным лучше ознакомиться с самой игрой лично. И дело тут вовсе не в пресловутой заднице 2В.

В общем - хорошая композиция, ценная. По крайней мере для меня. Таких крайне мало, но каждая - на вес не то, что золота, но платины.

@музыка: 【Haloweak】傀儡 曲 「Punishing: Gray Raven OST - 九龙夜航」

@темы: Music, In-game

We rise up for the things we believe in over and over again
Мысль, которая долго пребывала в моей голове в бесформенном состоянии, наконец-то обрела законченность и целостность. Ну и форму, конечно же. И выглядит она так:
Я ненавижу людей.

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

Хожу я быстро. Быстрее, чем большинство пешеходов. Старые привычки умирают медленно, да. Соответственно, на тротуарах я в большинстве случаев выбиваюсь из потока, потому приходится лавировать между людьми. И одно дело, когда люди просто идут себе по своим делам, их достаточно просто обойти даже в толпе, а совсем другое - когда они сами мечутся по дороге из стороны в сторону. Вот сейчас эта... этот человек идет себе, ты уже наметился обойти его слева, как он, даже не зная, что его сейчас будут "обгонять", смещается влево по одной ему ведомой причине. Ладно, бывает, перенацеливаешься в правую сторону. И что вы думаете - зараза как будто спиной чует, что сейчас будет обгон, и тоже смещается вправо. Да чтоб тебе.
Добавляет огня тот факт, что режим работы у меня поменялся со сменного на 5/2, соответственно, людей я в принципе теперь вижу чаще и больше. Ага, самый час пик в 6 вечера. И я горю каждый гребаный раз, когда приходится идти в метро, потому что сейчас там просто орды зомбоидов.

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

Но этой записи не появилось бы, если б не один случай на прошлой неделе. Ситуация такая же - тротуар, впереди меня пешеход, которого все же нужно обойти, так как тороплюсь. И все бы ничего, но эта зараза на ходу машет руками во все стороны. Ну привычка такая у человека, что тут поделаешь. Ладно, подождал, пока будет по-свободнее, обошел его по широкой дуге... То, что сделала эта скотина, чуть не спалило меня на месте. Гад специально обогнал меня чуть ли не бегом, после чего перед мной достал телефон, набрал на ходу кого-то, и начал тарахтеть, держа телефон одной рукой, а второй культяпкой все так же махая чуть ли не на весь тротуар. И вот обходи как хочешь.

Да чтоб тебе всего.... "самого-самого самого чудесного" (c) Ёкай Они

Еще раз, красным, жирным, 72-м - Я НЕНАВИЖУ ЛЮДЕЙ!

@музыка: Unleash The Archers - Soulbound

00:48

Elden Ring

We rise up for the things we believe in over and over again
Эту игру ждали многие. Очень многие, а сообщество любителей соулсборнов весьма обширно, и очень много лет. Да, даже один год ожидания игры такого размаха - это много. И в конце концов мы все дождались. Elden Ring вышел, и сходу показал практически всему игрострою, как нужно делать ролевые игры в открытом мире. И самый главный вопрос - получили ли мы, игроки, и в частности - я, то, чего так долго и трепетно ждали? Ниже я дам ответ на этот вопрос.

И не буду томить долгими речами, а отвечу так, как уже ранее ответил в посте про Sekiro:

ДА и НЕТ


Чо за фигня, это же игра года?!

А уж совсем в завершение записи хотелось бы вам подкинуть пример великолепного творчества по миру Elden Ring. Оно того достойно!



@музыка: Aviators - We rise

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

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
Рядом сидит сетевик, отвечающий за файрволлы. Вопрос не по его профилю, но мало ли:

- Эй, сетевик!
- Чо?
- Как сделать 802.11, чтоб он не баговал?
- Ну так по-нормальному его реализовать надо.
- Дык а как по-нормальному?
- А я ебу? %)

Вот и поговорили :)

@музыка: E-Mantra - Kaleidoscope Clouds

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

We rise up for the things we believe in over and over again
Буду краток:


Если кратко - при установленном в качестве DNS-сервера адресе 8.8.8.8 сайт Diary.ru перестает открываться, так как резолвится в какие-то левые(?) IP-адреса.

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

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


Все копирайты и выражения восторга уходят вот сюда: dybr.ru/blog/Mahleb/4555945

@музыка: Jeremiah Kane - All or Nothing

@настроение: Так, бл@ть!

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

We rise up for the things we believe in over and over again
Про импоротозамес (а этот процесс я уже давно называю только так и никак иначе) уже писали много. Со вкусом. Рассказывали о таких пиздецах, о которых стороннему человеку и в голову прийти не могло. Кое-чего из подобных историй я и сам своими глазами видел. Но все это разом померкло после решения забугорных грандов о сворачивании деятельности своих платежных систем в РФ. Да, я все про ту же новость об остановке Google/Apple/Samsung Pay в России.

Чего там греха таить - это было очень удобно. Не надо было контроллить в куче мест свои карты, достаточно было их завести в одну точку и из нее уже раздавать платежные реквизиты куда надо. Но нет, теперь привычной схеме работы пришел пушной зверек. Но! Есть же наши обласканные чиновниками всех мастей карточки мир и связанная с ними платежная система Mir Pay. Что ж, Валера, настало твое время. Зашел в Google Play, пока он еще доступен, нажал кнопочку Install, запустил...

А дальше... дальше всего один скрин - это самое первое, что меня попросило сделать приложение (и обойти это нельзя):

У меня вопрос к тем бабуинам, которые писали эту софтину: НАХУЯ?!

И вопрос к тем бабуинам повыше, которые сидят над бабуинами-программерами - может быть все таки пора становиться людьми, а не бабуинами?

@настроение: Enfrost, Enfire, Enthunder - Full Broadside!

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

We rise up for the things we believe in over and over again
И... нет. Стопудово, вы подумали, что это призыв к ныне противоборствующим России и Украине. И вы ошиблись, запись эта вообще не про них. Я лишь хочу сбросить накопившийся пар в адрес группы людей, которых я ненавижу от всей души.

Зуммеры со смартфонами, я к вам обращаюсь!

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

Серьезно, приспичило тебе посмотреть, что там в очередной раз накорябали в твоем чатике или канале - остановись, спокойно прочитай и иди дальше, уже видя, куда прешь. ОСТАНОВИСЬ, СУКА! Ну или будь готов, что когда-нибудь тебе все же прилетит. Возможно, фатально.

@настроение: Enfrost, Enfire, Enthunder - Full Broadside!

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

We rise up for the things we believe in over and over again
Пусть это будет последняя запись, перед тем, как данный дневник сочтут экстремистским, непатриотичным и прочее-прочее. Но я должен привести эту цитату.

“Violence is the last refuge of the incompetent.” (с) I. Asimov

И это относится ко всем сторонам конфликта.



@настроение: Enfrost, Enfire, Enthunder - Full Broadside!

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

We rise up for the things we believe in over and over again
Идея этой записи витала в голове довольно давно. Да, в моей голове настолько пусто, что тем немногим мыслям, что там еще не перевелись, есть место, где можно полетать, поискать таких же неудачниц %) И выражается она довольно простым определением - разочарование. Впрочем, это совсем кратко, не бойтесь, сейчас будет подробнее.

В одном из интервью небезызвестный всей игровой тусовке Джим Райан заявил буквально следующее: "Мы (SIE) верим в поколения". А параллельно с этим декларировал в качестве основного курса компании выпуск ААА-блокбастеров, в которых геймеры будут резаться с удовольствием, после чего превозносить как игроделов под крылом Sony, так и самих Sony до небес и даже выше. Нет, пока что отставьте пулеметы, критиковать этот подход я не собираюсь - вполне себе жизнеспособная бизнес-модель, годы существования которой вполне себе говорят об ее успехе. Нет, запись эта посвящена как раз тем самым блокбастерам.

Безысходность, мрак, тлен...

@музыка: Punishing Grey Raven OST

@темы: Этот безумный мир, In-game, Random Thoughts

We rise up for the things we believe in over and over again
Буду краток:

А где тогда integer'ы, double'ы и прочие boolean'ы? XD

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

We rise up for the things we believe in over and over again
С утра -20 на градуснике, и солнце вовсю. Очень редкое сочетание для этого города, так что хошь не хошь, а ползти на улицу надо, чтобы вот такую красоту за хвост поймать:





Домой заполз уже с инеем на ресницах, чего не припомню за всю свою жизнь. Холодно, блин. Но пофиг, I regret nothing!

@музыка: ES Posthumus - Nara

@темы: TTL

We rise up for the things we believe in over and over again
Хоть в Arknights я уже и не столь активно играю, как раньше, но этот мир меня отпускать не хочет. А потому заказал себе довольно симпатичный кейс для смарт-карты, которая является пропуском на работе. Выглядит кейс вот так:

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

@музыка: Arknights OST - Ancient Forge

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

We rise up for the things we believe in over and over again
Сижу на работе, воюю с одной из покоцанных врагами информационных систем, фоном на ноуте распинается Красный Циник с его обзором на 9-й фильм по звезданутым войнам. Заходит коллега сменщик, бросает взгляд на ноут и задает традиционный вопрос-шутку нашего отдела:

- Что, порнуху смотришь, пока никого нет?

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

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

We rise up for the things we believe in over and over again
Минус один год жизни. Минус несколько людей в кругу общения, это уже традиция.

Было ли что-то в плюсе, окромя игр? Да, в основном - знания. И это уже неплохо.

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

Rise up on your feet when you're falling over and over.
Rise up for the things you believe in over and over again!


Счастливого Нового Года! С праздником всех нас!

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

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

Суть такова. Есть файл с данными следующей структуры:

Иванов
Иван
Иваныч
+7 (999) 9998822 [email protected] Главный
бухгалтер
Петров
Петр
Петрович
+7 (999) 9997766 [email protected] Главный
инженер
Сидоров
Сидор
Сидорович
+7 (999) 8887766 [email protected] Главный
специалист

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

Как быть? В принципе, алгоритм прост - цепляем строку, где есть электропочта, закидываем эту почту в массив в поле email, затем отсчитываем от этой строки три вверх и из них составляем ФИО, которое закидываем в тот же массив в поле FIO. Ну и повторяем это до тех пор, пока будут перебраны все строки с электропочтой.

Для этой задачи в Powershell есть всё - и match для вычленения электронного адреса, и select-string, при помощи которого можно получить номер интересующей строки. Но не обошлось без странностей. Прекрасно известно, практически все функции, работающие с какими-либо коллекциями, нумеруют элементы этих коллекций начиная с нуля. Каково же было мое удивление, когда после отлова багов я узнал, что тот самый select-string ведет себя по-другому - в его выводе нумерация начинается с единицы, а не нуля. Именно поэтому при составлении полного ФИО Приходится отсчитывать не три строки вверх, а четыре.

Ну и собственно, решение исходной задачи:


@музыка: E-Mantra - I shall not care

@темы: PowerShell, Scripting