Windows Server 2016に”記憶域スペースダイレクト”(S2D)と言う機能が実装されました。
(技術的にはフェールオーバークラスタリング機能がベースとなっています)
これは、各サーバーにマウントされたディスク(DAS)を、仮想ストレージプールとして共有し、各サーバー間でデータを同期する事ができるのです。いままで、Azureでは、難しかった共有ストレージっぽい環境が作成できるのです!!
共有ストレージを利用することで、仮想マシンを増設(スケールアウト)できるので、耐障害性を高めると共に、リソース(CPU,Mem,NIC,Storage)の増強も図れます。
ディスク構成について
①すべてSSD(Premium Storage)。パフォーマンス重視
②すべてHDD(Standard Storage)。容量重視
③SSD+HDD混在。キャッシュとしてSSDを利用 ※Azure上では構成できません
ちなみに、キャッシュディスク容量は、保存容量に含まれません。
ディスク冗長について
①双方向ミラーリング:2台構成の場合。IOPSを求めるならコレ。容量効率50%
②3方向ミラーリング:3台構成の場合。上記よりさらにSLAが高い構成。容量効率33.3%
③デュアル パリティ(消失訂正符号):4~16台の場合。容量効率50~80%
※Azureの場合、ホットスペアの考慮は不要
“サーバー” “キャッシュディスク” “キャパシティディスク”どの箇所に障害が発生しても影響は同じです。下記の場合、3方向ミラーリング、デュアル パリティでもデータがロストします。
それでは、やってみましょ~
今回は、2台構成のファイルサーバーを構築していきます!
先ずは、Azureでの環境を構築します。
・リソースグループ
・仮想ネットワーク
・ストレージアカウント(Quorum Disk用)
・仮想マシン(Active Directory) x2 ※オンプレでも可
・仮想マシン(ファイルサーバー用) x2
※仮想マシンあたり、2つ以上の追加ディスクが必要
※可用性セット、静的IP、ドメイン参加、Managed Disk対応
以下、仮想マシン(ファイルサーバー用) で実施。管理者権限でPowerShellを起動
※赤字は環境に合わせてください。
変数にノードを登録”FS01″ “FS02″はファイルサーバーのホスト名
$nodes = (“FS01“, “FS02“)
役割をインストール
icm $nodes {Install-WindowsFeature FS-FileServer}
機能をインストール
icm $nodes {Install-WindowsFeature Failover-Clustering -IncludeAllSubFeature -IncludeManagementTools}
構成の検証を実施
Test-Cluster -node $nodes
クラスターの作成。クラスタ名とVIPを設定。DNSに登録される。
New-Cluster -Name FS_Cluster -Node $nodes -NoStorage -StaticAddress 10.0.18.99
スプリットブレイン対策のための、クォーラムディスク(BLOB)を指定
Set-ClusterQuorum -CloudWitness -AccountName blob01 -AccessKey PKpPb15Q==
記憶域スペースダイレクトを有効化し、接続済みのストレージを仮想プールに追加
Enable-ClusterS2D
仮想プールから仮想ボリュームを作成
※残念ですが、シンプロビジョニング機能はありません。
New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 1024GB
[ボリューム拡張方法]
Get-VirtualDisk VDisk01 | Resize-VirtualDisk -Size 2TB
$VirtualDisk = Get-VirtualDisk VDisk01
$Partition = $VirtualDisk | Get-Disk | Get-Partition | Where PartitionNumber -Eq 2
$Partition | Resize-Partition -Size ($Partition | Get-PartitionSupportedSize).SizeMax
クラスタの役割を[スケールアウトファイルサーバー]に設定。DNSに登録される。
Add-ClusterScaleOutFileServerRole -Name FS -Cluster FS_Cluster
共有ディレクトリ”Data”を作成
New-Item -Path C:\ClusterStorage\Volume1\Data -ItemType Directory
ファイル共有”Share”を作成
New-SmbShare -Name Share -Path C:\ClusterStorage\Volume1\Data
それでは、接続してみましょう!
クラスター名”FS”、共有名”Share”で接続できました。
名前を引くと、ラウンドロビンでIPを返答するので負荷分散が可能
おまけ
SSD+HDD混在構成ができない理由
キャッシュディスクを指定するには、”ディスク名”を指定する必要があるのですが、Azure上の仮想ディスクの場合、すべて同じ名前(Virtual Disk)となり指定する事ができません。
※赤枠が追加ディスク ぜ~~んぶ同じ名前だよ!!
ちなみに、キャッシュディスクを作成するコマンド
Enable-ClusterS2D -CacheDeviceModel “Virtual Disk”
※指定したディスクをキャッシュディスクとして、残りをキャパシティディスクにする。
最後に、
記憶域スペースダイレクトは”RDMA”を推奨しています。ユーザーアクセス以外に、サーバー間でのデータ同期が発生するので、ネットワークパフォーマンスは重要なのです。
RDMA対応のNICと言えば、”Mellanox ConnectX”が対応しております。
ここで、ピンと来た方は “くらう道” 熟読者です!
Azure上の仮想マシンで”Mellanox ConnectX”を利用する方法がありますよね~
「まさにチート技 「SR-IOV」を試す!!」で書きましたが、仮想マシンから直接NICを利用する事ができます。
あともう一つ”ReFS”を推奨しているので、仲良くお付き合いしましょう!