Arcserve UDPで出来ないことのメモ 2024/04/23版

Arcserve UDPが使いたい、と言われて確認したけど、それはできないことだったんだけど、どこにもサポートしてない、という明示的な記述はなかったことをメモする。

「AWS EC2上のインスタンスをバックアップして、OSまるごとリストアする」ことはできない(エージェントなしでの話)

「Amazon S3などのブロックストレージに直接バックアップ保存はできない」

まず、公式資料について

ARCSERVE UNIFIED DATA PROTECTION 8.x ナレッジ センター
 ドキュメントについて調べる時の起点

UDP のクラウド機能の理解
 Arcserve UDPで使えるクラウド関連機能についての説明

2023/06/19追記:UDP 9.0が出ていたので「新機能および機能拡張」を確認したがこのページにかいてある項目に関連する変更は見当たらなかった

2024/04/23追記:UDP 9.2が出ていたので確認。
ARCSERVE UNIFIED DATA PROTECTION 9.x ナレッジ センター
UDP のクラウド機能の理解
Arcserve Unified Data Protection 9.x 動作要件
確認する限りでは、これまでと状況は変わっていない模様。

変更履歴

2022/07/27 初版作成
2023/06/19 UDP 9.0について追記
2024/04/23 UDP 9.2について追記

AWS EC2上のインスタンスに対してできること

・EC2上のインスタンスにUDP Agentをインストールしてバックアップすること

arcserve Unified Data Protection Support with Amazon EC2 VMs」に「arcserve UDP agent for Windows and Linux supports working on Amazon EC2 VMs」とある

ただ、「Agent for Windows ユーザ ガイド」と「Agent for Linux ユーザ ガイド」を比較すると、Linux側は明示的に書かれているが、WindowsについてはAWS EC2対応について記載されていないためサポートしているのかが不明瞭である。

・EC2上のインスタンスをバックアップして、オンプレ側にある仮想環境にリストアする

Arcserve UDP8.xのマニュアル「Arcserve UDP エージェント(Linux) の使用」に「Amazon EC2 からローカルの Linux マシンに対してマイグレーション BMR を実行する方法」というサポートしている記述がある。

AWS EC2インスタンスでは実践していないがAzureのWindows/LinuxインスタンスでUDP agent経由でバックアップしたものをオンプレHyper-V上で起動させるという検証はしたことがあるので、おそらくEC2上のWindowsインスタンスも同様にいけると思われる。

・EC2上のLinuxインスタンスをBMRを使ってリストアすること

Arcserve UDP8.xのマニュアル「Arcserve UDP エージェント(Linux) の使用」に「AWS クラウドへの Arcserve UDP エージェント(Linux)のインストール」というサポートしている記述がある。

・バックアップしたデータからファイル/ディレクトリを抜き出してリストアすること

これは、UDP Agentとしてバックアップしているので、普通にファイルリストアができる、という話である。

・EC2上にEC2 APIを使って仮想スタンバイもしくはインスタント仮想マシンのインスタンスを作成する

Arcserve UDPでは災害発生時に即座に別の場所でサーバが復帰できるように「仮想スタンバイ(Windows用)」と「インスタント仮想マシン(Linux用)」という機能がある

これを使って、AWS EC2上に別のインスタンスを作成し、そこに対してデータをリストアし続ける、ということを行える。

Amazon EC2 のクラウド アカウントの追加」にあるようにEC2アカウントを登録することで、インスタンス作成を含めて勝手にやってくれる。

・EC2上に作成されたLinuxのインスタント仮想マシンを通常のインスタンスにする

マニュアルに「Linux インスタント仮想マシンを独立した仮想マシンに変換する」という項目があるのでできるのでしょう・・・

AWS EC2上のインスタンスに対して出来ないこと

・EC2のAPIを使って、インスタンスまるごとバックアップすること

EC2上のインスタンスを、EC2 API側からバックアップするような機能は搭載されていない。

