robocopyで外付けHDDにデータをミラーリング

  robocopy を使用して、ローカルHDD内のデータを外付けUSB-HDDにミラーリングした時の作業記録です。

【robocopy について】
 ”Robust File Copy(堅牢なファイルコピー)”  の略称で、ディレクトリやファイルの複製が行えます。
 Windows VISTA / WIndows Server 2008 以降から、OS標準で搭載されいるコマンドです。
 (構文やオプションなどは Microsoft の technet に)

 

 

 今回は、OS が Windows Server 2008 R2 、
 robocopy コマンドを Windows のタスクマネージャに登録して、OS起動時にタスク(robocopyコマンド)を実行する、という方式にしました。
 また、robocopy の実行結果ログも出力(/LOG+ オプション)するようにしています。
 (ログが貯まり続けてしまうので、90日経過後に削除するPowershell スクリプトを作成してログメンテするようにしました。 このOSは毎日再起動(これもタスクに登録)されるので、この スクリプト がOS起動時に実行されるよう、タスクに登録してます)

 

 robocopy のコマンドです。

robocopy E:\ H:\ /MIR /DCOPY:T /MON:1 /ZB /LOG+:C:\10.Robocopy-Log\robocopy.log /NP /XD "$RECYCLE.BIN" "System Volume Information" 

 今回は、
 ・ コピー元: E:\  (ローカルのHDD)
 ・ コピー先: H:\ (外付けのUSB-HDD)
 ドライブを丸ごとミラー( /MIR )してます。

 実行結果を 「C:\10.Robocopy-Log\robocopy.log」 という名称で出力、また、「$RECYCLE.BIN」「System Volume Information」ディレクトリはコピー対象外としています。
(ログを出力するディレクトリが存在しないとコマンドが失敗するので、事前に作成を)

 

 この robocpy コマンドがOS起動時に実行されるよう、タスクとして登録します。
 タスクの登録状況はこんな感じです。
 (サーバーマネージャー > 構成 > タスクスケジューラー > タスクスケジューラー ライブラリ)

 

 上記のタスク名称 「002.~」 が robocopy用のタスクです。
「全般」タブはこんな設定。

 

「トリガー」タブはこんなです。 5分の遅延起動にしています。

 

「操作」タブです。 上に記載した robocopy コマンドを登録してます。

 

「条件」タブ。

 

「設定」タブです。

 これで、OS起動時に robocpy コマンドが実行され、外付けUSB-HDDにミラーが作成されます。

 

 続いて、ログのメンテナンスです。

 今回は 「 C:\10.Robocopy-Log\robocopy.log 」 にログを出力(追記形式で保存 (/LOG+) )してます。
 このログを毎日のOS再起動のタイミングで、

 ・ robocopy.log  を 別のフォルダ(C:\10.Robocopy-Log\履歴\)にmove してリネーム(moveした日をファイル名に付与)。
 ・ 90日経過したログは削除する。

 上記の処理を行うPoweshellスクリプトを作成し、Windowsのタスクに登録します。
 今回はこんなPowershellスクリプトを作成。
( 「C:\01.Script_for_PowerShell\001.Del_robocopy-log.ps1」 で保存)

###
### 【このシェルについて】
### robocopy のログをOSの再起動毎にmoveして、90日経過したら削除する。
### ログの保管場所 C:\10.Robocopy_Log\robocopy.log
###
### STEP1) ログファイルを、再起動毎にmove。
###  移動元: C:\10.Robocopy-Log\robocopy.log
###  移動先: C:\10.Robocopy-Log\履歴\Robocopy_Log_yyyyMMdd
###    yyyy:西暦
###    MM:月
###    dd:日
###    HH:時
###    mm:分
###    ss:秒
###
### STEP2) 古くなったログファイルを削除。
###  作成から90日経過したものを対象。
###
###
###
### !このシェルは、OS再起動毎に、タスクスケジューラーによって実行されます。
###
###
### タスクの起動順:
### 003. robocopy.log のメンテナンス
###  ↑ OS起動後、3分後に起動
###
###  002. DS3200のデータをUSB-HDDにミラーリング
###  ↑ OS起動後、5分後に起動。
###
###
### 【履歴】
### YYYY.MM.DD 新規作成。
### YYYY.MM.DD あれとあれを修正。
###
###
### STEP0) robocopyを強制終了。
###  今回はOS起動後の実行なので、このステップはなし。
### stop-process -name robocopy


### STEP1) ログファイルを、再起動毎にmove。
###  移動元: C:\10.Robocopy-Log\robocopy.log
###  移動先: C:\10.Robocopy-Log\履歴\Robocopy_Log_yyyyMMdd

$TargetLogPath = "C:\10.Robocopy-Log\robocopy.log"    #robocopyのログを指定。
$BackupFolderPath = "C:\10.Robocopy-Log\履歴"     #移動先フォルダの指定。
$DateNow = (Get-Date).toString("yyyyMMdd_HHmmss")        #システム日時を変数 $DateNow に格納。
$BackUpLogName = "$BackupFolderPath\robocopy"  + "`_" + "$DateNow" + ".log"  #移動先ファイル名の指定。

###get-process robocopy 2> C:\001.PowerShell\001.Log\002.RobocopyResults_$DateNow.txt #robocopyプロセスの確認。存在しなければ、ファイルに出力される。

move-item -Path "$TargetLogPath" -Destination "$BackUpLogName"   #moveを実行。
###move-item -Path "$TargetLogPath" -Destination "$BackUpLogName" 2> C:\001.PowerShell\001.Log\001.MoveLog_$DateNow.txt #コピーを実行。エラーが出れば、ファイルに出力。



###
### STEP2) 古くなったログファイルを削除。
###  作成から90日経過したものを対象。
###
### $DeleteTime = "-n" n(分/min)。 n分経過したものを削除する。
###  30日 = 43200min (60min * 24hour * 30day)
###  90日 = 129600min (60min * 24hour * 90day)
### $DelFile : 削除対象。
###

            
$DeleteTime = "-129600"  #経過「分」を指定。1 = 1min。

### 作成日から $DeleteTime 分経過したものを削除。
foreach ($DelFile in (Get-ChildItem C:\10.Robocopy-Log\履歴\* | Where-Object {$_.CreationTime -lt (Get-Date).AddMinutes($DeleteTime)})) {Remove-Item -recurse $DelFile}


### 作成日から $DeleteTime 分経過したものを削除。エラーが出れば、ファイルに出力。
### foreach ($DelFile in (Get-ChildItem C:\10.Robocopy-Log\履歴\* | Where-Object {$_.CreationTime -lt (Get-Date).AddMinutes($DeleteTime)})) {Remove-Item -recurse $DelFile}

 

 このスクリプトがOS起動時に実行されるよう、タスクマネージャに登録します。 ( 「003.robocopy.logのメンテナンス」 )

 

