1. はじめに
IBM Cloudでは、RackWare Management Module(RMM)というSelf Managedの移行ツールが提供されています。本稿では、このツールを使って、IBM CloudのVMware環境上のVM(source server)から、IBM CloudのVSI for VPC(target server)に移行を試してみたいと思います。
なお、Linux編はIBM Cloud: RackWare Management Module(RMM)を使ったVMware環境からのVPCへの移行: Linux編で紹介してあります。
2. RMMの注文
Linux編と同じなので、こちらを参照してください。
3. RMMの構成
Linux編と同じなので、こちらを参照してください。
4. source serverの準備(VMware上のVM)
原則、Rackwareでは英語環境のスクリプト・ツールで動くことを想定されているため、日本語環境下ではそのままでは動きません。そのため、移行用ユーザー(rackware)を作成し、そのユーザーの標準言語をEnglishにします。その上で。そのrackwareユーザー上に、SSHDツールを導入します。
4-1. ユーザーの作成
サーバーマネージャー -> ローカルサーバー -> ツール -> コンピューターの管理にて、rackwareというユーザーを作成する。rackwareユーザーは、パスワードは無期限にし、Administratorsグループに所属するように構成する。


4-2. ユーザーの言語設定
-
サインアウトして、Rackwareユーザーでログインする。
-
設定 -> 時刻と言語 -> 言語から、
English(United States)をインストールし、Windowsの表示言語をEnglish(United States)を選択する。

上記では簡単に書いてありますが、私はそこそこ苦労しました。とはいえ、環境依存のところがあると思うので、一般的なガイドとしては難しいところです。
まず、言語パックをインストールするためにインターネット接続が必要でした。この環境からはインターネット接続ができなかったため、proxyをVSI for VPC上に接続して構成しました。
dnf install -y squid
systemctl start squid
PS C:\Windows\system32> netsh winhttp set proxy proxy-server="http://10.239.0.16:3128"
また、English(United States)をインストールしても、Windowsの表示言語としてEnglish(United States)が出てこない問題もありました。そちらについては、lpksetupを使って言語パックをインストールするという手段を取りました。その際に、以下のリンクを参考にさせていただきました。
4-3. SSHDのインストール
SSHDは、RMMの以下にあります。これをWindows Serverにアップロードして、rackwareユーザーでログインしても構いません。
[vpcuser@syasuda-rackware-rmm ~]$ find /opt/rackware/utils/winbash/rwsshdservice-msi/ -type f
/opt/rackware/utils/winbash/rwsshdservice-msi/amd64/RWSSHDService_x64.msi
/opt/rackware/utils/winbash/rwsshdservice-msi/x86/RWSSHDService.msi
もしくはSource Serverから
https://<Rackware Server IP address>/windows/RWSSHDService.msi
https://<Rackware Server IP address>/windows/RWSSHDService_x64.msi
にアクセスすればダウンロードできるようになっています。今回はRWSSHDService_x64.msiを使ってインストールします。
SSHDのインストール画面
-
一番大切なところ
4-4. FirewallでPort 22の解放
Windowsの標準Firewallを使っている場合は、Run as AdministratorでCMDを開き、以下を実行
netsh.exe advfirewall firewall add rule name=rw-tcp-22-in dir=in action=allow
protocol=TCP localport=22
4-5. SSH接続テスト
[root@syasuda-rackware-rmm ~]# ssh rackware@10.153.35.229
The authenticity of host '10.153.35.229 (10.153.35.229)' can't be established.
RSA key fingerprint is SHA256:zp9UwdO6mzsZi2VzTod6vAhZtH0kE7UCoKC08DXuGas.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.153.35.229' (RSA) to the list of known hosts.
[rackware@WIN2019-VM ~]
rackware$ hostname
WIN2019-VM
[rackware@WIN2019-VM ~]
rackware$ ipconfig
Windows IP Configuration
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::b58c:a732:a793:ce1f%7
IPv4 Address. . . . . . . . . . . : 10.153.35.229
Subnet Mask . . . . . . . . . . . : 255.255.255.224
Default Gateway . . . . . . . . . : 10.153.35.225
[rackware@WIN2019-VM ~]
4-6. SSHDの自動起動の確認
ローカルセキュリティーポリシーでサービスとしてログオン(Log on as a Service)で、rackwareが入っていることを確認。Windows Serverが起動した際に自動的にSSHDが有効になるために必要です。

