Proxmox VE 上の仮想ハードディスクでPoolを構成する

pool_pve_15.png
Errpr: topology
Disks have duplicate serial numbers: None (sda,sdb,sdc,sdd,sde)
+View Stack Trace

25.10 の Nightly をいじっていたら5月の頭ぐらいから、シリアルナンバーが同一のディスクでPoolを作成しようとすると怒られるようになった。

pool_pve_16.png

pool_pve_17.png
(TrueNAS CORE 13.0-U6.7 の Pool Manager)
以前はシリアルナンバーの重複を無視して強行するオプション(Show disks with no-unique serial numbers)があったけど、TrueNAS SCALE ではフツーに構成できていました。

Andrew Walker
2025年5月6日 10:35
(edited)
Virtual hard drives should not be used for truenas data pools. This is covered in our hardware and installation guides. In this situation the only supported configuration is passthrough of whole drives or an HBA.
仮想ハードドライブは、Truenas データプールに使用しないでください。これはハードウェアおよびインストールガイドで説明されています。この場合、サポートされる唯一の構成は、ドライブ全体のパススルーかHBAです。

「仮想環境で仮想ディスクのPoolは非推奨です」
ってことで実験環境や検証目的の操作は容認しない感じ。
まあ確かに本運用だったらシステムだけPVE上でデータディスクはディスク全体をパススルーして使うのがいいと思うけど。
しょうがないので手動でコマンドを使ってPoolを作成する。

いつもインストール後に、仮想ハードディスクを4台追加してRAIDZ2構成にするのでそういう設定で、lz4圧縮と暗号化を有効にしてみる。


pool_pve_01.png

インストールが完了しただけのTrueNAS SCALE で
System > Shell

openssl rand -hex 32 > /home/truenas_admin/tank.key
chmod 600 /home/truenas_admin/tank.key
chown truenas_admin:truenas_admin /home/truenas_admin/tank.key

として暗号化キーのファイルを生成する。
Shell 画面への貼り付けは [Shift] + [Insert]


pool_pve_02.png

ついで、

cat -A /home/truenas_admin/tank.key

として鍵内容を表示する。
この文字列を最後の$を除いてコピーする。
[Ctrl]+[Insert]でコピーできる。


pool_pve_03.png

sudo zpool create \
  -O encryption=on \
  -O keyformat=hex \
  -O keylocation=file:///home/truenas_admin/tank.key \
  tank raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

と実行して暗号化されたRAIDZ2プールを作成する。
(\ は前の行に続けて入力する。圧縮のオプション忘れているのに後で気づいた)


pool_pve_04.png

ちょっと表示が変だけど、sudo なので
truenas_admin
のパスワードを入力する。


pool_pve_05.png

cannot mount '/tank' : failed to create mount point : Read-only file system
とか表示されてるけどこの段階ではこれでOK。

TrueNAS SCALE を再起動する。


pool_pve_06.png

その間に先ほどコピった32文字を json ファイルに保存する。
既存の TrueNAS SCALE からダウンロードして、

{"tank": "3bb63f4b3b5a01a8a3ee8c03e363b1cb0c2b1e4280fdf3f9cc1f3038ffe71ecb"}
プール名 32文字(末尾の$は不要)
という形式で拡張子 .json のテキストファイルとして保存する。

サンプル:dataset_tank_key.json
(TrueNAS SCALE の実機からダウンロードして上の暗号化キーを入力しているので、各自で書き換えて使ってください)


pool_pve_07.png

再起動したら、
Storage > Import Pool


pool_pve_08.png

プルダウンに変な文字列のプールが見えるので選択して、
「Import」


pool_pve_09.png

Unlock Pool
暗号化されているPoolなので
「Continue」


pool_pve_10.png

Choose File から先ほど用意した .json ファイルを選択。


pool_pve_11.png

「Save」


pool_pve_12.png

うまくいくと
Unlock Datasets
「Continue」


pool_pve_13.png

「Close」


pool_pve_14.png

Datasets にプールが表示されるようになります。
これで見た目は暗合化されたRAIDZ2のプールがGUIで触れるようになりました。

もちろん、同一のPVEのSSDから切り出した仮想ハードディスクを何個どう束ねようと冗長性は全くないのであくまで検証・練習用。
とはいえディスクの出し入れの操作とかはやっぱりできないので、あまり役に立たないかな。

なおPoolを作成するコマンドの例

なんかChatGPTに訊いたらオススメオプションとかいって

  -O compression=lz4 (lz4 圧縮を有効)\
  -O acltype=posixacl (POSIX準拠のアクセス制御リスト(ACL) を有効)\
  -O xattr=sa (拡張属性(xattr)を「System Attributes(SA)」としてZFSメタデータ領域に内包)

を追加してきた。
(もう面倒臭くなってきたので未検証。下記のコマンドのサンプルには含まれてる)

もちろんそれぞれに必要な台数の仮想ハードディスクは追加してから実行する。


2台で MIrror

sudo zpool create \
  -O encryption=on \
  -O keyformat=hex \
  -O keylocation=file:///home/truenas_admin/tank.key \
  -O compression=lz4 \
  -O acltype=posixacl \
  -O xattr=sa \
  tank mirror /dev/sdb /dev/sdc

3台で Raidz1

sudo zpool create \
  -O encryption=on \
  -O keyformat=hex \
  -O keylocation=file:///home/truenas_admin/tank.key \
  -O compression=lz4 \
  -O acltype=posixacl \
  -O xattr=sa \
  tank raidz /dev/sdb /dev/sdc /dev/sdd

4台で Raidz2

sudo zpool create \
  -O encryption=on \
  -O keyformat=hex \
  -O keylocation=file:///home/truenas_admin/tank.key \
  -O compression=lz4 \
  -O acltype=posixacl \
  -O xattr=sa \
  tank raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

5台で Raidz3

sudo zpool create \
  -O encryption=on \
  -O keyformat=hex \
  -O keylocation=file:///home/truenas_admin/tank.key \
  -O compression=lz4 \
  -O acltype=posixacl \
  -O xattr=sa \
  tank raidz3 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf


コメントは無効になっていますので、何かありましたらフォームかTwitter(X)で。

About

2025年05月19日 20:07に投稿されたエントリーのページです。

ひとつ前の投稿は「TrueNAS SCALE 24.10.2.2」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35