DataCore SANsymphonyの基本的な構築手順

※Qiitaなので、必要な設定をできるだけパワーシェルだけですすめてみます。

##事前準備
1. BIOS、ファームウェアを最新にします。
2. Cドライブ用RAIDを組んでLU（論理ディスク）を作成します。
3. データディスク用に別のRAIDを組んでLU（論理ディスク）を作成します。
2. サーバーメーカーの推奨する手順に従って **Windows Server 2016** をインストールします。
3. 設定に先立ってドライバーを最新に更新します。

- インターネットに繋がったら必ずWindows Updateをしましょう。
- 最近は[Windows Admin Center](https://www.microsoft.com/ja-jp/cloud-platform/windows-admin-center)を自PCか1台目のサーバーに入れてます後続の作業をしています。

##Windowsの設定（それぞれのサーバーで実施）
####管理用ポートのIPアドレス設定（これ以降全ての設定値は自分の環境で置き換えましょう）
名前の変更は任意です。管理・運用・リモートデスクトップに使うポートを選んでIPアドレスを設定します。
``Rename-NetAdapter -Name "ローカル エリア接続" -NewName "MGMT"``
`` Get-NetAdapter -Name MGMT | New-NetIPAddress -IPAddress "192.168.0.1" -AddressFamily IPv4 -PrefixLength 24 -DefaultGateway "192.168.0.254"``

<details><summary>**ある程度自動化したい時の一例**</summary><div>
#####（例1）管理用ポートだけリンクアップさせておいて、リンクアップしているアダプターを設定する
``Get-NetAdapter | where Status -eq Up | New-NetIPAddress -IPAddress "192.168.0.1" -AddressFamily IPv4 -PrefixLength 24 -DefaultGateway "192.168.0.254"``

#####（例2）管理用ポートだけリンクアップさせておいて、リンクアップしているアダプター2個をチーミングしてから設定する
``$NICS = Get-NetAdapter | Where Status -eq Up``
``$TEAM = New-NetLbfoTeam -Name "MGMT" -TeamMembers $NICS.Name -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic``
``New-NetIPAddress -InterfaceAlias $TEAM.Name -IPAddress "192.168.0.1" -AddressFamily IPv4 -PrefixLength 24 -DefaultGateway "192.168.0.254"``</div></details>

####リモートデスクトップ有効化とネットワーク認証の変更
``Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0``
``Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 0``

**ファイアウォールでリモートデスクトップを許可**　　
日本語
``Enable-NetFirewallRule -DisplayGroup “リモート デスクトップ”``
英語
``Enable-NetFirewallRule -DisplayGroup “Remote Desktop”``

ここまで設定すれば続きはリモートから作業ができます。

####ファイアウォールで必須のものを許可
（検証環境であればファイアウォール自体をオフにしてもOK）
``Enable-NetFirewallRule -DisplayGroup “Windows Management Instrumentation (WMI)”``
``Enable-NetFirewallRule -DisplayGroup “リモート ボリューム管理”``
``Enable-NetFirewallRule -DisplayGroup “ファイルとプリンターの共有”``

####hostsファイルにデータコアサーバー名を追加（`tはタブです）
``Add-Content "C:\Windows\System32\drivers\etc\hosts"  "192.168.0.1`tDCS1"``
``Add-Content "C:\Windows\System32\drivers\etc\hosts"  "192.168.0.2`tDCS2"``
**※データコアサーバー間は名前解決が必須です。**

####WinRMのTrastedHosts追加
``Set-Item WSMan:\localhost\Client\TrustedHosts -Value *``

####Visual C++ 再頒布可能パッケージのインストール
Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3
**必ずx86とx64両方**インストールします。ここで再起動は不要です。
https://www.microsoft.com/ja-jp/download/details.aspx?id=53587

![image.png](https://qiita-image-store.s3.amazonaws.com/0/115778/02e449c6-3706-7f62-d29c-29b0ba77dc3a.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/115778/e79156f7-86a2-ea5d-695b-34615f51070c.png)

####コンピュータ名を変更して再起動
``Rename-Computer -NewName "DCS1" -Force -Restart``

再起動を待ちます。

####Windows Update
Install-PackageProvider -Name NuGet -Force
Install-Module PSWindowsUpdate -Force
Add-WUServiceManager -ServiceID 7971f918-a847-4430-9279-4a52d1efe18d 
Install-WindowsUpdate –AcceptAll –AutoReboot

再起動を待ちます。

##SANsymphonyのインストール
起動してきたらAdministrator（管理者権限）でログインして、あらかじめダウンロードしておいた**PSP8**のインストーラー（SANsymphonyWizard.exe)を起動します。
**実行する前に使用する全て（FC HBA,NIC含む）のポートをリンクアップさせておく必要があります。**
###DataCore Deployment Wizard（以下、略してDDW)によるインストール
ここからはGUIです。
1. まずDDWが展開（解凍）されます。![1.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/b9eca684-cb41-33f3-2d9d-384fff59f376.png)![3.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/66e99d73-9ad5-0f9b-eeb9-7c3e461ca596.png)
2. デプロイメントウィザードが起動します。
3. SANsymphonyを選択します。![4.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/24825f5d-e1dd-afa8-f12e-64f50dedd792.png)
4. High-Availability Pairsを選択します。![5.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/4d5db524-7c3c-4d0b-9878-73ee6650667c.png)
5. New High-Availability Pairを選択します。![6.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/b9dff1ab-fb4b-a5c3-9fb8-6d0d6b7f702d.png)
6. ウィザードを実行した方のコンピュータ名を入力します。![7.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/338889a7-ceeb-c2d3-cd0f-a77aa580e777.png)
7. 各ポートにIPアドレスを設定します。OS上であらかじめ設定してあればネットワークアダプター名と設定が正しいことを確認して次へ進んで下さい。未設定の場合はDHCPのチェックボックスを外してから設定値を入力します。
![14.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/27cb6800-9e29-6fa2-a673-c02f4d0c928e.png)
![15.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/35c9b8e8-6fcd-36ab-5b09-0763289d4a8d.png)
![16.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/a6727dff-ceef-8a16-e3ee-fefff0d4f1e3.png)
8. ライセンス契約に同意して次へ進みます。![20.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/8382e030-78ff-249d-f7d6-ea33124b8e41.png)
9. SANsymphony用ユーザー（DCSAdmin)のパスワードを設定します。**サーバーグループ内で統一する必要があります。**
![21.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/e74b70db-f6e2-f7f1-3329-ea69265ea1ef.png)
10. 2台目のコンピュータ名を入力します。![22.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/0451fc8d-e3ad-691a-fa67-8ee0a64b6246.png)
11. 2台目の各ポートにIPアドレスを設定します。![27.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/c5e0ce22-d2b2-7318-dae7-38ff6da78b83.png)
12. <details><summary>各ポートの役割を設定します。（各役割の解説はここを展開）</summary><div>
FrontEnd: ホストとの接続に使用します。一般的にはターゲットと呼ばれるポートです。
Mirror: データコアサーバー間の接続に使用します。
BackEnd: バックエンドの外部ストレージとの接続に使用します。</div></details>
iSCSI(イーサネット）の場合OS上のアダプター名が表示されます。
FCの場合はWWPNが表示されます。FCの場合、ポートごとの(IPアドレス設定のような）個別設定はありません。ポートごとに役割を選択して下さい。
![31.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/3470a3b4-a120-dc32-c16a-d871ff9d74cd.png)
続けて2台目の役割を選択します。
![32.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/2d5002ec-703d-5a29-afc7-cacd4dcdd872.png)
13. 設定を確認しNextを押すとインストールが始まります。まずは1台目にインストールし、自動で再起動します。
![33.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/5ac4ac03-3ed4-9c0a-012f-e1f2a4c98be4.png)
14. 1台目が起動してきたら再度ログインすると自動で続きの画面が表示されます。Nextを押すと2台目のインストールが始まり、自動で再起動します。
![34.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/58c00114-b460-f0db-4599-b4b0de20b1b6.png)
![37.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/a914e9a0-5852-9b8b-0159-6d18eac24565.png)
15. 正常に完了すると以下の画面になります。Exitで終了します。![39.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/c172a76b-84b4-4f72-3a31-a39e8f549f68.png)

###iSCSIの場合、最適化スクリプトの実行
1. [ここ](https://datacore.custhelp.com/app/answers/detail/a_id/1626/)からスクリプトをダウンロードします。
2. ダウンロードしたZIPを解凍したらiSCSI_Best_Practices.ps1を右クリックしてPowerShellで実行を選択します。
3. iSCSI***だけ***に使用されるインターフェイスを指定します（管理ポートは指定しないこと）。本番環境で兼用は非推奨ですが、もし検証・開発環境で管理やファイルサービスとiSCSIを兼用している場合そのポートは指定しないこと。
![48.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/34fc486c-9379-2501-1e89-e2a31830d33f.png)このスクリーンショットの例では3,4と入力し、Enterキー。

##SANsymphonyの初期設定
ここからはManegement Console（GUIコンソール）を使用して設定します。

1. どちらか任意のデータコアサーバーのデスクトップにあるショートカップをダブルクリックしてマネジメントコンソールを起動します。
![40.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/ea5b5949-5f43-c3c2-e6b1-4f9ffc2666c0.png)

2. そのままConnectをクリックします。
![41.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/8a3bde6d-76d7-49a4-622d-8a2032687555.png)

3. 画面右側のGetting StartedタブにあるCreate Virtual Disksをクリックします。
![43.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/46505f8e-b000-655e-037f-f1720554345f.png)

4. 名前と容量を指定してNextをクリックします。![44.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/9d76697f-f511-c889-c86f-3f2f896be749.png)

5. そのままNextをクリックします。![45.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/ffb86806-4768-4db6-8efc-fcb083bb1abc.png)

6. 設定を確認しFinishをクリックします。![46.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/2e94c51c-6ad4-4f5c-a0ad-a7e7239d85c5.png)

7. 作成された仮想ディスクを選択し、Health（緑色）になれば初期化も完了です。![47.PNG](https://qiita-image-store.s3.amazonaws.com/0/115778/7304e8e8-3095-e762-0a68-ec4cc864f17f.png)

8. 今回はここまでですが、ホストを登録してサーブすれば、あとはホストのOS側でリスキャンするとディスクが見えてきます。
詳しくはウェブヘルプの [ホスト登録](https://docs.datacore.com/SSV-WebHelp/registering_hosts_and_assigning_ports.htm#registering_hosts) と [仮想ディスクの提供](https://docs.datacore.com/SSV-WebHelp/serving_virtual_disks.htm) にそって実施して下さい。英語ですがカメラのアイコンをクリックするとスクリーンショットが見れるのでわかりやすいと思います。

#付録
##早くなるおまじない
####ライトキャッシュ設定
``Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\DcsCache\Parameters' -Name "WriteSizeStop" -Value 0``

##ポート名とアダプター名の統一
###マネジメントコンソール上での各ポート名とOS上のアダプター名を「コンピュータ名-役割と通し番号」（例:DCS1-FE1)に揃えます。アダプター名がMGMTのサーバーポートをMGMTに変更します。
それぞれのサーバーでそれぞれ下記を実行します。
後日追加。バグ発見。チーミングのVLANインターフェイスや複数IPアドレスではマックアドレスが重複しているからアダプター名が変わらない。

```
Import-Module 'C:\Program Files\DataCore\SANsymphony\DataCore.Executive.Cmdlets.dll' -WarningAction silentlyContinue
Connect-DcsServer
$SERVER = Get-DcsServer -Server (hostname)
$MGMT = Get-NetAdapter | where name -eq "MGMT" | select MacAddress
$FE = 1
$MR = 1
get-dcsport -Machine $SERVER |Sort-Object Alias | foreach {
    $MAC = $_.PhysicalName.substring(4)
    if ($_.serverportproperties.role -eq "FrontEnd"){
        $PORTNAME = Set-DcsPortProperties -Machine $SERVER.Caption -Port $_ -NewName ($SERVER.Caption + "-FE" + $FE)
        Get-NetAdapter | where MacAddress -eq $MAC | Rename-NetAdapter -NewName $PORTNAME
        $FE ++
    }
    if ($_.serverportproperties.role -eq "Mirror"){
        $PORTNAME = Set-DcsPortProperties -Machine $SERVER.Caption -Port $_ -NewName ($SERVER.Caption + "-MR" + $MR)
        Get-NetAdapter | where MacAddress -eq $MAC | Rename-NetAdapter -NewName $PORTNAME
        $MR ++
    }
    if($_.PhysicalName.substring(4) -eq $MGMT.MacAddress){
        Set-DcsPortProperties -Port $_ -NewName "MGMT"
    }
}
```