
Proxmox VEの物理ディスクをOpenMediaVaultの仮想マシンと共有して読み書きする

2023/12/26追記
これで1年ほど運用しましたが、ファイルの不整合が起こったりするのであまりよろしくないです。記事としては残しておきますが、やらないことをおすすめします。
VPSにnofuture.tvを移転したあと、自宅サーバーマシンは、ただのNASになってました。
ふと「仮想化基盤のProxmox VEに入れ替えて、その上でNASのOpenMediaVaultを動かせば、いろいろできていいかも?」と思いついたのでSSDとHDDを入れ替えてProxmox VEをインストールしました。
Proxmox VEをセットアップして仮想マシンにOpenMediaVaultをインストールするまでは、すぐに終わりましたが、VMのOpenMediaVaultからサーバー実機に接続されているHDDをマウントして読み書きするのは結構、手間がかかったのでその設定メモです。
- 参考
- Passthrough Physical Disk to Virtual Machine (VM) - Proxmox VE: https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)
2023/01/10追記
当然ですが仮想マシンを使ってる時点でNASとしてのパフォーマンスは落ちます。パフォーマンスを落としたくない人は、SATAカードを追加して仮想マシンからPCI Passthroughでディスクにアクセスするといいと思います。ただ、PCI Passthroughにするとホストからディスクは見えなくなる(使えない)ので、スピードを取るか機能を取るかによって決めてください。
Proxmox VE上での操作
Proxmox上でパーティションの作成とマウントする必要が無い場合は「仮想マシンに接続する」まで飛ばしてください。
パーティションの作成
買ったばかりのHDDなのでパーティションを作成していますが、パーティション作成が不要の場合は飛ばしてください。
Proxmoxにログインしたら、[データセンタ]ー→[ノード](自分のところではsonic)を選ぶと、ノードのメニューに[ディスク]があるので選択します。
サーバーに接続されているディスクが表示されるので、フォーマットしたいディスクを選んで、[GPTでディスクを初期化]を選ぶと初期化されます。
メモを取るためにやり直していると失敗する場合があったのですが、うまくいかない場合は[シェル]からcfdisk
を使ってパーティションを作ってください。cfdiskは以下のコマンドで使えます。
# cfdisk /dev/(接続されてるディスク)
ディスクのマウント
フォーマットしたディスクのマウントは、同じ[ディスク]メニューの下にある[ディレクトリ]を選んで上にある[作成:ディレクトリ]ボタンを押します。
ディスクとファイルシステムを選んで、名前をつければパーティションが/mnt/pve以下に自分がつけた名前でマウントされます。
仮想マシンに接続する
仮想マシンへの接続は、コマンドで設定する必要があるので、ここからはノードのメニューにある[シェル]に移動します。
シェルを開いたらqmコマンドでパーティションと仮想マシンを接続しますが、接続するためのHDDのディスクIDを調べます。ディスクIDの調べ方は簡単でls -la /dev/disk/by-id/
でわかります。
# ls -la /dev/disk/by-id/
total 0
drwxr-xr-x 2 root root 360 Jan 9 17:37 .
drwxr-xr-x 6 root root 120 Jan 9 16:38 ..
(中略)
lrwxrwxrwx 1 root root 10 Jan 9 16:38 lvm-pv-uuid-3ZU8LW-d14q-VN6r-PoYR-K746-iyrK-3ktrgE -> ../../sda3
lrwxrwxrwx 1 root root 9 Jan 9 17:37 wwn-0x5000c500e62c245b -> ../../sdb
lrwxrwxrwx 1 root root 10 Jan 9 17:37 wwn-0x5000c500e62c245b-part1 -> ../../sdb1
wwn-0x5000c500e62c245b-part1
というのがわかったのでメモしておきます。では、qmコマンドを使って仮想マシンにパーティションを接続します。qmコマンドは以下の形式になっています。
# qm set (仮想マシン番号) (-scsi番号/-virtio番号) /dev/disk/by-id/(パーティション)
ということで、自分の場合は下のようになりました。
# qm set 100 -virtio1 /dev/disk/by-id/wwn-0x5000c500e62c245b-part1
update VM 100: -virtio1 /dev/disk/by-id/wwn-0x5000c500e62c245b-part1
仮想マシンのメニュー[ハードウェア]に接続したパーティションが表示されればOKです。
OpenMediaVault上での操作
ここからはOpenMediaVaultの操作です。
ログインしたら、[ストレージ]→[ディスク]に移動するとデバイスが増えているはずです。
そのままでは使えないので同じ[ストレージ]の[ファイルシステム]からデバイスをマウントします。+ボタンを押すと「作成」と「マウント」があるのでマウントを選びます。
マウントすれば[共有フォルダ]から共有フォルダを作成できるので、フォルダを作って好きな方法で共有してください。
Tips: Proxmox VEとディスクを共有したくない
ディスクをProxmoxと共有したくない場合、パフォーマンスを求めるなら、上の追記に書いたようにSATAカードを追加してPCI Passthroughでホストと仮想マシンのディスクを分ければ共有せずに済み、パフォーマンスも上がります。
方法は、PCI Passthroughの設定をして、仮想マシンのハードウェアからPCIデバイスで追加したSATAカードのコントローラーを指定すれば、仮想マシンからのみアクセスできます。
パフォーマンス上の理由ではなく単に分けたいだけなら、Proxmoxの「仮想マシンに接続する」の手順に書いてあるqmコマンドを使ってディスクを仮想マシンにマウントしてください。
マウントするディスクは、通常のLinuxのディスク追加と同じようにディスクのパーティションを切って、フォーマットする必要があります。そして永続的にマウントされるようにするなら、実機(Proxmox)側の/etc/fstab
にマウントの設定を書く必要があります。
この記事が役に立ったらコーヒーをおごろう
下のリンクはBuy me a coffeeという投げ銭システムのリンクです。役に立ったと思ったら、ぜひ投げ銭をお願いします。