Hyper-V仮想マシンのCドライブ丸ごとOneDriveで同期する

## ストーリー
- ハイブリッド勤務社員からノートPCを毎回持ち運ぶのが重いと言われる。
- 「自宅と会社用にPCを2台にしてほしい」と言われ、貸与。
- しかしOneDriveでデータ同期はできるが「壁紙や業務アプリの設定が同期されない」との指摘。
- 情シスとしても2台の管理で2倍の手間になっている。
- 「だったらOS丸ごと同期できないかな？」

:::note info
**やりたいこと**
・Hyper-Vで仮想化したWindows11のCドライブを、OneDriveで丸ごと同期できるかの検証
:::

:::note warn
**検証手順**
1. 物理PC1でVMを作る。
2. VMのCドライブ（VHDXファイル）をOneDriveに同期する。
3. 物理PC2でVMの器だけ作る（この時点ではディスクはなし）。
4. 物理PC2でOneDriveからVHDXをダウンロードする。
5. VMにVHDXをアタッチして起動する。
:::

## 環境
- 物理PC1（Windows11 Pro）
- 物理PC2（Windows11 Pro）
- Hyper-V
- OneDrive


## 注意点
・仮想マシンの話となります。
・実運用する場合は、Hyper-VゲストVM1台ごとにOSライセンスが必要です。
・SIDが重複するのでActive Directory参加は考慮が必要です。

## 手順１：物理PC1でVMを作成

容量固定のVHDXで作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/375f8d7e-4d1c-1138-2deb-44e761180951.png)

保存先をOneDriveに、容量は16GBで作ってみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/ee542f5d-4753-1ef5-29af-5ef3b2b624bb.png)

VMの設定は以下にします。

:::note info
- TPMをオン
- メモリを4096MB
- 自動チェックポイントはOFF
- NICはなし
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/a8e3427b-621a-29d1-b4a3-64f72a933611.png)

セットアップを開始します。SHIFT+F10でローカルセットアップをします。

```
oobe\bypassnro
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/424e8fc2-a8e0-317b-9ae1-e3556ea906ab.png)

インストールが完了しました。いったんVMの電源を落とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/93aec402-d6a6-cc4a-8dfa-fdb2e13bea0d.png)

## 手順2：物理PC1のOneDriveでVHDXを同期

OneDriveにVHDXファイルを同期します。アップロードには20分かかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5ef984b2-9733-c88b-0f33-914e37234a41.png)

## 手順3：物理PC2のOneDriveでVHDXを同期

「このデバイス上で常に保持」を選択するとダウンロードが始まります。ダウンロードには40分かかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/4a1b3f72-2bd6-518f-1e58-65738bb860f4.png)

## 手順4：物理PC2でゲストVMを作成

先にVMの器を作ります。物理PC1と同じ設定にしますが、コア数やメモリなどは変えても影響ありません。

起動ディスクとしてOneDriveから同期したVHDXを指定します。

TPMのエラーになるかと思いましたが普通に起動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/494eff3e-b187-2033-425b-f1921f057332.png)

## 手順5：差分同期による書き戻し

物理PC2で以下の変更を保存します。

- 壁紙を変更
- デスクトップにデータを保存
- Edgeの設定を変更

VHDXがオンライン状態のため、常に「変更の処理中」が表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e80d967e-189d-5899-1396-c08feef56f84.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/db1eba4e-fe20-5961-483e-e640d908e428.png)

「変更の処理中」で止まったままになってしまったので、VMを停止しPCを再起動したところアップロードが開始されました。差分ではなくフルになっています。

ちょっと想定と違う動作となっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/547a30ed-d540-61d6-28cb-23d87cb90c01.png)

## 手順6：物理PC1で起動

物理PC1で再同期してマシンを起動すると、設定が変更された状態であることを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/25fd2e0c-78d9-bd38-0a3d-7dd180d4164d.png)

## まとめ
- 今回VHDXをオンライン状態のままOneDriveに同期しましたが、常に再計算が走るためか、途中で動作が停止しました。
- VDHXファイルのACLエラーも生じたので、「VHDXをオンライン状態で気軽に同期する」というゴールは難しそうです。

::: note info
**現実的な運用**
- VMをシャットダウンしてから同期するのがよさそうです。
- または「このデバイスで常に保持」せず、使うときだけOneDriveからローカルの別フォルダにコピー（ダウンロード）する方法でしょうか。
:::

## VDIとはちがうの？
- ゲストVMはローカル物理PCのマシンパワーで起動するので、オフラインで作業ができます。
- VDIが「低帯域の常時接続」が必要なのに対し、こちらは「利用開始と終了時に大容量トラフィック」になる点が特徴です。
- VDIサーバーの管理コストが不要となります。

::: note warn
**メモ**
- 回線速度によるのか分かりませんが、16GBの同期は数分～数十分と波がありました。
- 動作停止した場合、OneDriveの再起動、またはPC再起動は効果があります。
- タスクマネージャで「OneDriveを数時間おきに再起動」といったタスクを作るのもありかもれしません。
:::