「全般」タブ。

 

「トリガー」の設定。 3分の遅延起動です。(この処理が終わってから、robocopyのタスク -5分の遅延起動- を実行)

 

「操作」タブです。 以下のコマンドを登録。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\01.Script_for_PowerShell\001.Del_robocopy-log.ps1

 

「条件」タブです。

 

「設定」タブ。

 

 これで、毎日の再起動のタイミングで ログファイルも処理されます。

 

 今回の備忘録は以上です。

 

 

iPhoneをUSB経由でテザリングして複数PCをネットに接続

 インターネット接続用の回線が(諸々の都合で)廃止となってしまったので、代わりにiPhone でテザリングして、自分の作業用PCやその他のPCをインターネットに接続できるようにしてみたときの備忘録です。

 

【使用機器】

  • iPhone 5s (iOS 9.2、 docomo / Xiパケ・ホーダイ for iPhone)
  • Windows 7 Professional
  • HUB , その他PC

 構成はこんなです。 (PC達にWiFiがないので、Windows 7 をブリッジにして有線でつなぎます)

 なくなってしまった有線インターネット回線は、もともと Linux や Windows など諸々の検証用に使用していたので、今回も自分の作業用PC(Windows 7)のみならず、他のマシン達も(Windows 7経由で)同時にインターネットに接続できるようにしてみます。

  携帯電話事業者によって、テザリング できる / できない は変わってきますので、そこらへんについてはご利用のキャリアでのご確認を。。。
 私の場合(docomo)では、特に追加契約などは不要でテザリングできました。
 ・docomo iPhone テザリングの利用方法

 

 作業のおおまかな流れとしては、

  1.  USB接続の iPhone でテザリングできるように、 Windows 7 にデバイスドライバなどを入れる。
  2.  Windows 7 の USBポート に iPhone を繋いでインターネットに接続。
  3.  Windows 7 の有線LANにHUB(とか)を繋ぐ。
  4.  Windows 7 で 有線LAN と iPhone側の接続をブリッジする。

 こんな感じです。
 特段むずかしい事もないので、早速やってみましょう。

 

§1. デバイスドライバの導入

 Windows 用の iPhone ドライバは、iTunes のインストーラーに含まれています。
 iTunes をまるっとインストールするのが手っ取り早いのですが、iTunes には Bojour などどいった他のアプリも同梱されています。
 今回は作業用PCということもあり、極力不要なアプリは除外したいので、必要最低限なもののみインストールします。

【iPhone USB テザリング】
 ・Apple のサポートコミュニティ(英語) : https://discussions.apple.com/thread/6829407?start=0&tstart=0
・ASCII.jp の記事 : http://ascii.jp/elem/000/000/918/918548/

 

 上記サイトを参考に、iTunes インストーラーをアーカイバで展開(解凍) -> 各インストールコンポーネント(*.msi)を抽出、下記の2つを導入、でUSB経由でiPhoneテザリングするための最低限必要な機能が実装できます。

① AppleApplicationSupport.msi
② AppleMobileDeviceSupport.msi

