четверг, 2 декабря 2010 г.

Система контроля версий для изменения базы данных SQL

http://www.nobhillsoft.com/Randolph.aspx


http://ru.w3support.net/index.php?db=so&id=308

среда, 1 декабря 2010 г.

Доустановка SQL 2005 Reporting Service на сервер SQL 2005 Database Engine

Возникла необходимость в доустановить SQL 2005 Reporting Service.

При установке возник Warning:



проделав по ссылке рекомендации:

ASP.NET 2.0 Переключение между 32-Bit и 64-Bit-версиями.

обнаружив, что в IIS Web Service Extentions действительно отключен ASP.NET v.2.0.50727 (32-bit) и включил его, после чего согласно рекомендаций накатил апдейт - тот который стоял на SQL 2005 - SP3:



всё -равно не смог подключиться к Reporting Service через SQL Server Management Studio, получив ошибку:

the report services instance could not be found microsoft.sqlserver.management.ui.rsclient

Просто оказалось, что его [Reporting Service] нужно ещё сконфигурировать.

Start -> All Programs -> Microsoft SQL Server 2005 -> Configuration Tools -> Reporting Services Configuration

ожидалось что, после настройки и исключения всех предупреждений:



Reporting Service наконецто заработает, ан нет - перезапуск службы SQL Reporting Service только и помог.

понедельник, 29 ноября 2010 г.

Объединение двух файлов - байтовое

Век живи - век учись:

Выкачав NetBackup 7.0 с https://fileconnect.symantec.com поначалу подумали что архивы:
NetBackup_7.0_Win_GA-zip.1of2
NetBackup_7.0_Win_GA-zip.2of2

а вот и нет - это порезанные файлы, объединяем:

copy /b "NetBackup_7.0_Win_GA-zip.1of2"+"NetBackup_7.0_Win_GA-zip.2of2" "NetBackup_7.0_Win_GA-zip.zip"

после чего распаковываем...

для объединения в *nix системах используем cat:

cat "NetBackup_7.0_Win_GA-zip.1of2" "NetBackup_7.0_Win_GA-zip.2of2" > "NetBackup_7.0_Win_GA-zip.zip"

ESX 4.1 нормально поддерживает диски от ESX 3.5

Приятной неожиданностью было при тестовом перезде LUN-ов:

Отзеркалировал луны презентованные ESX 3.5 на луны таких же размеров, и подал копии "боевых" лунов на ESX 4.1 после чего на хосте в разделе Configuration -> Storage -> Datastorage диски не появились, но были видны как LUN-ы на в Configuration -> Storage Adapters, внимание тут кажется что ESX 4.1 поведет себя привычным образом при нажатии на "Add Storage..." (в Configuration -> Storage -> Datastorage), типа покажет, что видит все луны и предложит их отформатировать как ранее не использовавшиеся (галки "Scan for New Storage Devices" и "Scan New VMFS Volumes" были выставлены при пересканировании естественно, но VMFS тома не обнаруживались всё-равно).

Все, на самом деле будет не так:
Жмем "Add Storage..." далее выбираем "Disk/LUN", и..., вот тут самое интересное:



видим, что они насамом деле понимаются с файловой системой... Next



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





После этого хранилище становиться доступным



Жмем "Browse DataStore" и добавляем гостя (виртуальную машину) в Inventory, который уже был на хранилище. Все настройки машины сохранены, вплоть до сети(vmx-файл никто не менял же ))

воскресенье, 28 ноября 2010 г.

SCO UnixWare хорошо, когда есть запасной диск с зеркальными данными системы

Случилась не приятность с ERP сервером SCO UnixWare:





в результате - выпали в

UX: init: INFO: SINGLE USER MODE
При этом клавиатура не реагировала, не хотелось грузиться с загрузочного диска и проверять файловую систему...

Благо был дик - с зеркальными данными системы(аппаратное зеркалирование встроенным контроллером HP DL580G3), который недавно был вынут, а у сервера оставлен один, конфигурацию зеркала не меняли. После установки этого винта в тот порт в который он ранее был вставлен и вынимания "сбойного" (хотя похоже там либо закончилось место, либо повредилась файловая система) система завелась нормально.

