Proxmox環境で動かしているUbuntu VMに、ホストに接続した物理SSDを直接マウントする手順をまとめます。今回は /dev/sdb に接続されている ext4 フォーマット済みSSDを Ubuntu VM (id:100) に割り当てました。
背景
今回の作業を行った理由は、過去に使っていた自宅サーバで稼働していたビットコインのフルノード(Bitcoin Core)のデータが入ったSSDを、Proxmox環境のUbuntu VM上で再利用したかったからです。
VM側で直接SSDを扱えるようにすることで、ホストOSを介さずにフルノードのデータへアクセスでき、環境移行もスムーズになります。
手順
1. Proxmoxホスト側でVM設定を編集
Proxmoxのホストにログインし、対象VMの設定ファイルを編集します。
VMの設定ファイルは /etc/pve/qemu-server/<VMID>.conf にあります。
sudo nano /etc/pve/qemu-server/100.conf
scsi0はVMのシステムディスクとして使用していますので、
scsi1 に /dev/sdb を指定します。
scsi1: /dev/sdb
すると、ProxmoxのWebUIから/dev/sdbがVMに割り当てられることを確認できます。

2. VM(Ubuntu)側でデバイス確認
Ubuntu VMにログインしてディスクを確認します。
lsblk
出力例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 30G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 15G 0 lvm /
sdb 8:16 0 894.3G 0 disk
└─sdb1 8:17 0 894.3G 0 part
ここで /dev/sdb1 がSSDのパーティションです。
3. マウントポイントの作成とマウント
マウントポイントを作成してマウントします。
sudo mkdir /mnt/bitcoin
sudo mount /dev/sdb1 /mnt/bitcoin
上記コマンドで /mnt/bitcoin にアクセスすると物理SSDのデータを直接マウントできます。
現時点ではVMを再起動するとマウントが外れてしまうので、fstabで自動マウントさせます。
4. fstabで自動マウント設定
まずUUIDを確認します。
sudo blkid
出力例:
/dev/sdb1: UUID="394D532E-3655-4131-90B4-B62B0C65EE2B" BLOCK_SIZE="4096" TYPE="ext4"
次に /etc/fstab を編集します。
sudo nano /etc/fstab
以下を追記します。
UUID=394D532E-3655-4131-90B4-B62B0C65EE2B /mnt/bitcoin ext4 defaults 0 2
保存して再起動します。
sudo reboot
再起動後、マウントされているか確認。
cd /mnt/bitcoin
ls
LXCコンテナに物理SSDをマウントする
VMとは異なり、LXCコンテナでは物理デバイスを直接渡すことは難しそうです。
その代わりに、Proxmoxホスト上でSSDをマウントし、そのマウント済みディレクトリをLXCに共有する形で実現します。
- ホスト側でマウント
まずProxmoxホスト上でSSDを確認してマウントします。
出力例:
root@r3900:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 894.3G 0 disk
└─sda1 8:1 0 894.3G 0 part
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 1007K 0 part
├─nvme0n1p2 259:2 0 1G 0 part /boot/efi
└─nvme0n1p3 259:3 0 475.9G 0 part
├─pve-root 252:1 0 96G 0 lvm /
├─pve-swap 252:0 0 8G 0 lvm [SWAP]
└─pve-data 252:5 0 348.8G 1 lvm
今回は /dev/sda1 が960GBのSSDですので /mnt/kingston-ssd960 としてマウントします。
root@r3900:~# mkdir -p /mnt/kingston-ssd960
root@r3900:~# mount /dev/sda1 /mnt/kingston-ssd960/
root@r3900:~# cd /mnt/kingston-ssd960/
これでホスト側にSSDがマウントされました。
永続化のため /etc/fstab に登録します。
root@r3900:~# blkid
/dev/sda1: UUID="deadbeef-..." TYPE="ext4"
/etc/fstab に追記:
UUID=deadbeef-... /mnt/kingston-ssd960 ext4 defaults 0 0
- LXCにマウントポイントとして渡す
ホストにマウントしたディレクトリを、LXCコンテナに共有します。 ここではLXC IDが 102 のコンテナに /mnt/kingston-ssd960 を /mnt/blocks として見せます。
pct set 102 -mp0 /mnt/kingston-ssd960,mp=/mnt/blocks
- LXCからアクセス可能化確認する。
root@lxc:~# df -h | grep blocks
/dev/sda1 880G 120G 760G 14% /mnt/blocks
まとめ
| 項目 | VM | LXC |
|---|---|---|
| 物理ディスクの扱い | /dev/sdX を直接指定 | ホストでマウント → ディレクトリ共有 |
| パフォーマンス | 若干オーバーヘッドあり | ほぼネイティブ性能 |
| メリット | 独立した環境を構築可能 | 軽量でホスト連携が容易 |