4-7. AntiVirus設定
これをやっていないと、ウィルスチェックに引っかかって同期及び差分同期がすごく遅くなる可能性があります。私は最初設定していなくてだいぶ時間がかかってしまいました。
設定-> 更新とセキュリティ -> Windowsセキュリティ -> ウイルスと脅威の防止 -> ウィルスと脅威の防止の設定 -> 除外にて以下を追加。
- プロセス
- rsync.exe
- rwattr.exe
- rwchangesvc.exe
- rw_tngsync_util.exe
- rwchangedrv.sys
- フォルダ
- C:\Program Files\Rackware-winutil
- C:\Program Files\RackWare Inc\RWSyncModule
- C:\Windows\Temp\Rackware-winutil\
-
C:\Windows\Temp\Rackware-winutil\については、データ同期時にRMMから一時的にファイルが作成されていましたので、フォルダを作成して登録しました。 -
C:\Program Files\RackWare Inc\RWSyncModule\は作成しました。
以下も除外リストに入れるように書かれてあるのですが、該当ファイルが存在しないため、登録していません。プロセスを登録しているのでなくても良い気もしますが・・・
なお、RMMのドキュメントに記載されていたリストは以下の通りでした。
• rsync.exe
• rwattr.exe
• rwchangesvc.exe
• rw_tngsync_util.exe
• rwchangedrv.sys
• C:\Windows\Temp\Rackware-winutil\
• C:\Program Files\Rackware-winutil\
• C:\Program Files\RackWare Inc\RWSyncModule\
• C:\Windows\System32\rwchangesvc.exe
• C:\Windows\System32\Drivers\RwChangeDrv.sys
5. target server(VSI for VPC)の準備
今回は、source環境がUEFI/GPT方式であるため、IBM Cloud: sdp profileでUEFI/GPTフォーマットのWindows Serverを作成する方法に従ってサーバーを作成します。
ディスク容量は、source環境とほぼ揃えています。また移行元がIBM Cloud上のVCF for Classicを想定し、作成方法3: Custom Imageを使う方法を利用して、BYOLイメージを用意してプロビジョニングしています。
プロビジョニング後は、以下の設定をSource Serverと同様にTarget Serverでも行いますが、基本的にsource serverの作業と同じなのでここでは詳細は省略します。
- ホスト名の変更(もしCustom Imageからデプロイしていて、ホスト名を変更したい場合)
- rackwareユーザーを作成し、Administratorsグループに入れる。
- rackwareユーザの言語設定をEnglishに変更(これはIBM Cloudのデフォルトは英語だから特に作業は不要)
- rackwareユーザーで、SSHDのインストール
- Firewallのポートを開ける
- パスワードレスのSSH接続確認。
[root@syasuda-rackware-rmm ~]# ssh rackware@10.239.0.102
The authenticity of host '10.239.0.102 (10.239.0.102)' can't be established.
RSA key fingerprint is SHA256:XLfzlgT7+K+8pGMhU+B+L6X9EZoizsjREOQrutHHgWU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.239.0.102' (RSA) to the list of known hosts.
[rackware@win2019-vm ~]
rackware$ hostname
win2019-vm
rackware$ ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::1b6b:97f2:720a:6885%4
IPv4 Address. . . . . . . . . . . : 10.239.0.102
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.239.0.1
[rackware@win2019-vm ~]
6. RMM Consoleの構成
6-1. RMM Consoleへのログイン
https://<IP address> にrootユーザーのパスワードでログイン