После поднятия системы - проверил нумерацию чанков - как они привязаны к существующим базам - потому что была непонятность, действительно ли конфиг чанков - то какие чанки привязаны к каким базам лежит в rootdbs или нет
Вопрос возник потому, что зеркальный диск как раз вынимали перез изменением, а точнее перед тем как сделали oninit -i - переинициализация СУБД Informix и очистка баз. Команда
onstat -d
развеяла все сомнения - всё было нормально.

Ссылки по теме:

http://www.westwind.com/reference/os-x/commandline/single-user.html

http://osr600doc.sco.com/en/SM_trouble/restroot.html

четверг, 25 ноября 2010 г.

Не IOPS-ами едиными

Странные вещи иногда происходят:

Внезапно перебежал кластер CCR MailBox Exchange 2007 с одной ноды на другую, поначалу было подумал что причина в изменении конфигурации на одной из SAN фабрик, -я фабрика SAN коммутаторов при этом не менялась и была доступна, так как софт обеспечивающий multipath-инг в SAN показывал 4 пути до диска.

По быстрому зайдя на диски презентованные с СХД (системы хранения данных) на обоих нодах попытался их открыть и на той ноде с которой пошло убегание - задержка была очень большой, видимо какое то влияние при перестроении одной фабрики было...
Предположительно что это не корректно отработал EMC PowerPath версии 5.3 build 311

Усомнило:
Далее посмотрев логи на ставшей пассивной ноде обнаружил, что отваливались обе сети:
Event Type: Warning
Event Source: ClusSvc
Event Category: Node Mgr
Event ID: 1123
The node lost communication with cluster node 'MBS-01' on network '_LAN-TEAM'.

и

The node lost communication with cluster node 'MBS-01' on network 'Interconnect-Cabel1'.

а дальше понятно:
Cluster service was terminated as requested by Node 2.

это потому что был доступен кластерный File Whitness Share

Да и позже вспомнил, что недавно устанавливал на все Exchange 2007 сервера Update Rollup 1 for Exchange Server 2007 Service Pack 3, который как раз не был установлен на узел с которого кластер сбежал...

Есть поле для размышления...

Позднее стала ясна причина всего этого оказалась что SPA и SPB - сторадж процессоры системы CLARiiON CX4-120 перестали справляться с нагрузкой, поданной на них, это стало очевидно после нарезки луна для одного из серверов и начала переноса на него данных объемом половина терабайта. При этом PowerPath показывал большую очередь к диску и текущие IO порядка 20-50 - переброс с одного процессора на другой (Trespass...) не дал результата, реальная скорость копирования достигала порядка 10 мегабайт в секунду - с диска на диск внутри сервера - с разных систем хранения. Вспомнил, что у было настроено 14 синхронных зеркалирований между системами хранения, 6 из которых были временными. Временные зеркалирования отключил, на системах, нагрузка по вводу/выводу на PowerPath Monitor сразу подскочила до 800-1300 операций в секунду (диск был на RAID5 и состоял из 8 SATA-дисков):



Скорость была более 15Гб в минуту

Также, на всякий случай, поотключал кэши чтения и записи на некритичных лунах СХД.

пятница, 19 ноября 2010 г.

Как собрать RAID на Citrix Xen Server

Конфигурирование программного RAID массива на 4х дисках, каждый емкостью 1Т.
Поключаемся к Xen через SSH/Telnet из под root.
Проверяем наличие дисковых устройств в системе командой:
ls –l /dev



Проверяем информацию о дисковых разделах:
Fdisk -l



Проверяем наличие RAID устройств зарегистрированных в системе:
ls /dev



Подготавливаем диски к созданию RAID, для этого используем последовательность команд для каждого из 4х дисков /dev/sdd/, /dev/sdb, /dev/sdc, /dev/sde:



