ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
Hyper-V上に構築しているCentOSを7.2から7.3にグレードアップしたところ、Windows Server 2012R2 Essentials上で取っているWindows Serverバックアップでアップグレードしたサーバのみ失敗し続ける事象が発生してしまいました。
こちらがバックアップが成功していたバージョン
Linux localhost 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
こちらがバックアップが失敗するようになってしまったバージョン。
Linux localhost 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
カーネルレベルは変わっていないですね。CentOSが7.2→7.3となっています。
KB3063283の適用(失敗)
いろいろと調査してみたところ、以下のような記事がありました。
Microsoft-Windows-Hyper-V-VMMS/Admin Hyper-V-VMMS 10172
仮想マシン 'VM Name' 内の VSS ライターは、シャドウ コピー (VSS スナップショット) に対応する BackupComplete を実行できませんでした: オブジェクトがその関数に対して正しくない状態だったときに、 関数呼び出しが行われました (0x80042301)。(仮想マシン ID C0FEF3FB-BE65-445F-B663-C9E93D6CE8D5)Microsoft-Windows-Hyper-V-VMMS/Admin Hyper-V-VMMS 16010
操作に失敗しました。Application SPP 16387
スナップショットの作成中に、ライター Microsoft Hyper-V VSS Writer でエラーが発生しました。 詳細情報: 。
…
この問題の対策は KB3063283 で修正プログラムが出ています。KB3063283
HYPER-V Server 2012 R2 の HYPER-V の統合コンポーネントのバックアップを改善する更新プログラムします。
この修正プログラムは Windows Update や SP 提供されていないので、症状が出る場合は修正パッチ適用が必要になります。
ということでリンク先からパッチをダウンロードしたのですが、ダウンロードしたWindows8.1-KB3063283-x64.msuを適用しようとしても、「この更新プログラムはお使いのコンピューターには適用できません。となってしまいます。
ダウンロードしようと思っても1つしかなく、1つでWindows8.1とWindows Server 2012R2に対応しているように見えるのですが…。
ということで別の方法を考えてみます。
hyperv-daemonsの導入(成功)
どうやらLinuxにはhyperv-daemonsというVMwareでいうところのVMware Toolsに当たるものでしょうか。
hyperv-daemonsパッケージ(hypervfcopyd、hypervkvpdおよびhypervvssdの各パッケージを含む)は、Microsoft Windowsホスト上のHyper-Vで動作しているOracle Linuxゲスト用に、Hyper-Vファイル・コピー、キーと値のペア(KVP)およびボリューム・シャドウ・コピー・サービス(VSS)のデーモンを提供します。
ファイル・コピー・デーモン(hv_fcopy_daemon)は、ホストとゲスト間のファイル・コピー・サービス(hypervfcopyd)を実装します。
KVPデーモン(hv_kvp_daemon)は、仮想マシン・バス(VMbus)を使用してゲストに関する情報をホストに送信する、hypervkvpdサービスを実装します。
VSSデーモン(hv_vss_daemon)はhypervvssdサービスを実装し、これを使用して、ゲストで実行中のプロセスによるホスト・ボリュームの読み書きを妨げずに、ホストからボリュームのスナップショットやバックアップを作成できます。
パッケージをインストールしたら、ゲストを再起動します。
ということで以下のコマンドでインストールします。特にレポジトリの追加等は不要です。
でリブートするとhypervkvpdが自動で起動します。
再度バックアップを取ってみると…
今度は成功していました。良かった!