文書の表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== Proxmox VE 6.2のZFSストレージで仮想ディスクをイメージファイルで使う ====== Proxmox VEをZFS環境として構築すると、仮想マシンのディスクイメージはzvolとして作成される。zvolはブロックデバイス扱いなので、仮想ディスク用途にはピッタリである。 しかし個人的には、ZFSのスナップショットとの相性や、バックアップのし忘れがないとかのしょーもない理由で、仮想ディスクもイメージファイルで扱いたい。 ネット上の情報を参考にしながら試行錯誤したところ割と簡単に実現できた。ZFS環境のみならず、PVE管理外の外部のディスクイメージを使うような場合にも有用だと思う。 ===== 試した環境 ===== * Proxmox VE 6.2-4 * ZFS環境 * ディスクイメージ専用のZFSプール zvm を使う ===== 手順 ===== Proxmox VEは仮想マシン用のデータ保管ストレージとして、ローカルストレージやNFS, iSCSIなど様々なタイプのストレージを扱う事ができ、それぞれ機能や特性が異なる。 PVEシステムに必ず存在するlocalストレージとは、それらの一種であるDirectoryタイプのストレージで、その実体は''/var/lib/vz/''ディレクトリである。 基本的な考え方としては、このディレクトリ以下にディスクイメージファイルを置けば、ZFS環境でもディスクイメージとしてファイルが使えるようになる。 ==== localストレージの設定変更 ==== ZFS環境では、localストレージでイメージファイルを扱わない設定となっているため、まずはここをどうにかする。 <note tip>Proxmox VE 6.3-3で確認したところ、GUIで設定できるようになっていた。 データセンター>ストレージでlocalをダブルクリックし、コンテンツに「Disk image」を含める。 PVE 6.2の時はDisk imageを追加しようとしてもできなかった気が… </note> ''/etc/pve/storage.cfg''を編集し、localストレージでファイルイメージを扱えるようにする。 <code> dir: local path /var/lib/vz content vztmpl,iso,backup,images # imagesを追加 </code> ==== 仮想HDDファイルの作成 ==== 仮想ディスクイメージファイルは専用のZFSプール&データセット、zvm/R/imagesに置くとする。場所はお好みで。 データセットの作成 <code> # zfs create zvm/R/images </code> 空のディスクイメージを作る。ここでは、いわゆるRAW形式で900GiBで確保している。 <code> # dd if=/dev/zero of=/zvm/R/images/hdd.raw bs=1M count=921600 </code> 現時点では単なるゼロ埋めデータなので、圧縮率が半端ない。 <code> # ls -alh /zvm/R/images/ total 1.5K drwxr-xr-x 2 root root 3 Dec 26 16:12 . drwxr-xr-x 3 root root 3 Dec 26 16:01 .. -rw-r--r-- 1 root root 900G Dec 26 16:24 hdd.raw # zfs list -r zve NAME USED AVAIL REFER MOUNTPOINT zvm 3.66M 1.06T 96K /zvm zvm/R 192K 1.06T 96K /zvm/R zvm/R/images 96K 1.06T 96K /zvm/R/images </code> ==== localストレージにイメージを配置 ==== localストレージに作成したディスクイメージファイルを置く。といっても、コピーしたのでは専用プールに作った意味がないので、localストレージからzvmプール上のイメージファイルにシンボリックリンクを張ってやる。 <code> # mkdir -p /var/lib/vz/images/101 # ln -s /zvm/R/images/hdd.raw /var/lib/vz/images/101/vm-101-hdd.raw </code> 上記パス内の「101」はVMのIDなので適宜読み替えのこと。また、イメージファイル(ここではシンボリックリンクだが)の命名規則は「vm-VMのID-任意の英数字.イメージ形式(raw/qcow2/vmdk)」である。 ==== VMにイメージファイルを取り込み ==== ''qm rescan''を実行するとイメージファイルのスキャンが行われる。 <code> # qm rescan rescan volumes... VM 101: add unreferenced volume 'local:101/vm-101-hdd.raw' as 'unused0' to config </code> 問題がなければ、VM管理画面のハードウェア構成に「未使用ディスク」として追加される。 {{ :virtualization:pve_recognise_external_disk_image.png |}} こいつをダブルクリックしてVMに接続すれば完了。 ===== 落ち葉拾い ===== * localストレージは''/var/lib/vz/''で辿れさえすればいいので、fstabで別ディスクをマウントしても問題ない。公式リファレンスにも書いてあったりする。 * 今回のようにZFS環境なら、それこそmountpointプロパティを使う方が簡単だったりして。 * ''/etc/pve/qemu-server/''にある仮想マシン設定ファイルを編集して、「sata0: /full/path/to/imagefile.raw」という感じで書けば、何も考えずに任意のディスクイメージファイルをVMに接続できる。 * まぁ、ちゃんと公式のお作法に則っておきましょうってことで。 ===== 参考サイト ===== * [[https://dae.me/blog/2340/how-to-add-an-existing-virtual-disk-to-proxmox/|How to add an existing virtual disk to Proxmox | Dae’s blog]] * [[https://pve.proxmox.com/wiki/Storage:_Directory|Storage: Directory - Proxmox VE]] * [[https://pve.proxmox.com/wiki/Storage|Storage - Proxmox VE]] * [[https://pve.proxmox.com/pve-docs/qm.1.html|qm(1)]] virtualization/proxmox_ve_6_2_use_external_disk_image_file.txt 最終更新: 2021-01-20 12:58by Decomo