Последовательно копируем структуру таблицы разделов с 1-го подготовленного диска на 3 остальных командой:
sfdisk –d /dev/ | sfdisk /dev/[destination disk]







Проверяем подготовленные для RAID разделы на указанных дисках:



Создаем устройство для RAID командой:
mknod /dev/md1 b 9 1
Проверка создания командой:
ls /dev



Объединяем подготовленные диски в RAID, которые автоматически распределяться далее.



Смотрим нагрузку на подсистемы во время распределения RAID – фактически максимальная нагрузка на 4 диска:



Завершение:



Создаем логический том для Xen при помощи LVM для хранения виртуальных машин на распределяемом RAID массиве:



Проверяем созданный раздел через Citric XenCenter:



Копируем конфигурацию RAID массива в файл /etc/mdadm.conf



Смотрим содержимое файла:



Смотрим конфигурацию LVM:




Использование RAID контроллеров в Linux

четверг, 18 ноября 2010 г.

Изменение размера диска виртуальной машины в ESX

Столько способов я точно не знал:

http://vmind.ru/2009/07/17/izmenenie-razmera-virtualnogo-zhestkogo-diska/

http://www.itpad.ru/?p=806&action=lostpassword

http://www.vmware.com/support/developer/vcli/

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

При попытке завершить работу компьютера появляется сообщение «Теперь питание компьютера можно отключить»


http://support.microsoft.com/kb/810903/ru

http://support.microsoft.com/kb/810903/en-us

Change collation on cluster instance after installation SQL 2008 R2

Как изменить collation(порядок сортировки) после установки SQL 2008 R2 в кластере

1.Microsoft рекомендует сделать резервные копии всех баз данных, а лучше отдетачить(Detach) и перетащить на другой сервер, что и было сделано.

Что бы посмотреть текущий Collation на инстансе SQL сервера нужно в SQL Server Management Studio выполнить скрипт:

select convert(sysname, serverproperty(N'collation'))

или зайти в свойства Инстанса->General->Server Collation

в моем случае это был: Cyrillic_General_CI_AS
а требовался: SQL_Latin1_General_CP1251_CI_AS

2.Переводим в offline ресурсы кластерного ресурса SQL кластера для SQL инстанса в оснастке Failover Cluster Management:



3.И, на ноде владельце кластерного ресурса, запускаем изменение с командной строки:

d:\SQLServer2008R2Enterprise>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME= SQLSYSADMINACCOUNTS=\ /SAPWD=SAPASSWORD /SQLCOLLATION=SQL_Latin1_General_CP1251_CI_AS


Надо сказать, что если здесь не указать /SAPWD=SAPASSWORD, как у меня и было, то ничего не получиться и придется лезть в лог C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logsummary.txt и смотреть в чем же дело.

команда завершается безответно:



4.Проверка:



Получаем, требуемое Q.E.D.

Ссылки по теме:
http://www.npo-comp.ru/faq/faq_90016239.shtml
http://www.sql.ru/forum/actualthread.aspx?tid=204089
http://social.msdn.microsoft.com/Forums/fi-FI/sqldatabaseengine/thread/ab266beb-5618-4f3a-bd4b-b9fdc7f02344
http://msdn.microsoft.com/en-us/library/ms190920.aspx
http://msdn.microsoft.com/en-us/library/ms179254.aspx

вторник, 16 ноября 2010 г.

Интересные блоги:

http://raw.ineta.ru/blogs/BlogEntrySearch.aspx?tags=Windows2008

товарищи пишут по sql и кластеризацию

ещё по HedHat cluster
http://markelov.blogspot.com/2008/12/ha-rhcs-gfs-rhel-5.html

~700 часов архивирования...

Такую цифру выдал WinRar при архивации более трех миллионов файлов (3 241 083 Files 1108 Folders - одна папка на день) общим объемом 76,1Гб(83,1Гб на диске):