・EC2のAPIを使って、インスタンスをまるごとリストアすること

仮想スタンバイもしくはインスタント仮想マシンのインスタンスを作成する機能があるくせに、連動しないで単独でインスタンスを作成しリストアする機能は搭載されていない。

・EC2上のWindowsインスタンスをBMRを使ってリストアすること

Arcserve UDP8.xのマニュアル側には「Arcserve UDP エージェント(Linux) の使用」側には「AWS クラウドへの Arcserve UDP エージェント(Linux)のインストール」というサポートしている記述がある。

しかし「Arcserve UDP エージェント(Windows)の使用」にはクラウド上にBMRでリストアできるような記述がない。

・Amazon S3などのブロックストレージに直接バックアップできない

マニュアルに「復旧ポイントのコピー、ファイル コピー、またはファイル アーカイブのタスクを作成するときに、このアカウントを使用できます。」と書いてある。

つまり、復旧ポイントを最初に作成するときのストレージとしては利用できない、ということになり、ローカルなどで作成した復旧ポイントのコピーをクラウド上に作成する、というイメージとなる。

Azure上のインスタンスに対して出来ること

基本的にはAmazon EC2インスタンスと同様。

・仮想スタンバイの注意点

Azure blobストレージを作成して、そこにディスクイメージをまるごと保管するので料金が掛かる。

仮想スタンバイを起動する場合、Azure blobストレージ上のデータを使って、新規のインスタンスを作成する。つまり、新規インスタンス+そのストレージ料金が新しく料金が掛かる。(Azure blobストレージは残り続ける)

・インスタント仮想マシンの注意点

インスタント仮想マシンを起動する場合、新規インスタンスを作成し、そのインスタンスに対して 同じネットワーク内にあるUDP Linuxサーバを経由してデータを送り込みリストアする。

仮想スタンバイと違ってAzure blobストレージは使わないが、起動時に全リストアをかけるので時間がかかる。

テープ装置連動の注意点

・Arcserve UDPサーバとArcserve Backupサーバの2種類が必要

UDPにはテープにアクセスする機能がなく、Arcseve Backupを利用するため2種類のバックアップソフトをインストールする必要がある。

それぞれ別のMicrosoft SQLインスタンスが稼働することになる。

Arcserve UDP側が ARCSERVE_APP で、Arcserve Backup側がARCSERVE_DB

・テープには毎回フルバックアップされる

Arcserve UDPから直接テープに対してバックアップすることはできない。

Arcserve Backupを別途インストールして、そこと連動してテープに保存する仕組みとなっている。

テープに保存できるのは「復旧ポイント」という塊でのもの

Arcserve UDP側は増分でバックアップしているのだが、Arcserve Backup側でテープにバックアップする際は、全22GBが毎回バックアップされている。

UDPで毎日バックアップしているけど、テープに落とすのは週1回でいい、という場合は、まず最初のUDPバックアップのスケジュールで毎日ではなく「毎週」でスケジュールを1つつくって、それをテープに落とす、という形になる

・ファイルシステムカタログを作成するとArcserve Backup側でファイルリストア可能

Arcserve UDPのプラン設定で、ファイル システム カタログ 生成すると、Arcserve Backup側のGUIでファイルリストアができる

Arcserve BackupのリストアUIを見るとファイルツリーが確認出来る

使用するバックアップ世代も選択できる

・vSphere仮想マシンのファイルリストア取り扱いの違い

Arcserve UDPでvSphere仮想マシンをバックアップした場合、Windows仮想マシンであればArcserve UDP側でファイルシステムカタログを作成しておけば、Arcserve Backup側でファイル単位のリストアが可能。

Linux仮想マシンの場合は、Arcserve UDP側でファイルシステムカタログを作成する、と設定してもファイルシステムカタログは作成されない。Arcserve Backup側でバックアップは取られるもののリストアツリーではWindowsに分類されており、ファイルツリーは見えない