(インストールの順番は、iTunes 削除 https://support.apple.com/ja-jp/HT204275 と逆 ~ 上記① -> ②の順番 ~ で行います)

 ちなみに、Mobile Device Support (← Windows のサービスとしてインストールされる)だけでも動くのでは、と思って試したのですが、 Application Support がないとサービスの起動ができませんでした。。。

 

 

  • iTunes のダウンロード

 Apple のサイトから iTunes のインストーラーをダウンロードして、展開(解凍)します。

 ダウンロードサイト(日本):  http://www.apple.com/jp/itunes/download 

 

 ダウンロードしたインストーラーを解凍したところ。(今回は Lhaplus http://www7a.biglobe.ne.jp/~schezo/  を使用)

 上記のなかから、

① AppleApplicationSupport.msi
② AppleMobileDeviceSupport.msi

 ①、②の順番にインストール。 (インストールのスクリーンショットは割愛しますが、インストーラーの指示どおりで特に難しくないです)

 

§ 2. iPhone を USB で接続

 まず、iPhone側 で、ホーム画面から 「設定」 を押して > 「インターネット共有」 を押して > インターネット共有設定をオンに。(スクリーンショットはないです・・・)

 続いて、Windows 7 マシンのUSBポートに iPhone を接続します。

 すると、Windowsのネットワークアダプタに ↓ このように、「Apple Mobile Device Ethernet」(画面内の下から2番目) が追加されます。

 私の環境だと、iPhoneは 「ローカルエリア接続2」にマッピングされました。

 このPC 1台だけをネット接続するのであれば、この時点で 「ローカルエリア接続2」 を 「DHCP」 に設定すれば、インターネットに疎通できるようになります。

 

【iPhone から配布されるIPアドレス】
Windowsで ipconfig して確認したところ、

IPv4 アドレス . . . . . . . . . . : 172.20.10.4(優先)
サブネット マスク . . . . . . . . : 255.255.255.240
リース取得. . . . . . . . . . . . : 2016年1月14日 10:41:08
リースの有効期限. . . . . . . . . : 2016年1月15日 10:26:44
デフォルト ゲートウェイ . . . . . : 172.20.10.1
DHCP サーバー . . . . . . . . . . : 172.20.10.1
DNS サーバー. . . . . . . . . . . : 172.20.10.1

でした。

iPhone からは、USBインターフェース(ローカルエリア接続2)に /28 (255.255.255.240)のネットワークが展開されていますので、iPhone が使う .1 を除き、第4オクテットが .2  ~  .14  を端末側で利用できますね。
端末側では DHCP を使用しなくとも、第4オクテットが .2  ~  .14 を固定で割り振るのもアリですね。

 

 

§ 3. WIndows 7 の有線LAN側にHUB(とか)を接続

 Windows 7 の有線LAN側にHUB(とか)を接続、その先にインターネットに接続したいマシン達を接続します。 

 各マシンのIPアドレスは、DHCPにするか、固定でもよいかと。
(DHCPと固定を併用する場合は、DHCPリースされてないIPを固定に割り当てないと)

 DHCPを使用する場合は、最大 13台が同時接続できる・・・かな? (検証していないのですが、.2 から .14 までがリースされるとして)

 NATを併用すれば、もっと接続台数は増やせますね。

 多くの携帯電話会社では 通信量制限があるので、台数が多いとすぐ上限を超えてしまいそうですが・・・
 また、従量課金の場合はこの方法はキケンですね・・・

 

 

§ 4. Windows 7 で 有線LAN と iPhone側の接続をブリッジする

 Windows 7 の有線LAN と iPhone テザリング接続を間をブリッジ接続します。

 コントロールパネルからネットワーク接続を開き、

・有線LAN : ローカルエリア接続(Marvell Yukon 88E8072)
・iPhone テザリング : ローカルエリア接続2(Apple Mobile Device Ethernet)

を選択、右クリックして 「ブリッジ接続」 を選択します。

 

 しばらくすると、下記のように 「ネットワーク ブリッジ」 が作成されます。

 

 「ネットワークブリッジ」 のプロパティを開くと、アダプターの欄に先ほど選択していた  「ローカルエリア接続」 と 「ローカルエリア接続2」 が選択(チェック)されているはずです。

  「ネットワークブリッジ」 のIPアドレスは DHCP で取得にしておきます。 

 

 

 これで、Windows 7 と その先につながっているマシン達が、iPhone 経由でインターネットと疎通できます。
 iPhone の USB インターフェース側に展開される IPアドレス(サブネット)は上記に記したように /28 (iPhone も含めて、ホスト部 は14台ぶん) のサブネットなので、DHCPでiPhoneからIPアドレスをもらっても、固定IPを別途割り振っても良いかと思います。
 携帯電話の通信量制限を気にしなくても良い環境であれば、Windows 7 の有線LAN側に NAT できる機器を置けば、何台でも同時接続可能にすることもできると思います。

 

 今回の備忘録は以上です。

 

 

Hyper-V Server 2012 R2 その②

 Microsoft の Hyper-V Server 2012 R2  上で 、ゲストのLinux ( CentOS6 ) のレプリケーションとフェールオーバーを試してみました。 の続編になります。

 前回 でHyper-V Server の構築を実施しましたが、まず、訂正がひとつあります  ><

 Workgroup 環境で試していたのですが、Active Directry 環境に変更しました。

 理由は、仮想マシンを レプリケーションする際に Hyper-V サーバ間で認証(Kerberos 認証 or サーバ証明書を使った認証)が必要になるのですが、

  1.  Kerberos 認証は Active DIrectory 環境のみで使用可能。 (Workgroup ではサーバー証明書を使った認証のみ可能)
  2.  サーバー証明書は作成が面倒。 (X509v3 デジタル証明書が必要。 Windowsで作成(makecert.exe)する場合、 Windows ソフトウェア開発キット(SDK)の入手が必要)
  3.  他にも、Workgroup 環境の場合、 Hyper-V Server をリモートで管理するためにあれこれ設定(Windows Filrewall に穴あけしたりとか)しないといけない。

 といった事が作業中にわかってきました。。。 
 「Workgroup環境で手っ取り早く」 と思っていたのですが、 Active Directory 環境のほうがはるかに早く簡単に検証できそうだ、ということで、環境を変更しております。 ><

 

(2016.1.8 追記)
 AD環境下でも、リモートから 「コンピュータの管理」 をするために、 Windowsファイアウォールに MMCスナップイン の接続許可をする必要があることがわかったので、Hyper-Vサーバー と Hyper-Vマネージャの双方に、下記を設定しました。

PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート サービス管理"
PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート ボリューム管理"
PS C:\> Enable-NetFirewallRule -DisplayGroup "リモート イベントのログ管理"

 

 

 では、今回は ゲストOS (Linux/CentOS 6)の導入と、 レプリケーションと フェイルオーバーについての備忘録です。

 (参考サイト①:http://www.slideshare.net/NaokiAbe/hyper-v-24568782

 (参考サイト②:http://www.slideshare.net/junichia/hyperv-windows-powershell

 

 おさらいですが、構成はこんなです。

  • Hyper-V Server が 2台、L2SW経由で 1Gbps で接続。
  • 管理用に別途 Hyper-V Manager を用意。 (← 設定は割愛しますが、この Windows Server 2012 R2 に Activi Directory ドメインサービス の役割を追加、Hyper-V Server をそのドメインに参加させました)
  • ゲストに CentOS 6 を載せて、レプリケーション / フェールオーバーの確認をしてみる。(←これが今回の作業)

 

§ 1. 仮想スイッチの設定

 仮想マシンが外部ネットワークに接続するために、まずは仮想スイッチを設定します。 
 (後から作成してもよいのですが、仮想マシン作成中に 「NIC と仮想スイッチの紐付けドウスル?」 って聞かれるので、先に作ってしまいましょう。)

 Hyper-V Manager (の左側ペイン)から HV001 を選択、右クリックして 「仮想スイッチマネージャ」 を起動します。 (もしくは 右側 「操作」 ペインの仮想スイッチマネージャをクリック)

 

 仮想スイッチマネージャーが起動します。

 「どの種類の仮想スイッチを作成しますか」 で 「外部」 を選択し、「仮想スイッチの作成」 をクリックします。

 

 新しい仮想スイッチのプロパティを設定していきます。

 今回は、名前を 「VSW-001_HV001」 としました。 (HV002 側には 「VSW-001_HV002」 を作成)

 接続先の種類で 「外部ネットワーク」 を選択します。 プルダウンリストから NIC ( 今回はハード側のNIC が 1枚なので、プルダウン選択肢も 1つです) を選択。 

 「適用」ボタンをクリックして仮想スイッチを作成します。

 ネットワーク切断の警告が出ますが、 「はい」 で続行。

 

 仮想スイッチが作成されました。

 

 HV002 側にも同様に 仮想スイッチを作成しておきます。

 

 

§ 2. 仮想マシンの作成 と OSインストール

§2-1. 仮想マシンの作成

 次は仮想マシンの作成です。

 Hyper-V Manager の左側ペインで HV001 を選択、右クリックして 「新規」 > 「仮想マシン」 を選択します。 (右側の操作ペイン、もしくは 上部の「操作」メニューからでも)

 

 仮想マシンの新規作成ウィザードが起動します。 「次へ」 で先に進みます。

 

 仮想マシンの名前と保存場所を設定します。  今回は名前を 「CentOS6_001」 とします。 (保存場所のパスは特に変更せず)

 

 仮想マシンの世代を設定します。 今回は第一世代で。 (第二世代に対応するOSは  technet に記載があります)

 

 メモリの割り当てを行います。 今回は、起動メモリ 512MB、「この仮想マシンに動的メモリを使用します」 にチェックを入れて、「次へ」。

 

 ネットワークの設定です。 先ほど作成した仮想スイッチ 「VSW-001_HV001」 をプルダウンから選択。

 

 仮想ハードディスクの設定です。 今回は 「仮想ハードディスクを作成する」 (デフォルトのまま)で、サイズを 128GB -> 32GB に変更。

 

 インストールオプションの選択。 今回は 「後でオペレーティングシステムをインストールする」 を選択して、「次へ」。

 

 「完了」を押して仮想マシンを作成します。

 

 HV001 上に仮想マシンができました!

 

 ここで、仮想マシンのMACアドレスを固定に変更しておきます。 (規定値では動的 MACアドレス)

 今回は、仮想マシンをレプリケーションするために、MACアドレスを固定にします。
 カーネル 2.6.1.3 以降の Linux は デバイス管理に udev (wikipedia) を使用しているため、MACアドレスが変わると違うデバイスとして認識されて(これまで eth0 だったのが eth 1 とか) ネットワークが使用できなくなる為、仮想マシンのMACアドレスを固定します。

 

  • 仮想マシンを右クリック > 「設定」 を選択します。
    ポップアップした設定画面 左ペインの 「ネットワークアダプター」 > 「高度な機能」を選択、「MAC アドレス」 を 「静的」 にチェックを入れます。

 【MACアドレスの固定について】
 今回は、仮想スイッチが動的に提供するMACアドレスの範囲内から、最初の 10個 を固定用に使うこととしました。(00:15:5D:0A:E6:00 ~ 09 までの 10個)
 ので、↓ 仮想スイッチマネージャで、このMACを除外(00:15:5D:0A:E6:10 から提供開始)にしています。

 MACアドレスは本来一意であることが期待されており、特に同一サブネット内でMACアドレスが重複すると正常に通信できません。
 仮想環境の場合、特に同系統のハイパーバイザを複数使用する場合は、 仮想マシンに提供される MAC アドレスが重複する可能性を考慮する必要があります。
 今回のような小規模な仮想環境であればあまり気にする必要もありませんが、ある程度規模が大きくなる場合、MACアドレスを自動で提供する or 固定にする(払い出し管理やベンダコードをどうするか) 、といった検討が必要ですね。。

 

 

§ 2-2. OSインストール

 作成した仮想マシンに OS (今回は CentOS 6 (minimal))  をインストールします。
 (CentOS のインストーラーのダウンロードは こちら から。 今回は 「CentOS-6.7-x86_64-minimal.iso」 です)

 

 ダウンロードした *.iso を Hyper-V Server (HV001)から参照できる場所におきます。 (ローカルフォルダか共有フォルダ)
 今回は HV001 のローカルフォルダ( C:\99.Work\ )に設置。
(HV001 にはブラウザーがないので、別のPCで *iso をダウンロード、USBメモリ経由で HV001 にコピーしました。今回はやってませんが、共有フォルダ(CIFS)に *.iso を置いて、リモート参照も可能です)

PS C:\> mkdir C:\99.Work
PS C:\> cp D:\CentOS-6.7-x86_64-minimal.iso C:\99.Work

 

 仮想マシンの DVDドライブに、 .iso ファイルをマウントします。
Hyper-V Manager で仮想マシン(CnetOS6_001)を右クリックして、「設定」 を選択。

 

 設定画面 左ペインの ハードウェアから、 IDEコントローラー1 > DVDドライブ を選択します。 右ペインに DVDドライブ の設定が出るので、メディアの 「イメージファイル」 を選択。

 参照ボタンをクリックし、<HV001のIP> -> ローカルディスク > 99.Work と辿っていき、.iso を選択して 「開く」 をクリックします。

 

 仮想マシンの DVDドライブに CentOS6 の .iso ファイルがマウントされました。

 「OK」 を押して画面を閉じます。

 

 Hyper-V Manager 内の CentOS6_001 を右クリック > 接続 をします。

 

 仮想マシンを起動します。 (画面 左上の 起動ボタン(緑色)を押すか、 操作 > 起動 をクリック)

 

 仮想マシンが(DVDから)起動しますので、 CentOS をインストールします。 (インストールについては割愛します)

 OS のインストールが終わったら、IPアドレス等の設定を実施しておきます。(こちらについても詳細は割愛しますが、だいたいこんな設定です -> 以前の備忘録(Linuxサーバ初期設定))

 

 

§ 3. レプリケーション

 HV001 上の 仮想マシン(CentOS6_001) を HV002にレプリケーションしてみます。

 レプリケーションを行うには、① Hyper-V Server 側を設定、② 仮想マシン毎にレプリケーションを設定、 が必要になります。

 

§ 3-1. Hyper-V Server 側の設定

 Hyper-V Manager で 「HV001」 を選択、右クリックして 「Hyper-V の設定」 を起動します。 (下図では HV002 を選択してますが、HV001 / 002 ともに同じ設定が必要になるので、どちらからでも構いません)

 

 Hyper-V の設定画面 左側ペインで 「サーバー」 > 「レプリケーションの構成」 を選択します。
 右側ペインに 「レプリケーションの構成」 が出ますでの、「レプリカサーバーとしてこのコンピュータを有効にする」 にチェックを入れます。
 続いて、「認証とポート」 から 「Kerberos を使用する」 にチェックを入れます。 (認証は必須。 Kerberos と 証明書の併用も可能)

 画面下方の 「承認と記憶域」 は 「認証されたすべてのサーバーからのレプリケーションを許可する」 にします。 (ファイルの格納パスも規定値)

 「適用」 をクリックして設定完了です。

 

 適用したら次のようなポップアップが。。。

 Windows Firewall に穴をあけないとです。(すでに許可している場合でも、このメッセージは表示されます)  

 

 Hyper-V Server (HV001 / HV002 )の Windows Firewall で tcp/80 を許可する設定します。 (リモートからの設定が面倒なので、それぞれの ローカルコンソールから設定) 

 変更操作は PowerShell のコマンドレットで行います。 まずは  cmd.exe を PowerShell に。

C:\> powershell
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.

PS c:\> 

 

 現在の Windows Firewall の受信規則を確認。

PS c:\> Get-NetFirewallRule -Direction Inbound

<大量に出力があります>

 

 Hyper-V レプリカに関する設定の確認。

PS c:\> Get-NetFirewallRule -Direction Inbound -Description *レプリカ*


Name                  : VIRT-HVRHTTPL-In-TCP-NoScope
DisplayName           : Hyper-V レプリカ HTTP リスナー (TCP 受信)
Description           : レプリケーションの HTTP 接続を受信する Hyper-V レプリカ
                         リスナーの受信規則です。[TCP]
DisplayGroup          : Hyper-V レプリカ HTTP
Group                 : @%systemroot%\system32\vmms.exe,-251
Enabled               : False
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : VIRT-HVRHTTPSL-In-TCP-NoScope
DisplayName           : Hyper-V レプリカ HTTPS リスナー (TCP 受信)
Description           : レプリケーションの HTTPS 接続を受信する Hyper-V レプリ
                        カ リスナーの受信規則です。[TCP]
DisplayGroup          : Hyper-V レプリカ HTTPS
Group                 : @%systemroot%\system32\vmms.exe,-253
Enabled               : False
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

PS C:\>

 

 HTTPリスナー が false (無効) になっているので、True (有効) にします。  (サーバー証明書を使用するのであれば、HTTPS も true に)

PS C:\> Set-NetFirewallRule -Name "VIRT-HVRHTTPL-In-TCP-NoScope" -Enable True

 

 Hyper-V Server 2台(HV001 / HV002) ともに、上記の設定を行います。

 

 

§ 3-2. 仮想マシン側の設定

 次に、 Hyver-V Manager からHV001 上の CentOS6_001 を選び、右クリック > 「レプリケーションを有効にする」 を選択します。

 

 レプリケーション ウィザードが開始されます。

 

 レプリカサーバーの指定。  「HV002」 を指定して、「次へ」。

 

 接続パラメータの指定。 ここは特に変更せず 「次へ」。

 

 レプリケーション VHD の選択。 ここも規定値のまま 「次へ」。

 

 レプリケーションの頻度。 とりあえず規定値の 「5分」にしておきます。 (30秒、5分、15分、の選択が可能)

 

 追加の回復ポイント。 こちらも規定値(最新のだけ)にしておきます。

 

 初期レプリケーションの方法。 ネットワーク経由ですぐに。

 

 「完了」をクリックしてウィザード終了です。

 

 レプリケーションが正常に有効になりました!

 

 初期コピーが完了後、HV002 上に オフ状態の CentOS6_001 が現れます。

 (検証環境の問題かもしれませんが) 作成されたレプリカ仮想マシンにはネットワークアダプタが接続されていませんでしたので、手動で接続を行っています。

 なお、MACアドレスはレプリカ元と同じ静的になってました。

 

 

 レプリケーションの状況は、仮想マシンを右クリック > 「レプリケーション」 > 「レプリケーションの正常性の表示」 で確認できます。

 

 

§ 4. フェールオーバー

 Hyper-V では 3種類のフェールオーバーがあります。

フェールオーバーの種類 説明 操作するサーバー
テストフェールオーバー

実際にフェールオーバーさせることなく、レプリカ仮想マシンの動作確認が行える。 (規定ではネットワークに未接続)

 レプリカサーバー
計画フェールオーバー

 仮想マシンをプライマリサイトからレプリカサイトに計画的に移動する機能。 

完全なレプリケートが行えるが、移動する仮想マシンは Power OFF にする必要がある。

 プライマリサーバー
フェールオーバー

プライマリサイトの障害時に使用。

強制的にレプリカ側の仮想マシンを回復ポイントから起動する。

 レプリカサーバー

 

§ 4-1. テストフェールオーバー

 レプリカサーバー上に一時的な仮想マシンが (指定した回復ポイントから Power OFF の状態で) 作成されます。 
 PowerON することで、実際にフェールオーバーさせることなく、レプリカ仮想マシンの稼働確認が行えます。   

 ※ 規定ではネットワーク接続はなし(スタンドアローン)。
 ※ テストフェールオーバーを終了すると、一時仮想マシンは削除されます。

 

 HV002 上の CentOS6_001 を右クリック > 「レプリケーション」 > 「テストフェールオーバー」 を選択。

 

 テストフェールオーバーをクリック。

 

 HV002 上に 「CentOS6_001 – テスト」 の名称で仮想マシンが作成されます。

 

 起動してみます。

 

 ネットワークアダプターが接続されていない事を除き、元の仮想マシンと同一です。(のはず)

 

 このテスト仮想マシンで、例えば仮想マシンが開始・一時停止・停止できることや、アプリケーションの起動・稼働確認等が行えます。
(IPアドレスが Duplicate しないように再設定すれば、実際にネットワークを接続してのテストもできます)

 テストが終了したら、HV002 上の CentOS6_001 を右クリック > 「レプリケーション」 > 「テストフェールオーバーの中止」 を選択。

 「テストフェールオーバーの中止」 をクリックすると、一時仮想マシンが削除されます。

 

 

§ 4-2.  計画フェールオーバー

 仮想マシンを計画的にレプリカサイトに移動させる機能です。

 完全なレプリカを作成できますが、仮想マシンを停止する必要があります。

 

 停止済みのプライマリサイトの仮想マシン (今回であれば HV001 上の CentOS6_001) を右クリック > 「レプリケーション」 > 「計画フェールオーバー」 を選択します。

 

 フェールオーバーをクリックします。
 (規定では 「フェールオーバー後に仮想マシンを起動」 するにチェックが入ってますが、外してももちろん構いません。 その場合は後で手動起動。  「フェールオーバー後に・・・反転する」 も、規定ではチェックなしですが、ここで有効にしてもよいですし、あとからでも有効にできます)

 

 前提条件が満たされていれば、下記のように各フェーズが成功して、フェールオーバーが完了します。

 

 HV002 上でレプリカ仮想マシンが稼働します。

 レプリカ仮想マシンの作成時にネットワークを接続していますが、念のため、仮想マシンのネットワーク接続については、もう一度確認したほうがよいでしょう。

 

 

 今回はフェールオーバー実行時にレプリケーションを反転させましたので、レプリカ起動時とともに HV002 から HV001 にレプリケーションが行われています。

 

 HV001 側に戻すには、HV002 上の仮想マシンを停止(シャットダウン)、右クリック > 「レプリケーション」 > 「計画フェールオーバー」 を実行します。

 

 

§ 4-3. フェールオーバー (とフェールバック)

 フェールオーバーは、仮想マシンを強制的にレプリカサーバーに移す機能です。

 プライマリサイトの障害を前提に稼働させる機能ですので、まずはプライマリの仮想マシンを(障害のつもりで)停止して、試してみます。(プライマリ仮想マシンの起動中にフェールオーバーさせたらどうなるかは、この後で試してみたいと思います。)

 

 

  プライマリサイト、レプリカサイトの仮想マシンともに停止状態になっている事を確認し、レプリカサイト(HV002)上の仮想マシンを右クリック >  「レプリケーション」 > 「フェールオーバー」 を選択。

 

 回復ポイントをプルダウンから選択し、「フェールオーバー」 をクリック。

 

 レプリカ側(今回であれば HV002上 )で仮想マシンが稼働しました。 

 回復ポイントが作成されたタイミング次第ですが、「計画フェールオーバー」 や 仮想マシンの移動(ライブマイグレーション) とは違い、最新の状態ではない可能性がありますので、注意が必要ですね。
 ・・・とはいっても、どうしようもないですが。。。

 

 ここで、仮想マシンのレプリケーションの状態を見てみる(右クリック > 「レプリケーション」 > 「レプリケーションの正常性の表示」)と、 フェールオーバー前と変わっていない(HV001 -> HV002 へレプリケーションが継続されている) ことがわかります。

  • HV002 上の仮想マシン(CentOS6_001)で確認したところ。

 

  • HV001 上の仮想マシンで確認したところ。

 

 これだとまずいので、(HV001 が障害から復旧したことを前提に) レプリケーションの方向を 反転(HV002 から HV001 に複製)させます。

 

  • HV002 上の仮想マシンを右クリック > 「レプリケーション」 > 「レプリケーションの反転」 を選択。

 

 ウィザードが開始されます。 指示にしたがってレプリケーションを反転(HV002 から HV001 に向けてレプリケート)します。

 

 レプリカサーバには 「HV001 」 を。

 

 これで、プライマリサイトがひっくり返った以外は、元通りになりました。

 

 最後にフェールバック(プライマリサイトを HV001 に戻す)です。
 (このままでもいいんですが・・・)

  「計画フェールオーバー」 、「フェールオーバー」 のどちらでもフェールバックできますが、仮想マシンの同期などを考慮すると、「計画フェールオーバー」 で戻してあげるのがいいはず。
 (これまでのと被るので、操作記録はなしです)

 

 

【HV001 上の仮想マシンが起動している状態で、フェールオーバーを実行してみました】

 最後に。
 操作間違いや、実際にこういった類の障害が発生しないとも限りませんので、プライマリ仮想マシン(HV001)が起動している状態で、フェールオーバーを行うとどうなるのか、試してみました。

 結論から言うと、フェールオーバー実行 > プライマリサイトの仮想マシンが(自動で)一時停止し、HV001 -> HV002 のレプリカも停止しました。

  • HV001 上の仮想マシン: (自動で)一時停止
  • HV002 上の仮想マシン: 稼働
  • レプリケーション: 停止

 なのですが、おそらく、自動停止するまでの時間 = レプリケーション間隔(今回だと 5分)、のように見受けられます。
 HV001 上の仮想マシンが自動停止するまでの間、IP アドレス/MACアドレスが Duplicate になってしまうので、通信が混乱します(するはず)。
 ですので、プライマリ側は やはり事前に停止しておくのが無難ですね。。。 (実際の障害ではそんな余地もないかもしれませんが)

 この検証ですが、一回目は上記のような状況だったのですが、次に同じことをしたところ、下記のように電源OFFしろと怒られました。。。

 

 では、 HV001 のLANケーブルを抜いて、HV002 にフェールオーバーさせてから、HV001 が復帰(LANケーブルを挿す)したらどうなるだろう、と思って試したところ、

 最初の検証と同じ状態になりました。(HV001 上の仮想マシンが自動で一時停止、レプリケーションも停止)

 ちゃんと整合性とるような仕組みが実装されるようです。。。

 

 

 以上で、今回の備忘録は終了です。
 無料でここまでできるとは、Hyper-V のレプリカ機能、かなりイイですね。 別サブネットでもレプリカ動かせるそうなので(今回は検証してませんが)DRにもってこいかも。

 Hyper-V には、今回試してみたレプリケーション以外にも、ライブマイグレーション(仮想マシンが起動した状態で、他の Hyper-V Server に移動する) もできますので、レプリケーションとの併用も気になるところです。 こちらについては、また別の機会にでも備忘録したいと思います。

 

 

 

Hyper-V Server 2012 R2 その①

 Microsoft の Hyper-V Server 2012 R2  上で 、ゲストのLinux ( CentOS ) のレプリケーションとフェールオーバーを試してみました。

 (今回の備忘録は、Hyper-V Server の構築までとなります。 ゲストOS の レプリケーションと フェイルオーバーについては、 記事 その②で別途書きたいと思います)

 Hyper-V Server 2012 R2 は、Windows Server 2012 R2 に実装されている Hyper-V が単体で利用できる、無償のソフトウェアです。
 Hyper-Vは、1台の物理コンピュータ上で複数のオペレーティングシステムを同時に実行できる環境を提供する、ハイパーバイザ型の仮想化ソフトで、 2012R2 では Linux のサポート強化や、 Hyper-V レプリカ を使用して 稼働中のゲストOS を複製したり(最短で 30秒間隔で差分レプリケーション)、第二世代の仮想マシン(PXEブートやUEFIファームウェアのサポートなどに対応)の提供 など、前世代より強化された機能が提供されています。   稼動させるのに必要なサーバ要件は こちら (英語ですけど。。。) 

 

 

  今回作った構成はこんなです。

 

 Hyper-V  Server x 2台を同じ IPセグメントに接続、ゲストの Linux (Cent OS 6) を レプリケーション させてみます。(フェールオーバーの確認も)

 また、Hyper-V Server の管理用に、別途 Hyper-V Manager (Windows Server 2012 R2) を用意しました。

 

【 Hyper-V Server にするデスクトップPCのスペック (2台とも) 】

  • 機種 : Lenovo / ThinkCentre A58 Small
  • CPU : Intel Core2 Duo E7500 @ 2.93GHz
  • Memory : 4GB
  • HDD : 300GB
  • NIC : 1ポート (Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller )

 ※ インストール中にHDD はフォーマットされるので、大事なデータが入っている場合は バックアップを。

 

 

§ 1. Hyper-V Server 2012 R2 のインストール

 まずは Hyper-V Server 2012 R2 を こちら からダウンロード(Microsoft アカウントでのサインインが必要です。  アカウントがない場合は、こちらから 作成 を)して、

 DVDに焼きます。(方法は割愛しますが、Microsoft が紹介している方法を こちらに

 (なお、今回ダウンロードしたファイルは 「9600.16384.WINBLUE_RTM.130821-1623_X64FRE_SERVERHYPERCORE_JA-JP-IRM_SHV_X64FRE_JA-JP_DV5.ISO」 になります)

 焼いたDVD から PC を起動して Hyper-V Server をインストールします。

 インストール DVD から起動。

 

 インストールする言語などを指定します。 お好みの言語やキーボードを指定して、「次へ」をクリック。 (今回は日本語インストーラー DVD をダウンロードしたので、デフォルトで日本語環境が選択されています)

 

 「今すぐインストール」 をクリック。

 

 ライセンス条項が表示されます。 「同意します」 にチェックを入れて、「次へ」 をクリック。

 

 インストールの種類を選択します。 今回は新規インストールになるので、「カスタム(新しいバージョンの・・・)」 をクリックします。

 

 インストール先のHDD を選択します。 今回は内蔵 HDD (300GByte) が 1本なので、「ドライブ0 – パーティション1」 を選択します。

 

 インストールが開始されます。 

 このあと、何回か再起動してインストールが完了、ログイン画面が表示されます。

 

 Ctrl + Alt + Del キーを押してログインします。 初回ログオンなので、デフォルトのAdministrator ユーザでのログインになります。 また、初回パスワード変更を求められますので、画面に従って変更します。

 

 

 パスワード変更が完了しログインに成功すると、CLI画面が2つ (「cmd.exe」 画面と、「sconfig.cmd」 画面) 表示されます。

 Hyper-V Server 単体では、上のように CLI のみの操作となります (※ 時刻設定などは一部の画面は GUI のもありますが、肝心なところは全部CLI)。  

 IPアドレスなどの基本的な設定については、sconfig.cmd 画面(青色の画面)からメニュー形式で設定できます。  (その他 詳細な設定についても 全て CLI からできるようですが、GUI のほうがいろいろと楽そうなので、後述のように Hyper-V Manager を利用します。)

 sconfig.cmd 画面でまずは一通り設定を行いましょう。 今回は、

  1)  Workgroup のまま

  2) コンピュータ名

1台目のHyper-V Server :  HV001

2台目のHyper-V Server : HV002 

  3) ローカル管理者 (今回は特に追加せず)

  4) リモート管理の構成

リモート管理 : 有効

Pingへの応答 : 許可

  5) Windows Update : 手動

  6) 更新プログラムのダウンロードとインストール : 適宜実行

  7) リモートデスクトップ : 有効(すべてのクライアント)

  8) ネットワーク設定 : 固定IPアドレスを設定