Представлявшим из себя файлы мониторинга доступа к сетевым шарам - результат работы специально, написанного для этих целей мной скрипта (в течение около 3-х лет!!!):
("N1 20-секундный мониторинг доступа к файлм по сети к папке FolderName.vbs")
---------------------------------------------------------------------------------
'************************************************************
'------ скрипт показывает все открытые файлы удаленными пользователями
' по маске пути на ФС
'************************************************************
On Error Resume Next
Dim Server,file,oFileService
'------- пауза между сборами информации в миллисекундах - без учета задержки на время выполнения
Const TimeToSleep = 20000
'------- имя файлового сервера
Server = "ServerName"
'------- путь для сохранения файлов отчетов
StrOutFileName = "I:\FolderNameForSaveReports\Daily\"
'------- маска пути к открытому файлу
StrMaskPathToCheckOpenedFile = "H:\FolderNameForMonitoring"
While Not False
'------- интервал времени для сбора данных
If ( ( Hour(time) >= 6 ) AND ( Hour(time) < 23 ) ) Then
StrTimeStamp = FuncDate() & " " & FuncTime()
StrOutFileName & StrTimeStamp, StrMaskPathToCheckOpenedFile
ShowALLOpenedFileToMaskPathByRemoteUsers Server, StrOutFileName & FuncDate() & " " & FuncTime() &" открытые файлы.txt", StrMaskPathToCheckOpenedFile
'------- пауза между сборами инфы
WScript.Sleep(TimeToSleep)
Else
WScript.Quit
End If
Wend
'***************************************************************
'----------------функция----------------------------------------
'показывает все открытые файлы удаленными пользователями
' по маске пути на ФС
Function ShowALLOpenedFileToMaskPathByRemoteUsers(MyServerName, MyStrOutFileName, MyStrMaskPathToCheckOpenedFile)
Dim oFileService
Set oFileService = GetObject("WinNT://" & MyServerName & "/lanmanserver,fileservice")
'------- указатель на то, что мы первый раз добавляем строку нужен для создания самого файла отчета
FlagFirstAddString = true
'------- цикл фильтрации по маске
For Each oResource In oFileService.Resources
If LCase(Mid(oResource.Path,1,Len(MyStrMaskPathToCheckOpenedFile))) = LCase(MyStrMaskPathToCheckOpenedFile) Then
'FuncAppendOneStrToTXTFile MyStrOutFileName, oResource.Path & " User: " & oResource.User
z = oResource.Path & " " & oResource.User
'------- проверка на то, что фильтруемая строка не пуста
If Not(z = " ") Then
'------- проверка флага первой записи для создания файла
If FlagFirstAddString Then
FlagFirstAddString = False
FuncCreateTXTFile( MyStrOutFileName )
FuncAppendOneStrToTXTFile MyStrOutFileName, z '& " User: " & oResource.User
'WScript.Echo "If FlagFirstAddString Then"
Else
FuncAppendOneStrToTXTFile MyStrOutFileName, z '& " User: " & oResource.User
'WScript.Echo "If FlagFirstAddString Then"
End If
'WScript.Echo "If (z <> "") Then"
End If
'WScript.Echo "If LCase(Mid(o"
End If
'WScript.Echo "cycle"
Next
End Function
'***************************************************************
'----------------функция----------------------------------------
'создает txt - файл
'файл не должен быть создан
Function FuncCreateTXTFile(FileName)
'------------------------Константы для задания типа открытия файла
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const OverwriteTrue = True, OverwriteFalse = False, UnicodeTrue = True, UnicodeFalse = False
Const ReadOnlyDeletionTrue = True, ReadOnlyDeletionFalse = False
' Объявляем переменные
Dim objFSO, FOut
' Создаем объект FileSystemObject
Set objFSO=WScript.CreateObject("Scripting.FileSystemObject")
' Открываем выходной файл для записи
Dim File
Set File = objFSO.CreateTextFile(FileName, OverwriteTrue,UnicodeFalse)
' Закрываем выходной файл
FuncCreateTXTFile = true
End Function
'***************************************************************
'----------------функция----------------------------------------
'добавляет строчку в текстовый файл
Function FuncAppendOneStrToTXTFile(FileName, StrText)
'------------------------Константы для задания типа открытия файла
Const ForReading = 1, ForWriting = 2, ForAppending = 8, OverwriteTrue = True, OverwriteFalse = False
' Объявляем переменные
Dim objFSO, FOut
' Создаем объект FileSystemObject
Set objFSO=WScript.CreateObject("Scripting.FileSystemObject")
' Открываем выходной файл для записи
Set FOut = objFSO.OpenTextFile (FileName,ForAppending,true)
' Записываем текстовую строку в файл
FOut.WriteLine StrText' & vbcrlf
' Закрываем выходной файл
FOut.Close
FuncAppendOneStrToTXTFile = true
End Function
'***************************************************************
'----------------функция----------------------------------------
' -------- исполняе команду
Sub RunStr(StrToRun)
' ------------- Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
' ------------- Открываем созданный файл в Блокноте
Const WindowStyle = 1
Const WaitOnReturn = true
WshShell.Run StrToRun, WindowStyle, WaitOnReturn
Set WshShell = Nothing
End Sub
'***************************************************************
'----------------функция----------------------------------------
'возвращает дату
Function FuncDate()
'формирование строки даты
StrYear = Year(date)

