Hyper-Vチェックポイントが膨れ上がり、ディスク枯渇したときの復旧方法

# 環境
* Hyper-V Server 2012 R2

# ディスク枯渇は突然に
ある日、社内で使っているHyper-V Server上の仮想マシンが全て「一時停止」状態になりました。
見てみると、ホストOSのディスク使用量が0%になっていました。

え？全然心当たりないし。

と思ったものの、念の為調べて見ると、チェックポイント（VMwareでいうところのスナップショットみたいなもの）の容量がとんでもないことになっていました。

ピンときました。
1ヶ月前に仮想マシンをメンテナンスする際に、チェックポイント作成してそのまま削除せずに今に至っていました。

# そして長い復旧が始まった・・・
幸いにも自分たちが社内で使ってる検証用の仮想マシンたちなので、影響はあまりないものの、インフラエンジニアとしては可及的速やかに復旧したいところです。

## チェックポイント削除

![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/f521cf2a-8361-7b5c-7a41-ec67edc11c90.png)

はい。これが失敗の始まりでした。
軽い気持ちで削除しちゃえばよくね？と思ってやっちゃいましたが、よくよく考えるとチェックポイントを結合する為の容量が不足してますね。

当然失敗します。

ここで、きちんとスナップショット容量分のディスクを確保して削除すれば無事復旧です。
でも、それを怠った私はここから長い復旧作業に陥ることになります。

## チェックポイントに不整合が？

さて、チェックポイントの削除に失敗しましたが、Hyper-Vマネージャから見るとチェックポイントは存在しないことになってます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/fc47ab71-f5a6-f0b4-eacc-0dfd1c54c274.png)

でも、仮想ディスク格納先フォルダを見てみると、チェックポイントファイル（.avhdx）はしっかり残っています。
不整合ですね。
ちょっと危険な香りがしてきました。

## とりあえずディスク容量確保！

過去作ったけどもはやいらない仮想ディスクなんかを削除しまくって、スナップショット容量と同程度の空きを作りました。

## 手動でチェックポイントを結合する

* Hyper-Vマネージャから、[編集]→[ディスクの編集]を選択します。
* ディスクの編集ウィザードが開くので、[次へ]を選択します。
* [参照]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/e94b552a-f22b-48a6-d04e-8c45b2228264.png)
<br>

* 対象のチェックポイントファイルを選択します。チェックポイントが複数ある場合は、1番新しいものを選択してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/9a4422d3-fe5d-c57d-4ccf-f5bc00c2814e.png)
<br>

* [結合]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/ec37a3ba-2c51-ad17-dbe2-5e7e88d06966.png)
<br>

* [親ハードディスクに結合する]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/0010fe2e-f479-41ec-dfbb-dbc7d43827c5.png)
<br>

* 対象のチェックポイントと親が正しいことを確認して[完了]を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/9279bef8-5e5f-59af-1417-eb5757b4eb61.png)
<br>

* 結合失敗する場合は、仮想マシンを停止して試してみてください。私はそれでうまくいきました。（てか、この作業やる前に停止したほうがよかった・・・）
* この処理をスナップショットがなくなるまで繰り返します。結合は新しいスナップショットから順々に実施していきます。

## いざ仮想マシン起動！・・・あれ？

* 仮想マシンのハードディスクの向き先がチェックポイントファイルになっているので、これを本体のvhdxファイルに変更します。
* 仮想マシンを[右クリック]→[設定]→[SCSIコントローラー]→[ハードドライブ]→[参照]を選択して、vhdxファイルに変えてあげます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/da162516-7a8f-01a1-bd2f-a7814c176075.png)
<br>

* さて準備は整った。いざ適用！・・・データ損失？なんだか怖いメッセージが出ますが、ここは勇気を出して[続行]を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/12120748-88b3-a0c9-c5c6-9fc742b8ab23.png)
<br>

* さあ、いざ適用！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/392a9649-68e9-5d05-c564-ee25fa3d40af.png)
<br>

```
ハードドライブの変更を適用中にエラーが発生しました
ディスクを変更できません。ディスク結合が保留中です。
```

ゾッとしました。
この時点でマズイかなと思い始めました。対策が思い浮かばない・・・
頭の中では利用者のみんなになんて謝ろうか駆け巡ってました

## とりあえずHyper-V Server自体を再起動してみる
困ったときの再起動
Hyper-Vがなんか掴んでて再起動したら結合の保留も終わるんじゃね？という安易な考えです。

再起動しても症状は変わりませんでした。

仮想ハードディスクの画面で、「この仮想マシンにはチェックポイントがあるため、[編集]は使用できません」と出ています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/da162516-7a8f-01a1-bd2f-a7814c176075.png)
<br>

これをどうにかしないといけないのでは？？

## 仮想ディスクを切断する
これが正解でした。
チェックポイントの仮想ディスクを切断して、本体ディスクを追加するというやり方です。

* 仮想マシンを[右クリック]→[設定]→[SCSIコントローラー]→[ハードドライブ]を選択して、[削除]を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/709371c0-c99c-6eaa-952f-6c81845607cf.png)
削除って名前が怖いですよね・・・切断とかにすればいいのに。
これ適用しても仮想ディスクは消えないので安心してください。  

* [適用]を押します
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/0ee487ad-6397-03bd-8943-0802f093cbca.png)
<br>

* もはや見慣れたデータ損失のメッセージ。[続行]を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/de860bfa-509a-201b-a85e-3461667beb57.png)
<br>

* 仮想ディスクが消えました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/028bdbf7-aced-6100-0dd8-874b613f70b3.png)
<br>

* 次に本体の.vhdxファイルを接続します。SCSIコントローラーからハードドライブを追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/d0086fe7-129a-c149-93a8-7e9ec1da02cf.png)
<br>

* [参照]を選択して、.vhdxファイルを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/180335/b113e1a6-ebff-8b63-74d8-4a8e391db443.png)
<br>

* いざ、適用！
  お！エラー出ない！


仮想マシンを起動してみると無事立ち上がりました！！

めちゃめちゃ焦りましたが、無事復旧することができました。
チェックポイントの消し忘れには注意しましょう！