これは、おそらくArcserve Backup側でLinux仮想マシンについてのファイル単位のリストアがサポートされていないためではないかと考えられる。

Azure上の仮想マシンのディスク拡張手法 2016年1月版

Azure上の仮想マシンのディスクがいっぱいになったので拡張する必要があった。

2015年6月にやったときは、「Azure上の仮想ディスクを拡張する」の手順でやろうとしたら、Windows7のPowerShellからではうまくいかずに、WindowsServer2012R2の仮想マシンを別途立て、そこから実行して拡張した。

で・・・今回、Windows7から実行できるようになっていないかを確認しつつ手順を確認していった。

参考資料
・「How to install and configure Azure PowerShell
・「Azure 仮想マシン (IaaS VM) のディスクの拡張について

2016年1月18日時点でのポイント

・最新版のAzure PowerShellは、Githubの「https://github.com/Azure/azure-powershell」で公開されている

・最新版はversion 1.1.0。ただし、PoewrShell 1.0,2.0環境では動かない。

・インストールは「Microsoft Web Platform Installer」による統合的なインストールか、「http://aka.ms/webpi-azps」(今日時点だとWindowsAzurePowershellGet.3f.3f.3fnew.exeがダウンロードされる)による単独インストールにて行う
(古いバージョンは勝手にアンインストールしてくれる)

・ディスク拡張時は、Aazure仮想マシンは停止している必要がある

・「Update-AzureDisk」は、ラベル名も指定しないとエラーになる。
 しかも、ラベル名設定していない場合に「-Label “”」とやってもエラーになる。
 「-Label ” “」とスペースでもいいので指定しなければならない

・現状の仮想ディスクのラベル名情報を確認するには「Get-AzureDisk」で行う

・以前はサブスクリプションの選択とかストレージアカウントの選択など、面倒な処理が必要だったが
 省略できるようになっている。

実際にやった手順の概要

1. Microsoft Azure PowerShellを起動
2. 「Add-AzureAccount」で認証
3. 「Get-AzureVM」でAzure仮想マシン一覧を取得

PS C:\> Get-AzureVM

ServiceName                             Name                                    Status
-----------                             ----                                    ------
service-test                            webserver1                              ReadyRole
service-test                            sqlserver1                              ReadyRole
service-test2                           webserver1                              StoppedVM
service-test2                           sqlserver1                              StoppedVM

PS C:\>

4. 対象仮想マシンの仮想マシン情報を取得
「(Get-AzureVM -ServerName サービス名 -Name 仮想マシン名).VM」を実行する。

PS C:\> (Get-AzureVM -ServiceName servite-test2 -Name sqlserver1).VM

AvailabilitySetName               :
ConfigurationSets                 : {Microsoft.WindowsAzure.Commands.ServiceManagement.Model.NetworkConfigurationSet}
DataVirtualHardDisks              : {servite-test2-sqlserver1-0-201412020519500167, servite-test2-sqlserver1-1-201412020521210099}
Label                             :
OSVirtualHardDisk                 : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.OSVirtualHardDisk
RoleName                          : servite-test2
RoleSize                          : Standard_D2
RoleType                          : PersistentVMRole
WinRMCertificate                  :
X509Certificates                  :
NoExportPrivateKey                : False
NoRDPEndpoint                     : False
NoSSHEndpoint                     : False
DefaultWinRmCertificateThumbprint :
ProvisionGuestAgent               : True
ResourceExtensionReferences       : {BGInfo, IaaSAntimalware}
DataVirtualHardDisksToBeDeleted   :
VMImageInput                      :
PS C:\>

上記出力中の「DataVirtualHardDisks」がディスクの名前。
このAzure仮想マシンには2つのディスクが接続されている。

5. 「Get-AzureDisk -DiskName “ディスクの名前”」でディスク情報の詳細を取得