If Month(date)<10 Then
StrMonth = "0" & Month(date)
Else
StrMonth = Month(date)
End If

If Day(date)<10 Then
StrDay = "0" & Day(date)
Else
StrDay = Day(date)
End If

FuncDate = StrYear & StrMonth & StrDay
End Function
'***************************************************************
'----------------функция----------------------------------------
'возвращает время с точ до минуты
Function FuncTime()
'TimeStr = Hour(time) & "-" & Minute(time) & "-" & Second(time)
If Second(time)<10 Then
StrSecond = "0" & Second(time)
Else
StrSecond = Second(time)
End If

If Minute(time)<10 Then
StrMinute = "0" & Minute(time)
Else
StrMinute = Minute(time)
End If

If Hour(time)<10 Then
StrHour = "0" & Hour(time)
Else
StrHour = Hour(time)
End If

'FuncTime = StrHour & StrMinute & StrSecond
FuncTime = StrHour & "-" & StrMinute & "-" & StrSecond
End Function
---------------------------------------------------------------------------------



правда уже через один 1 час 49 минут время было скорректировано и составило 150 часов:



при этом Всё время архивации составило 13,5 часов.

Некоторые пишут драйвер перехвата вызовов API - это, пожалуй более правильный вариант, но более трудоемкий и, к тому же, платные решения, как раз на нем и строятся - к примеру ScriptLogic - File System Auditor 2, который в своей работе может использовать различные СУБД, отказались от скрипта когда приобрели это программное решение. На нашем Enterprise сервере при нагрузку более 1500 пользователей рост базы составил около 3Гб в день.

Да, "File System Auditor 2" предоставляет более развитые средства отчетности поскольку база с простой логикой и можно напрямую писать скрипты в ней для вытаскивания отчетов, что мы и делали, поскольку интерфейс отчетности у него (File System Auditor 2 - Report Configuration Console) жутко тормозной, он пытается постоянно подтянуть данные без пользовательского разрешения на то, и приходиться ждать по 10-20 минут пока он это сделает для того что бы скорректировать в GUI запрос.

Но есть нюанс с которым не поспоришь - скрипт - бесплатен для мониторинга доступа к файлам по сети - частоту опроса настраиваем через шедулинг системы - указываем время как хотим, да здесь придется признать, что, если пользователь за время (у меня было - каждые 20 секунд) равное интервалу между опросами откроет папку скопирует файл и закроет папку, то мы даже и не узнаем, что был такой доступ к нему, но я решил что это невозможно, хотя если потренироваться то... (вообще это было гипотезой отчасти неверной). Просто 20 секунд это было ещё время оптимальное для снижения нагрузки, поскольку во время работы скрипта нагрузка составлял 10-15% по Диспетчеру задач, а таких "мониторингов" было несколько для разных папок, поэтому при из перекрещивании они суммировали нагрузку, что давало не малую нагрузку на процессор. Для поиска доступа достаточно было скопировать фалы за определенную дату в отдельную папку и выполнить поиск по содержимому - такое вот "наколенное" решение, но весьма приемлемое.

