virtualization:proxmox_ve_6_2_rdm

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
virtualization:proxmox_ve_6_2_rdm [2020-11-18 08:46]
Decomo 作成
virtualization:proxmox_ve_6_2_rdm [2022-04-07 11:51] (現在)
Decomo
行 1: 行 1:
-====== Proxmox VE 6.2でHDDをRDM (Raw Device Mapping) ======+====== Proxmox VEのVMからHDDを直接読み書き(いわゆるRDM) ====== 
 + 
 +物理HDDやSSDをVMに直接アタッチしてストレージとして使う、いわゆるRDM (Raw Device Mapping)をProxmox VEで行う方法。 
 + 
 +RDMはVMware用語っぽい雰囲気で、Proxmoxではディスクパススルーと呼んでいる。厳密には仕組みも違うっぽい気がするけど、RDMの方が通りがいいので本記事ではRDMと呼ぶことにする。
  
 ===== 試した環境 ===== ===== 試した環境 =====
 +
 +  * Proxmox VE 6.2-4
  
 ===== 手順 ===== ===== 手順 =====
  
-ホスト側デバイスファイルを、ストレージないしブロックデバイスとしてゲストにくっつけるだけで良いっぽい+RDMしたいストレージのホスト側デバイスファイルを、仮想ディクまたは仮想ブロックデバイスとしてゲストにくっつけるだけで行ける
  
-Proxmoxのストレージ画面でRDMするHDDを確認する。重要なのはHDDのモデル名とシリアル番号。+Proxmoxのストレージ画面でRDM対象のHDDを確認する。重要なのはHDDのモデル名とシリアル番号。
  
-{{ :linux:proxmox_ve_6_2_rdm_target_hdds.png |}}+{{ virtualization:proxmox_ve_6_2_rdm_target_hdds.png |}}
  
-シェルを開いてHDDをVMにくっつける。+CLIからは''ls -l /dev/disk/by-id/''で確認すと良いだろう
  
-この時、HDDを指定するパスは''/dev/disk/by-id/''以下のものを使う。''/dev/sda''みたいなパスもRDM自体出来のだが、デバイス名とストレージの対応付けが変化する可能性があるため、確実に一意に定まる''by-id''のパスの方が良いというわけ+<code> 
 +# 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 
 +</code> 
 + 
 +PVEシェル開き''qm set''コマンドHDDをVMにくっつける。書式見れば分かと思うが、''qm set 仮想マシンID アタッチ先仮想デバイス アタッチ元ホスト側デバイス''である
  
 <code> <code>
行 22: 行 40:
 </code> </code>
  
-''-virtio0''部分はゲスト公開表す。上記ではVirtIOのブロックデバイスとしてしているが、SCSIとして出したければ''-scsi0''う風る。+アタッチ元のHDDのデバイスファイルは、上記のように''/dev/disk/by-id/''以下製品名・シリアル番号を含むパを使うのが良いとされている。 
 + 
 +''/dev/sda''のような昔ながらのデバイスファイルも使えるが、''sdX''と物理HDDの対応は変化する可能性があるので(例えばHDDを繋ぐ物理SATAポーが変わった時とか)、確実に一意に定まる''/dev/dis/by-id/ata-MODELNAME_SERIALNO''の方が安全というわけ。アタッチしたデバイスはVM側で直接読み書きされちゃうので(それ望んでるわけだけど)、あずかり知らぬところで意図せぬストレージが読み書きされたら目も当てられない状況になってしまう 
 + 
 +アタッチ先仮想デバイスは、上記では''-virtio0''ブロックデバイスとして接続しているSCSIなら''-scsi0''、SATAなら''-sata0''って感じで使たい方式で置き換えてください。 
 + 
 +なお、2021年現在、RDM限らず仮想ディスクの接続は、virtio-scsiによるSCSI接続がよさげな雰囲気。理由は以下のとおり。 
 + 
 +  * virtio-blkの開発が停滞しており、性能面でvirtio-scsiが優位になってきた。 
 +  * virtio-blkはPCIデバイス扱いなのでデバイス数制限がキツイく、virtio-scsiの方がユルイ。 
 +  * virtio-scsiはゲスト側でのホットプラグ対応が望める。 
 + 
 +問題なくアタッチできれば、VM管理画面で「ハードディスク」が追加されているのが確認できる。 
 + 
 +{{ virtualization:proxmox_ve_6_2_attached_hdds_with_rdm.png |}}
  
-問題なくアタッチきてれば、VM管理画面で「ハードディスク」が追加されいるのが確認できる。+以上で、VM側から追加したHDD全体が仮想ストレージとし見える。
  
-{{ :linux:proxmox_ve_6_2_attached_hdds_with_rdm.png |}}+勘の良い人はお気づきだろうが、同じ方法で物理ディスク全体だけではなく、特定のパーティションのみをRDMすることもできる。この場合も、VM側からは1台の仮想ディスクに見えるため、VM側でパーティションを切ると物理パーティションの中に仮想パーティションテーブルが存在する入れ子状態となる(仕組み上当然ですわな。)
  
-これでVM側では追加したHDDがブロックデバイスないし仮想ストレして見える。+既存のデータ入りパーティションをVMにRDMし仮想ディスク上の有効なパーティションとてそのまま使いい場合は、Linuxのデバイスマッパを使う実現できる。手前みそですけど参考記事:[[virtualization:how_to_simulate_ppartition_as_one_of_vpartitions_in_vdisk]]
  
-==== 参考サイト ====+===== 参考サイト =====
  
-  * [[https://pve.proxmox.com/wiki/Physical_disk_to_kvm|Physical disk to kvm - Proxmox VE]]+  * [[https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)|Passthrough Physical Disk to Virtual Machine (VM) - Proxmox VE]]
   * [[https://askubuntu.com/questions/144894/add-physical-disk-to-kvm-virtual-machine|virtualization - Add physical disk to KVM virtual machine - Ask Ubuntu]]   * [[https://askubuntu.com/questions/144894/add-physical-disk-to-kvm-virtual-machine|virtualization - Add physical disk to KVM virtual machine - Ask Ubuntu]]
  
  • virtualization/proxmox_ve_6_2_rdm.1605656761.txt.gz
  • 最終更新: 2020-11-18 08:46
  • by Decomo