としています。(スクリーンショットは割愛します。 画面の指示に従っての設定で、特に難しくありません)

 

 

§ 2. Hyper-V の操作準備

 Hyper-V Sever 2012 R2 本体のユーザーインターフェースは CUI(コマンドライン)のみで、GUI は実装されていません。

 しかし、別途 Hyper-V Manager (Windows Server 2012 R2 に実装のものか、 Windows 8  (のPro/Enterprise のみ)に実装されているもの) があれば、リモートから GUI での操作が可能になります。

 Windows 7 / Windows Server 2008 以前にも Hyper-V Manager  はありますが、これらは同世代( Windows Server 2008 / 2008 R2 )の Hyper-V  までしか管理できない模様(Microsoft サイトでの出典は確認できなかったのですが。。。)なので、 2012 R2 を使用します。

 

 今回は Windows Servver 2012 R2(評価版)を準備し、こちらのHyper-V Manager を使用します。

 インストール直後の Windows Server 2012 R2 であれば、まずは リモートサーバー管理機能(RSAT / Remote Server Asministkation Tools)  機能を有効にします。 (Windows Server 2012 R2 上で 既に Hyper-V を使用している場合は Hyper-V Manager も動く状態になっているので、この手順は不要です)。

(Windows 8 でRSATを有効にする方法は こちら (英語の解説ですけど・・・))

 

 サーバーマネージャーから 「役割と機能の追加」 を起動します。

 

 インストールの種類で、「役割ベースまたは機能ベースのインストール」 を選択。

 

 役割をインストールする対象のサーバーを選択。

 

 役割の選択。 今回の場合、ここは何も選択せずに 「次へ」 。

 

 機能の追加。 ここで 「リモートサーバー管理ツール」 にチェックを入れます。

 

 リモート管理ツールには IIS が必要になります。 インストールされていない場合、下記のように追加するか尋ねられますので、「機能の追加」 をクリックして同時にインストールします。

 

 リモートサーバ管理ツールにチェックが入ったら、「次へ」 で進みます。

 

 追加で必要になる IIS の確認画面です。こちらも、「次へ」 で先に進みます。

 

 IIS の役割選択画面が表示されます。 ここはデフォルトのままで。

 

 「インストール(I)」 をクリックします。

 

 しばらくすると、インストールが終了。

 「閉じる」 をクリックして終了します。

 

 