Кстати, самый большой минут "File System Auditor 2" это при обновлении сервера Garant, расположенного на том же файловом сервере у нас, почему то... кратковременно сбрасывались все коннекты, что для нас очень критично, поэтому во время обновления справочно информационной системы Гарант мы просто останавливали "File System Auditor 2", для предотвращения подобных инцидентов.

понедельник, 15 ноября 2010 г.

Установка Контур-Экстерн на компьютере под упралением Windows 7

ссылка про хранение ключей сертификатов:
http://otvety.google.ru/otvety/thread?sort=wsmopts&tid=4536131b5c92c1f3&pli=1

подробная инструкция:
http://www.otchet-online.ru/forum/viewtopic.php?f=7&t=1290&sid=0e6b9c93395b2feb2331b76f6bacda34

вход в систему:
http://www.otchet-online.ru/index.php?id=faq

воскресенье, 14 ноября 2010 г.

Географически распеределенный Active/Active кластер SQL Server 2008 R2, + DCT, Analisys, Reporting, но с File whitness share

ЭТО НЕ ЗАВЕРШЕННАЯ СТАТЬЯ

В прошлый раз:
http://itdmitry.blogspot.com/2010/04/ms-sql-server-2008-windosw-server-2008.html
EMC Cluster Enabler был версии 3.0.83 в этой установке версия уже EMC Cluster Enabler 3.1.0.10


Описание желаемой модели Microsoft SQL Server 2008 R2 Cluster-а, в работающего Active/Active режиме со службами MSDTC.



Здесь приведен рисунок для работы с Quorum-ными дисками, предполагал сделать их два - по одному на разных площадках, при этом так, что бы их видели обе ноды (естестенно - это же quorum),но служба кластеров Windows 2008 пока так не может - она работает только с одним кворумным диском. Поэтому пришлось обойтись File Whitness Share (файлошаровый свидетель ))) По сути мы тем самым получаем географически распределенный отказоустойчивый кластер, единственным уязвимым местом для которого становится "файлошаровый" - FWS свидетель.

Установку и настройку можно разделить на несколько этапов:

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

II.Подготовка зеркальных дисковых LUN-ов, без должной сноровки и понимания происходящего здесь тоже делать нечего. Но общий принцип следующий:
Есть две системы хранения, у которых есть одинаковые LUN-ы, между которыми настроено непрерывное копирование всех изменений (синхронная репликация посредством технологии MirrorView). Все LUN-ы с первой системы хранения мы выдаем первому узлу кластера, а все LUN-ы со 2-й системы хранения мы выдаем 2-му узлу будущего кластера. При этом добавляем дисковые ресурсы в кластер, что бы у него были дисковые ресурсы для дальнейшей установки SQL.
всего подготавливаем 2 группы LUN-ов по 4 штуки в каждой:
1.Диск для DTC (не SQL)
2.Диск под данные SQL (разместил на 8-ми FC дисках DAID 5)
3.Диск для журналов баз данных SQL (разместил на 6-ти FC дисках зеркального DAID 1)
4.Диск под резервные копии (разместил на 3-х SATA дисках DAID 5)

Предполагается каждая такая группа дисков со 2-го по 4-й для работы SQL Cluster, и каждая группа будет жить раздельно на разных нодах кластера в нормальном состоянии, при сбое сможет убежать на рабочую ноду. Таким образом мы получим два инстанса SQL, работающих на разных нодах. На узлы кластера через зоны на SAN фабриках предоставляем доступ к системах хранения, а на самих системах хранения предоставляем доступ к соответствующим лунам

После подачи LUN-ов на сервера не забыть:


теперь зайдя в Computer мы увидим:



Далее в Failover Cluster Management жмем правой кнопкой на Storage и делаем Add a disk, и отмечаем галками все наши диски для кластера:



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



