文書の過去の版を表示しています。


Proxmox VE 6.2でHDDをRDM (Raw Device Mapping)

物理HDDやSSDをVMに直接アタッチしてストレージとして使う、VMwareで言うところのRDMをProxmox VEで行う方法。

RDMはVMware用語?っぽく、Proxmoxではディスクパススルーと呼んでいる。厳密には仕組みも違うっぽい気がするけど、RDMの方が通りがいいので本記事ではRDMと呼ぶことにする。

  • Proxmox VE 6.2-4

RDMしたいディスクのホスト側のデバイスファイルを、仮想ディスクまたは仮想ブロックデバイスとしてゲストにくっつけるだけで良いっぽい。

Proxmoxのストレージ画面でRDM対象のHDDを確認する。重要なのはHDDのモデル名とシリアル番号。

CLIからはls -l /dev/disk/by-id/で確認すると良いだろう。

# ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root  9 Jan 20 22:53 ata-MARSHAL_MAL38000NS-T72_37F5K073FDMF -> ../../sdc
lrwxrwxrwx 1 root root 10 Jan 20 22:53 ata-MARSHAL_MAL38000NS-T72_37F5K073FDMF-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  9 Jan 20 23:24 ata-ST10000NM0086-2AA101_ZA210RT9 -> ../../sdb
lrwxrwxrwx 1 root root 10 Jan 20 23:24 ata-ST10000NM0086-2AA101_ZA210RT9-part1 -> ../../sdb1
(略)
lrwxrwxrwx 1 root root  9 Jan 26 13:41 ata-WDC_WD160EDGZ-11B2DA0_2BJBRUZN -> ../../sdh
lrwxrwxrwx 1 root root 10 Jan 26 13:41 ata-WDC_WD160EDGZ-11B2DA0_2BJBRUZN-part1 -> ../../sdh1

シェルを開いてHDDをVMにくっつける。

# qm set 100 -virtio0 /dev/disk/by-id/ata-HGST_HUH728080ALE604_VKHV9Z7X
# qm set 100 -virtio1 /dev/disk/by-id/ata-HGST_HUH728080ALE604_VLG7NZGY
# qm set 100 -virtio2 /dev/disk/by-id/ata-MARSHAL_MAL38000NS-T72_37F5K073FDMF
# qm set 100 -virtio3 /dev/disk/by-id/ata-TOSHIBA_MD05ACA800_37H1K0KYFYZD

HDDを指定するパスは、上記のように/dev/disk/by-id/以下の製品名・シリアル番号を含むパスを使うのが良いとされている。

/dev/sdaのような昔ながらのデバイスファイルでもRDMは可能である。ただし、sdXと物理HDDの対応は変わることがあるので(例えばHDDを繋ぐ物理SATAポートが変わった時とか)、確実に一意に定まるby-idの方が安全というわけ。

-virtio0の部分はVMへの接続方法を表す。上記ではブロックデバイスとして接続しているが、SCSIで繋ぎたければ-scsi0、SATAなら-sata0という風に適宜変更する。

2021年現在、接続方法はvirtio-scsiによるSCSI接続がよさげな雰囲気。理由は以下のとおり。

  • virtio-blkの開発が停滞しており、性能面でvirtio-scsiが優位になってきた。
  • virtio-blkはPCIデバイス扱いなのでデバイス数制限がキツイ。
  • virtio-scsiはゲスト側でのホットプラグが望めることが理由。

問題なくアタッチできれば、VM管理画面で「ハードディスク」が追加されているのが確認できる。

以上で、VM側から追加したHDD全体が仮想ストレージとして見える。

ちなみに勘の良い人はお気づきだろうが、同じ方法で物理ディスク全体だけではなく、特定のパーティションのみをRDMすることもできる。この場合も、VM側からは1台の仮想ディスクに見えるため、VM側でパーティションを切ると物理パーティションの中に仮想パーティションテーブルが存在する入れ子状態となる(仕組み上当然ですわな。)

既存のデータ入りパーティションをVMにRDMし、仮想ディスク上の有効なパーティションとしてそのまま使いたい場合は、Linuxのデバイスマッパーを使うと実現できる。参考記事:Device Mapperで物理パーティションを仮想パーティションに偽装

  • virtualization/proxmox_ve_6_2_rdm.1643244701.txt.gz
  • 最終更新: 2022-01-27 09:51
  • by Decomo