§ 3. Hyper-V Server への接続

  Hyper-V マネージャを起動して、2台の Hyper-V Server に接続(管理)を行います。 

 Windows Server 2012 R2 で、 「スタート」 > 「管理ツール」 を開き、「Hyper-V マネージャ」 を選択、ダブルクリックして起動します。

 

 Hyper-V マネージャが起動します。

 

 管理対象となる Hyper-V Server を追加していきます。 (今回の場合は、HV001、HV002 の2台)

 右ペインの 「サーバーに接続」 をクリック(もしくは 左ペインの 「Hyper-V マネージャ」を右クリック > 「サーバーに接続」)します。

 「コンピューターの選択」 ウィンドウが出ますので、「別のコンピュータ」 を選択し IP アドレス(HV001のもの)を入力、「OK」 をクリックします。

 

 左ペインに Hyper-V Server が追加されました。(この例だと ホスト名「HV001」)

(上記画面では、RPCサーバと通信できないエラーが出てますが、一時的なもので、最終的には接続できてます。 経緯は本文最下段に。。。)

 

 同様に、もう 1台の Hyper-V Server (HV002) も追加します。

 

 以上で、Hyper-V Server の構築は完了です。 次回 はゲストOS(Linux)をインストールして、レプリケーションやフェールオーバーを行ってみたいと思います。

 

 