III.Установка SQL в кластере(первого инстанса)
Небольшое Лирическое отступление:
Поскольку у меня установить ни SQL нормально ни DTC не получалось в схеме подготовленной на II-м этапе установке, хотя при этом использовались разные схемы, с различными последовательностями действий и методов установки (с GUI, без GUI с вариациями и отключением проверок и заменой ключа на софт) - в прямую он просто не хотел ставиться - всё упиралось в отсутствие диска - на завершающем этапе установки пассивной ноды, выскакивали различные ошибки, вида:
1-й вариант:The current SKU is invalid



2-й вариант:The setting 'ENU' specified is not recognized. Error code 0x84B0003


3-й вариант:There is no SQL Server failover cluster available to join.
4-й вариант:Element not found. (Exeption from HRESULT: 0x80070490)
5-й вариант:The setting 'FAILOVERCLUSTERDISKS' is not alliwed when the value of setting 'ACTION' is 'Install'. Error code 0x84B40005.

Причем. даже установка Cumilative Update package 4 for SQL Server 2008 R2 не помогла в решении проблемы, так что пошел другим путем.

DTC сразу проверял наличие доступного общего диска на обоих нодах и отваливался:


Итак. Схему описанную на этапе II решил подправить, поскольку EMC Cluster Enabler, как я думал "поможет" установить SQL на 2-й узел , но этого не случилось.
Исправления внесенные в схему описанную на этапе II:
Превращаем географически распределенный кластер с независимыми хранилищами в географически распределенный кластер с одним хранилищем (в одном месте), число LUN-ов при этом не меняем.
1.Не разрывая зеркал MirrorView, отключаем презентованные LUN-ы от пассивного узла
2.Подключаем пассивный узел к системе хранения на которой расположены LUN-ы активной ноды и презентуем те же самые LUN-ы, которые презентованы активному узлу кластера на пассивный узел кластера, не отключая презентацию LUN-ов для активного узла кластера, на CLARiiON-ах это делается через группы хранения:



шаг1.
Теперь установим DTC (Distributed Transaction Coordinator)



на этом шаге получаем в итоге:



шаг2.
И спокойно, без ошибок устанавливаем активный узел SQL кластера, рекомендую устанавливать дефолтовый инстанс, то есть не именованный экземпляр SQL(MSSQLSERVER), по крайней мере первый в Active/Active конфигурации:


Трижды Next.

Здесь предупреждения связанны с неправильным перечислением сетевых адаптеров и невозможностью .NET security получить доступ в интернет за файлом MicrosoftRootAuthority.crl - игнорируем их

Далее выбираем компоненты для установки, поскольку у нас есть DTC, мы можем выбрать и далее установить в кластере Analysis Servises и Reporting Servises:



Далее в окне конфигурирования экземпляра SQL указываем DEFAULT instance и вводим DNS-имя виртуального узла SQL сервера, в дальнейшем его можно будет без проблем изменить:



Далее несколько шагов в которых необходимо указать диски, которые мы отдадим виртуальному узлу кластера, IP-и группы, которым будут даны разрешения:



Далее указываем аккаунт от имени которого будут запускаться службы SQL кластера и выбираем метод сортировки(Collation):



Далее указываем пароль от sa аккаунта и пользователи с привилегиями sysadmin, а также размещение каталогов по дискам:



Далее каталоги для размещения служб Анализа:



Затем выбираем: "Insatll, but do not configure the report server."

И жмем Next/Install пока SQL не установиться на активной ноде ))))

шаг3.
Устанавливаем на пассивной ноде с командной строки, для этого нам понадобиться дистрибутив, запускаем из корня:
setup.exe /ACTION=AddNode

ключевые моменты:

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



Далее жмем Next/Install, пока не наступит Complete.

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

В "Failover Cluster Management" -> "Services and Applications" -> правой кнопкой на виртуальном узле кластера выбираем "Move this service or application to another node" -> "Move to node {NODENAME}":



шаг5.
Повторяем Шаги 1-3, только теперь указываем имя экземпляра SQL сервера и выбираем другие диски соответственно.