PS C:\> Get-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167"

AffinityGroup        :
AttachedTo           : RoleName: sqlserver1
                       DeploymentName: sqlserver1
                       HostedServiceName: service-test2
IsCorrupted          : False
Label                :
Location             : Japan West
DiskSizeInGB         : 200
MediaLink            : https://xxxxxxxxxx.blob.core.windows.net/vhds/sqlserver1-E-drive.vhd
DiskName             : servite-test2-sqlserver1-0-201412020519500167
SourceImageName      :
OS                   :
IOType               : Standard
OperationDescription : Get-AzureDisk
OperationId          : 2905xxxx-xxxx-xxxx-xxxx-1252bc53xxxx
OperationStatus      : Succeeded

PS C:\>

6. 「Update-AzureDisk -DiskName “ディスク名” -ResizedSizeInGB 数値 -Label “ラベル名”」でディスクの容量指定

PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250 -Label " "

OperationDescription                    OperationId                             OperationStatus
--------------------                    -----------                             ---------------
Update-AzureDisk                        9154xxxx-xxxx-xxxx-xxxx-f79f842fxxxx    Succeeded
PS C:\>

Get-AzureDiskで確認したときに「Label:」になにもないからといって、-Labelを指定しないと・・・

PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250
Update-AzureDisk : 値を Null にすることはできません。
パラメーター名:parameters.Label発生場所 行:1 文字:1
+ Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -R ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Update-AzureDisk]、ArgumentNullException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.UpdateAzureDiskCommand

PS C:\>

なにも設定されていないから「-Label “”」としても・・・

PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250 -label ""
Update-AzureDisk : パラメーター 'Label の引数を確認できません。引数が null または空です。null または空でない引数を指定して、コマンドを再度実行してください。発生場所 行:1 文字:106
+ ... InGB 250 -label ""
+                    ~~
    + CategoryInfo          : InvalidData: (:) [Update-AzureDisk]、ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.
   UpdateAzureDiskCommand

PS C:\>

と、めんどくさいです。
「-Label ” “」とスペースでもいいので、何か文字列を指定すると、コマンドが実行できます。

7. 仮想マシンの電源ON
8. OS内でファイルシステムの拡張を実行

以上で拡張が完了です。

Windows7でGet-AzureVM | Out-GridViewが動作しない

Azure環境をCLIで操作するためのMicrosoft Azure PowerShellですが、最近のバージョンでは、Windows 7 SP1のPowerShell 3.0では正常に動作しないコマンドがあるようです。

まず、現在のPower Shellのバージョンは「$PSversiontable」で確認できます。

PS C:\> $PSversiontable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.2.9200.16398
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2


PS C:\>

上記の「PSVersion」がPower Shellのバージョンになります。

次に、Azure Power Shellのバージョンは「(Get-Module Azure).version」で確認できます。

PS C:\> (Get-Module azure).version

Major  Minor  Build  Revision
-----  -----  -----  --------
0      9      2      -1

PS C:\>

上記の場合「0.9.2」です

この場合、「$vm = Get-AzureVM | Out-GridView -Title “Select a VM …” -PassThru」を実行すると、

PS C:\> $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
Get-AzureVM : パイプラインが停止されています。
発生場所 行:1 文字:7
+ $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
+       ~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzureVM]、PipelineStoppedException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureVMCommand

Out-GridView : インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index
発生場所 行:1 文字:21
+ $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Out-GridView], ArgumentOutOfRangeException
    + FullyQualifiedErrorId : System.ArgumentOutOfRangeException,Microsoft.PowerShell.Commands.OutGridViewCommand

PS C:\>

Out-GridViewが「ArgumentOutOfRangeException」ということで実行できません。
(「(Get-AzureVM).Name | Out-GridView -PassThue」は実行できるんだけど、得られる出力では次の処理ができない)