==== ==== ==== ==== ==== ==== ==== ==== ==== ==== ==== 

以下は、Manager に Server を登録した際、RPC のエラーが出て接続できなかった際の備忘録です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

原因は、Hyper-V Manager を 仮想マシン(VMware Player)で実行しており、NIC の設定が ホストと共用( NAT )していたからでした。 NAT やめて Bridge で 固定 IP にしたらすんなり繋がった。。。 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 調査の過程で、便利そうなツール(hvremote.wsf)を見つけたので、その備忘録として調査過程を残しておくことにします。

 

 Serverを追加したところ、 「RPCサーバーを使用できません。 (Hyper-V Server) と (Hyper-V Manager) との間の通信を確立できません。」 との表示。。。

 どうやら、Workgroup に所属する Hyper-V Server をリモート管理するには、いろいろ追加設定が必要( technet の 情報 より)なようです。。。

 Hyper-V Server が Active Directory に参加していればすんなり行くようですが、今回は workgroup のまま、 technet の方法を踏襲します

 ↑  WinSvr2012R2 だと不発でしたので、同ページからリンクを張られている HVREMOTE スクリプト のサイトに記載の 「10-second guide」 -> 「Client and Server both workgroup」 の内容を参考に設定します。

 

 ① まずは、Hyper-V Server 側の設定から。  2台のサーバー(HV001 と HV002) にそれぞれ ローカル管理者を追加します。 (スクリーンショットはありませんが、sconfig.cmd 画面から「 3) ローカル管理者の追加」 を選択し、画面の指示に従いユーザを追加。  今回は、「 admin002 」 というユーザを作成)

 

 ② 次に、Microsoft の John さんが作成したという 便利スクリプト HVREMOTE (hvremote.wsf)を ダウンロード 。  このスクリプトは、Server側(Hyper-V Server) / クライアント側(Hyper-V Manager) の双方で使用しますので、適宜配置(今回は、c:\99.Work フォルダに配置して作業)します。  

 (サーバー側(Hyper-V Server) にはブラウザがないので直接上記サイトからダウンロードできませんので、USBメモリ経由でコピーしました。 ※ サーバー側では FTP コマンドも利用できますが、 WIndows Firewall に遮断されてしまう  ← CLI で設定変更するのが面倒なので)

 このスクリプトですが、引数(リモートサーバーの指定)に IP アドレスが使えない(ホスト名のみ)なので、 hosts ファイルに書いて名前解決しないとです。

