UEFI 環境の Windows Server バックアップのリストアについて調べることがあったので、その際のメモを残しておきたいと思います。
Windows Server バックアップのリストア
オンプレミスで実行している環境では、Windows Server バックアップで BMR (ベアメタルリカバリ) 用のバックアップをリストアする機会はまだあるかと思います。
BMR を使用したリストアを実施する際には、合わせて次のコマンドラインも思い出せるようにしておくとよいかと思います。(検証で仮想マシンを使う場合は意識しなくても問題ないですが、物理で実施する場合は意識する必要が出てきます)
サーバー機の場合は、リストア時にディスク / ネットワークを認識させるためにドライバーをインストールが必要になるケースもありますので、起動メディアの OS に対応した Windows Server 向けのドライバも用意しておくとよいかと。
「ディスクを変更せず、そのままの環境にリストア」する場合は、問題は少ないかと思いますが、ディスク構成が変わることを想定したリストアの場合、「取得したバックアップがどのディスクにリストアされるか?」を意識する必要が出てくるのではないでしょうか。
BMR によるリストアをする場合、次の情報を参照しておくとよいと思いました。
Windows Server バックアップを使用したリストアの UI はシンプルなもので、
- どのパックアップをどのディスクにリストアするか
- パーティションサイズを変更してのリストア
というようなものは対応しておらず、基本的な考え方としては「バックアップを取得した環境と同一 / 相当の環境に対してリストアする」が基本になるのではないでしょうか。
どのバックアップをどのディスクにリストアするかについては、Windows Server バックアップでのリストアディスクの選択について に記載されており、「ディスク署名を使用して、リストアディスクを決定する」という動作となっているようです。
ディスクの再構成を発生させることなく、バックアップをリストアする場合には、同一のディスク署名が使用されている状態となるため、意識する必要はないと思いますが、ディスク構成が変更される場合は、バックアップ取得時と同一のディスク署名のディスクがなくなるため、Windows Server バックアップが最適と考えられるディスクに対してリストアするという処理になるようで、どのディスクにリストアするかの制御ができない可能性があります。
BMR バックアップを取得する際には、次のようなスクリプトを実行して、
$results = New-Object System.Collections.ArrayList $volumes = Get-Volume | Where DriveType -ne "CD-ROM" foreach($volume in $volumes){ $partition = $volume | Get-Partition $disk = $partition | Get-Disk [void]$results.Add( [PSCustomObject]@{ DiskNumber = $disk.DiskNumber Location = $disk.Location PartitionNUmber = $partition.PartitionNumber Guid = $disk.Guid DriveLetter = $volume.DriveLetter FileSystemLabel = $volume.FileSystemLabel Size = $volume.Size } ) } $results | Sort-Object DiskNumber | ft -Wrap
ディスク署名の情報を取得しておくことを検討してもよいのかもしれませんね。
最近の diskpart ユーティリティは「uniqueid disk id <GUID>」でディスク署名を変更することができるようになっていますので、
- バックアップ取得時と異なるディスク署名のディスクに明示的にリストアしたい
- 新しいディスクにリストア
- ディスク ID 0 に C ドライブをリストア
というような場合には、ディスク署名の明示的な書き換えを行う必要が出てくるのではないでしょうか。
リストア後にWindows Server バックアップの MMC が起動しなくなる
リストアを実行した後に、Windows Server バックアップの MMC (wbadmin.msc) を実行したところ、致命的なエラーが表示され、MMC が使用できなくなるという事象が発生しました。
これについては Windows Server Backup で回答が記載されており、wbadmin を使用することで解決することができます。
「wbadmin delete catalog」を実行し、カタログを削除することで、MMC を起動することができるようになりました。
Windows Server バックアップのカタログについては、バックアップ取得先だけでなく、「C:\System Volume Information\WindowsImageBackup\Catalog」にも格納されており、上述の delete catalog を実行すると、この情報の削除が行われ、MMC が起動できるようになります。
カタログを削除すると、OS 上からはバックアップが取得されていないとみなされますが、回復時にバックアップを取得したドライブを選択することで、バックアップ取得先のカタログを使用してバックアップファイルの認識はできますので、カタログを削除しても基本的な操作として回復ができなくなるということはないかと思います。
SQL Server と VSS
SQL Server で Windows Server バックアップを使用する場合、VSS (Volume Shadow Copy Service) と連携がされるので、VSS の動作を意識しておく必要があります。
情報として意識しておく必要があるのが、スナップショット作成ワークフロー です。
SQL Server でスナップショットと連携する場合「Freeze IO」「Thaw IO」という IO のフリーズと再開が自動的に実行されています。
SQL Server の ERRORLOG を確認すると、I/O frozen というようなログが出力されていることを確認できます。
このタイミングでは瞬間的に I/O が凍結されていますので、このタイミングで DB へのアクセスでエラーが発生しているのであれば、VSS による I/O の凍結を疑うのも重要ではないでしょうか。