この現象はMicrosoftがgithubに開設しているアカウントに報告されている。
Possible breaking change Get-AzureVM breaks pipeline with Out-Gridview (#3047) #13

これによると、どうやら、Power Shell 4.0が必要らしい。

Windows Management Framework 4.0」の一部としてPower Shell 4.0が配布されているので、こちらからダウンロードしてインストールする。
リンク先でダウンロードすると、いくつかのファイルがダウンロードできるが、Windows7の64bit環境で必要なものは「Windows6.1-KB2819745-x64-MultiPkg.msu」だけである。Windows7 32bitの場合は Windows6.1-KB2819745-x86.msu」

インストール&再起動後にPower Shellの状況を確認すると、以下のようになる。

PS C:\>  $PSversiontable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.16406
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2


PS C:\> (Get-Module azure).version

Major  Minor  Build  Revision
-----  -----  -----  --------
0      9      2      -1


PS C:\>

で・・改めて「$vm = Get-AzureVM | Out-GridView -Title “Select a VM …” -PassThru」を実行!

PS C:\> $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
Get-AzureVM : パイプラインが停止されています。発生場所 行:1 文字:7
+ $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
+       ~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzureVM]、PipelineStoppedException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureVMCommand

Out-GridView : インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index発生場所 行:1 文字:21
+ $vm = Get-AzureVM | Out-GridView -Title "Select a VM ..." -PassThru
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Out-GridView], ArgumentOutOfRangeException
    + FullyQualifiedErrorId : System.ArgumentOutOfRangeException,Microsoft.PowerShell.Commands.OutGridViewCommand

PS C:\>

・・・あの・・・?

というわけで、当初もくろんでいたPower Shellを4.0にすることで対処できる、というわけではなく
アップデートしても、なんともならない、という救いようのない状態に・・・・

う~ん・・・


2015/07/21追記

githubのissue」にコメントが付いた

It’s a bug in PS 3.0 and 4.0 in that it fails to load the object and/or type info, if TableControl is not correctly configured.

This will be patched on our end for 3.0/4.0 in the incoming release. Stay tune. Thanks.

PowerShell 3.0と4.0におけるバグで、今度のリリースで修正される、とのこと。

Azure上の仮想ディスクを拡張する

このページの内容は「Azure上の仮想マシンのディスク拡張手法 2016年1月版」に置き換わりました。


Azure上にある仮想マシンで使用しているディスクの残り容量が減ってきた。
拡張するための手順を確認すると、一度VHDをダウンロードし、ローカルで拡張操作をした後に、再アップロードする、といったものが出てくる。

そんなバカな、と調べてみたところ、現在はそんなことをしなくてもいようだ。

Resizing Data Disks in the Cloud on Microsoft Azure with Windows PowerShell

Azure Power Shellモジュールのversion 0.8.15.1以降であれば、「Update-AzureDisk」のオプションとして「-ResizedSizeInGB」が追加されており、それを使用することで拡張することができる、とのこと。

ただ、2015/06/01現在、Azureのドキュメントの「Update-AzureDisk」は、version 0.8.10準拠ということで、このオプションが載っておらず、半ば隠しオプションとなってしまっている。

いや・・・ちゃんとしてくれよ・・・

しかも、Windows7で試したところ、Azure PowerShellモジュールを2015/06/01時点での最新ver 0.9.2にしても、このページ記載のコマンドが実行できないという事態も発覚。

「$vm = Get-AzureVM | Out-Gridview -PassThru」が失敗するという・・・

下記の問題と同様のようだ。
Possible breaking change Get-AzureVM breaks pipeline with Out-Gridview (#3047) #13

どうやらPower Shell 3.0では、動かず、Power Shell 4.0にする必要があるらしい。

そして、Power Shellは、Windows Management Framework 4.0に含まれるため
Windows Management Framework 4.0」を導入する必要がある、とのこと。

めんどくさいなぁ・・・・