c:\99.Work>notepad C:\Windows\System32\drivers\etc\hosts
10.10.10.10    HSV001
10.10.10.11    HSV002

 

 ちなみにこのツール、サーバ <-> マネージャ間の接続状況などのレポートをしてくれる機能もあります。

c:\99.Work>cscript hvremote.wsf /show /targer:HV001
<ここにずらずらとレポートが出てくるので、エラーになっている箇所を探して、対応してみる。 今回の NIC/NAT 問題も、これで気づきました。>

 

 ③ サーバー側(Hyper-V Server)でユーザのアクセスを許可。

c:\99.Work>cscript hvremote.wsf /add:admin002

 サーバー側での設定は以上です。

 

 ④ クライアント側(Hyper-V Manager)の設定に移ります。  リモートDCOM からの 匿名ログオンを許可します。

c:\99.Work>cscript hvremote.wsf /add:admin002
PS C:\99.work> cscript .\hvremote.wsf /anondcom:grant
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.


Hyper-V Remote Management Configuration & Checkup Utility
John Howard, Hyper-V Team, Microsoft Corporation.

Version 1.08 9th Sept 2013

INFO: Computername is win2012r2-001
INFO: Computer is in workgroup WORKGROUP
INFO: Current user is WIN2012R2-001\Administrator
INFO: OS is 6.3.9600 64 ビット Microsoft Windows Server 2012 R2 Datacenter 評価版
INFO: Assuming /mode:client as the Hyper-V role is not installed
INFO: This appears to be a server SKU