6-2. Waveの作成
- Create Wave

- Waveの名称と、Passthrough(RMMを経由するか、それともsourceからRMMを経由せずに直接Targetに通信するか)を選択。今回はRMMを経由するPassthroughを選択。
- Waveが作成された。このWaveに移行サーバーを追加するために、今作成したWaveを押下。
- "+"ボタンを押下。
- source/targetを追加
- Target Type
- プロビジョニング済みのVSI for VPCに移行するため、
Exsisting Systemを選択。
- プロビジョニング済みのVSI for VPCに移行するため、
- source
- DNS Name/IP Address(DNS Nameを利用する際には、RMMから名前解決できる必要あり)
- Friendly Name(これはRMM内での管理目的)
- OS
- SSH Port
- SSH接続用のユーザー名(今回は
rackware)
- target
- Target Type
7. Wave同期の実行(1回目)
▶️を押下して、同期を開始。

移行中のtarget環境をVNC Consoleで確認した結果。
8. Wave同期の実行(2回目)
▶️アイコンを押下することで、再度Wave同期が始まります。差分同期のため、1回目より早く終わりました。

9. 構成比較
9-1. DISK構成
- source環境のWindows ServerのDISK構成
- target環境のCustom Imageプロビジョニング直後のDISK構成(このパーティション構成は削除されます)
- RMMによる移行後のDISK構成
PS C:\Users\Administrator> Get-Disk | Sort Number | ft -Auto
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style
------ ------------- ------------- ------------ ----------------- ---------- ---------------
0 VMware Virtual disk 6000c29768a9c5ffb5bc9beb56b374bf Healthy Online 2.5 TB GPT
PS C:\Users\Administrator> Get-Disk | Sort Number | ft -Auto
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style
------ ------------- ------------- ------------ ----------------- ---------- ---------------
0 QEMU QEMU HARDDISK cloud-init-0717_e2330de0-5875-4cac-a Healthy Online 380 KB RAW
1 Red Hat VirtIO 0717-3eb27210-e7d3-4 Healthy Online 2.54 TB GPT
2 Red Hat VirtIO cloud-init- Healthy Online 44 KB RAW
9-2. IP Address
PS C:\Users\Administrator> Get-NetIPAddress -AddressFamily IPv4
IPAddress : 10.153.35.229
InterfaceIndex : 7
InterfaceAlias : Ethernet0
AddressFamily : IPv4
Type : Unicast
PrefixLength : 27
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Preferred
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : ActiveStore
IPAddress : 127.0.0.1
InterfaceIndex : 1
InterfaceAlias : Loopback Pseudo-Interface 1
AddressFamily : IPv4
Type : Unicast
PrefixLength : 8
PrefixOrigin : WellKnown
SuffixOrigin : WellKnown
AddressState : Preferred
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : ActiveStore
PS C:\Users\Administrator> Get-NetIPAddress -AddressFamily IPv4
IPAddress : 10.239.0.102
InterfaceIndex : 8
InterfaceAlias : Ethernet
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 00:03:30
PreferredLifetime : 00:03:30
SkipAsSource : False
PolicyStore : ActiveStore
IPAddress : 127.0.0.1
InterfaceIndex : 1
InterfaceAlias : Loopback Pseudo-Interface 1
AddressFamily : IPv4
Type : Unicast
PrefixLength : 8
PrefixOrigin : WellKnown
SuffixOrigin : WellKnown
AddressState : Preferred
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : ActiveStore
9-3. SID
SIDは変更されていません。
PS C:\Users\Administrator> whoami /user
USER INFORMATION
----------------
ユーザー名 SID
======================== =============================================
win2019-vm\administrator S-1-5-21-1549047299-1303373395-3508283010-500
PS C:\Users\Administrator> whoami /user
USER INFORMATION
----------------
ユーザー名 SID
======================== =============================================
win2019-vm\administrator S-1-5-21-1549047299-1303373395-3508283010-500
















