11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

物理マシンを効率的に仮想マシンに変換する(Proxmox)

Last updated at Posted at 2021-08-07

お世話になります。

物理マシンを仮想化することをP2V(Physical to Virtual)といいますが、今回以下のような構成で行ってみます。
できるだけIT管理者が負担にならない方法を目指すこととします。

流れ

  1. Disk2VHDを使って物理ディスクを仮想ディスク(VHDX)に変換する
  2. Proxmox上に中継ファイルサーバーを作り、/var/vz/imagesにシンボリックリンクを作成する
  3. VHDXを変換してProxmoxのVMにアタッチする
    image.png

まず物理SSDを仮想ディスク(.VHDXファイル)に変換します。マイクロソフト謹製のDISK2VHDというツールをダウンロードします。
image.png

exeを実行すると、保存先が指定できます。
トータルが120GBのSSDで、利用中なのは15GB程度でした。この15GBだけ可変ボリュームとして変換しますので、無駄な処理がなく、便利です。
image.png

通常、保存先として、
・外付けUSBディスク
・ネットワークドライブ(NAS)
を指定することが多いですが、大量ボリュームのためNASだとGbEの制約で低速となり、SSDが数百ギガに及ぶ場合、かなり時間が待たされます。

また、外付けUSBディスクの場合はNASより多少早いものの、「いったんコピー」という形になるので、仮想サーバーまでの再コピーで2倍時間がかかってしまいます。また企業PCとしてはセキュリティ的に難点があります。
image.png

そこで今回は「直接Proxmoxサーバにアップロードする」という方法ができるか検証します。物理マシンの画面はいったんおいておきます。

こちらのサイトを参考にし、ProxmoxへのSSH接続&SMB共有としての中継サーバーを作ります。
https://taiyakon.com/2018/08/windowswinsshfs-vmubuntusshfssmb.html

中継サーバーからシンボリックリンクを貼るというのは素晴らしい発想だと思いました。
WinSSHFSを直接ゲストWin10にマウントすると不安定という情報があったので、このような中継方法のほうが安定しそうですし、複数のクライアントに効率的に対応できそうです。

ディストリビューションは何でもよいのですがTurnkey File Serverを利用しました。
ProxmoxでTurnkeyをインストールします。
image.png

image.png

クライアント側へのSMB共有ができました。前回のWin10マシンが不調になったため別マシンに切り替えています。
image.png

続いて、中継ファイルサーバーにてsshfsをインストールします。

apt-install sshfs

image.png

空のフォルダを作成します。ここが中継点となります。Proxmoxへのシンボリックリンクを作るようなイメージだと思います。

image.png

SSHFSでマウントします。中にファイルがあるとエラーになってしまうので注意してください。

sshfs -o auto_cache -o reconnect  -o allow_other -o idmap=user  username@proxmoxserver:/var/lib/vz/images /srv/vhdx-transfer

SAMBAのWebminで改めてこのフォルダーを新規共有し、クライアントから見えるようになりました。
image.png

テキストファイルを置き、Proxmoxから見えることを確認します。
image.png

image.png

ここでDISK2VHDの操作に戻ります。ディスクイメージの出力先(コピー先)として先ほどのvhdx-transfer共有フォルダを指定します。

交換したマシンはクリーンインストール直後なので、9GBで済むようです。
ファイル名はシリアル番号など、会社で決めている管理名で分かりやすくしておきます。
image.png

P2V成功後の確認用にテキストファイルを作っておきます。
image.png

移行が開始します。残り時間が表示されるのが便利です。古いHDDを積んだPCやサーバーだと数時間はかかります。
image.png

エクスポートが完了しました。
image.png

image.png

続いて、このディスクの受け皿となる仮想マシン(VMWareでいうところのコンピューティングリソース)をProxmox側で先に作っておきます。
以下のサイトを参考にさせていただきました。
https://www.youtube.com/watch?v=nriWlbCXKmU

既存の仮想マシンと区別するためマシンIDは201としました。
image.png

新規ディスクを作成しますが、これは一時的なダミーで、このダミーを物理マシンのvhdxファイルで上書きし、OSとして起動させるような流れになります。(今回のポイントとなります)

また通常Virtio-SCSIという準仮想化ドライバを使いますが、今回は初回起動時のドライバ読み込みのトラブルを避けるためにSATAのエミュレーションとします。
image.png

vm-201-disk-0というダミーディスク名をメモしておきます。
image.png

先ほどP2VしたVHDXを、QCOW2というKVMの推奨形式に変換し、同時にダミーディスクを上書きしますます。シェルから以下のコマンドを実行します。

qemu-img convert -O qcow2 /var/lib/vz/images/WIN-1TMGC5NI0K6.VHDX /var/lib/images/201/vm-201-disk-0.qcow2

ここでエラーになってしまいました。QCOW2への変換を想定していましたが、LVM-Thinによるブロック単位でのコントロール(シンプロビジョンやスナップショット機能)をしている場合、RAWイメージしか使えないようです。LVM-ThinはProxmoxの標準インストール方式です。
https://forum.proxmox.com/threads/qcow2-unavailable-grayed-out-4-2.27482/

本家のユーザーフォーラムによると、LVM-Thin運用の場合、vhdxをRAWとして直接インポートできるようです。
https://forum.proxmox.com/threads/converting-vhdx-to-raw.36354/
以下のコマンドを実行しました。

qm importdisk 201 /var/lib/vz/images/WIN-1TMGC5NI0K6.VHDX local-lvm

image.png

変換は早く、数秒で終わりました。
image.png

ハードウェアのオプションを見ると、しっかり認識されています。
image.png

SCSIをSATAに変更してアタッチします。
image.png

このような状態になることを確認します。また、ブート順も変えておきます。
image.png

image.png

起動が開始されます。
image.png

とくにドライバの再起動など求められることなくすんなりと起動しました。
image.png

変換元となったVHDXは削除するか、ユーザーアクセス権限のない場所にしばらく保存しておくなど想定されます。
image.png

中継サーバーを同じProxmox上に作っておくことで、SAMBA共有とSSHでの二重コピーとならず、迅速にP2Vができることが確認できました。

また、KVMへのP2VツールはCloneZillaが有名ですが、USBブートを各マシンで行う必要があります。今回はWindows上から実行し、かつ外付けディスクも不要なため、社内ネットワークにさえつながっていれば完全リモートでも可能と思われます。

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?