INFO: Obtaining current Machine Access Restriction...
INFO: Examining security descriptor
INFO: Nothing to do - ANONYMOUS LOGON already has remote access
INFO: Are running the latest version
INFO: HVRemote complete
PS C:\99.work>

 

 ↑ このあと、「cscript hvremote.wsf /show /targer:HV001」 したらどうやら NAT のせいで RPC が途絶しているようだったので、 VMware Player の NIC 設定を Bridge にして固定IPに変更したら、すんなり繋がりました。 (ですので、上記 ① ~ ④ はやらなくても接続に影響なしです)。

==== ==== ==== ==== ==== ==== ==== ==== ==== ==== ==== 

 

 

 

Windows IPアドレス変更 バッチファイル

 Windows 7 のラップトップPCを使っているのですが、 IP アドレスを変更する機会が頻繁にあるため、バッチファイルに netsh コマンドを記述して手早く切り替えられるようにしています。

  • DHCP で IPアドレスを取得する場合
@echo off
setlocal

rem インターフェイス名称を変数(IFNAME)として定義。名称に空白(スペース)を含むため、""で囲みます。
set IFNAME="ローカル エリア接続"

rem IPアドレスを DHCP で取得。
netsh interface ipv4 set address name=%IFNAME% source=dhcp

rem DNSサーバーのアドレスをDHCPで取得。
netsh interface ipv4 set dns name=%IFNAME% source=dhcp

 インターフェイスの部分は、インターフェース名称 もしくは インデックス で指定します。 (名称は コマンドラインから ipconfig コマンド で確認するか、コントロールパネル のネットワークと共有センター > 「アダプターの設定の変更」 からも確認できます。  一つのLANポートしか持っていない日本語Windows 7 であれば上記の文字列のはず。 また、ちゃんと確認してないのですが、WIndows 10 からは別の文字列になったようです。)

 

 インデックスは、下記のコマンドで確認できます。

netsh interface ipv4 show interface

 下記の場合、「ローカルエリア接続」 の インデックス(Idx)は 「11」 になります。

 

 

  • 固定IP アドレスを設定するバッチファイル
@echo off
setlocal

rem インターフェース名称を変数(IFNAME)として定義。名称に空白(スペース)を含むため、""で囲みます。
set IFNAME="ローカル エリア接続"

rem IPアドレスを変数(IPADDR)として登録
set IPADDR=10.10.10.1

rem サブネットマスクを変数(MASK)として登録
set MASK=255.255.255.0

rem デフォルトゲートウェイを変数(GW)として登録
set GW=10.10.10.254

rem DNSサーバーを変数(DNS1,DNS2)として登録
set DNS1=10.10.10.10
set DNS2=10.10.10.11

rem IPアドレス、マスク、デフォルトGW を設定。
netsh interface ipv4 set address name=%IFNAME% source=static address=%IPADDR% mask=%MASK% gateway=%GW% gwmetric=1


rem DNSサーバーを設定(優先順位 1 に 変数 DNS1 を)(validate=no ; DNSサーバーの検証なし)
netsh interface ipv4 add dnsservers name=%IFNAME% address=%DNS1% index=1 validate=no


rem DNSサーバーを設定(優先順位 2 に 変数 DNS2 を)( validate=no ; DNSサーバーの検証なし)
netsh interface ipv4 add dnsservers name=%IFNAME% address=%DNS2% index=2 validate=no


 

 こんな具合で DHCP用や 各環境用のIP設定バッチファイルを作成し、一箇所のフォルダーに纏めてます。

 各ファイルを右クリックして、「管理者として実行」 すると反映されます。

 

 ちなみに、hosts ファイルへのショートカット

 C:\Windows\System32\drivers\etc\hosts

 もこのフォルダに作成してます。すぐ編集できるので、重宝です。 ^^)

 

 netsh コマンドについては Microsoft の MSDN netsh に詳しく解説があります。