шаг6.
проверяем, что всё перебегает, аналогично шагу 4


IV Этап.Установка SQL в кластере 2-го(3-го, n-го) экземпляров(инстансов SQL) - всё зависит от числа узлов.
Здесь Практически всё тоже самое, но только теперь не выбираем экземпляр по умолчанию - он после Этапа III и даст уже возможности себя выбрать.

V. Превращение "кластера единой копии с одним хранилищем с географически распределёнными узлами" в "кластер единой копии с двумя географически распределенными хранилищами и географически распределёнными узлами". Ну то есть мы имеем два места (сайта) - две серверных, в одной - первая кластерная нода и первое хранилище, в другой - вторая кластерная нода и второе хранилище"
Шаг 1.
Просто берем вторую ноду (нумерация условна, просто она должна быть пассивной и все кластерные ресурсы должны быть переведены на другую) и отцепляем её от первого хранилища для этого нужно на SAN фабриках (это только для того случая, если вы используете зонирование на SAN) отключить зоны объединяющие вторую ноду и первую систему хранения,

Здесь PowerPath Monitor должен начать "кричать" показывать что ему стало "плохо" в виде перечеркнутого значка треугольника красной чертой в трее. Можно его открыть и на отключенных дисковых устройствах (LUN-ы c красными крестами) правой кнопкой сказать "Remove from Config" - эта позиция будет как раз подсвечена - выделена жирным, лучше это сделать поскольку диски у EMC работают через PowerPath, и это абсолютно другой метод multipath в сравнении с HP EVA, хотя бы, где нет такой необходимости.

Шаг 2.
Прицепляем эту вторую-пассивную ноду кластера ко второму хранилищу для этого включаем зоны объединяющие вторую ноду и вторую систему хранения на SAN коммутаторах - в каждой из 2х SAN фабрик потребуется по одной операции включения - сохранения, ждем commit, а после - включение измененной конфигурации, ждем commit(отображается внизу на странице управления зонами на Brocade DS-300, во всяком случае).

{рисунок}

Шаг 3.
Далее на второй системе хранения презентуем зеркалируемые с первой системы хранения LUN-ы.

Скорее всего на сервере потребуется перезапустить службы Navisphere Agent и набор служб для EMC PowerPath - их всех названия начинаются так(например EMC PowerPath Service 5.5.0), во всяком случае, я старался без необходимости не перегружать сервер поскольку это трата 10 минут времени (HP DL 580G5 пока он инициализирует вставленные в него девайсы проходит долгое время...).




Ссылки по теме:

http://msmvps.com/blogs/jtoner/

http://powerwindows.wordpress.com/2008/10/21/microsoft-cluster-enablers-for-srdf-and-mirrorview/

http://social.msdn.microsoft.com/Forums/en/sqlsetupandupgrade/thread/8ae0c845-b25f-4140-a655-45fdb672c71a

http://connect.microsoft.com/SQLServer/feedback/details/363036/add-node-to-sql-server-failover-cluster-failed-with-invalid-sku-error

http://forums.techarena.in/windows-server-help/1032365.htm

How to: Install SQL Server 2008 R2 from the Command Prompt:
http://msdn.microsoft.com/en-us/library/ms144259.aspx#ClusterInstall

Error Adding 2nd Cluster Node - Account Name Box Greyed Out:
http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/409baa09-de05-4496-a085-92cb5aad0cbf

How to fix your SQL Server 2008 Setup before you run setup...:
http://blogs.msdn.com/b/psssql/archive/2008/09/30/how-to-fix-your-sql-server-2008-setup-before-you-run-setup.aspx

самая лучшая статья по установке SQL cluster:
http://clusteringformeremortals.com/2009/10/07/step-by-step-configuring-a-2-node-multi-site-cluster-on-windows-server-2008-r2-%E2%80%93-part-3/

http://clusteringformeremortals.com/2009/10/07/step-by-step-configuring-a-2-node-multi-site-cluster-on-windows-server-2008-r2-%E2%80%93-part-3/


http://msmvps.com/blogs/jtoner/