どうも、Tです。
ESXiホスト上に作成したTrueNAS Scaleの仮想マシンでRDM(Raw Device Mapping)を使ってzpoolを作成した備忘録です。
目次
やりたいこと
※イメージです。本記事のディスク構成とは多少異なっています。
サーバに搭載している一部のディスクはESXiのデータストアとして使用して、一部のディスクを仮想マシンで作成しているTrueNAS Scaleに物理ディスクとして見せる(RDM)構成をとります。
なんでこんなことをしているかというとざっと下記のような感じです。
- TrueNASにデカいvmdkをつけたくない
- ディスクのアクセス速度を可能な限り早くしておきたい
- そもそもTrueNASのZFSが物理ディスクを扱うものだから
- TrueNASのために物理サーバ一台使いたくない
特に3つ目がTrueNASにvmdkでつけるとHDDのシリアルとかが見えないんで、どれ管理しているかわかりにくいんですよね・・・・。
2つ目のディスクアクセスは「RDMでもvmdkでもそんなかわらないよ」とVMwareさんがいっているので、微妙な理由ですが・・・。
環境
本記事は、下記のハードウェアとバージョンを使っています。
なお、操作はvCenterのvSphere Clientで行っています。
- サーバ:PowerEdge R730
- RAIDカード:PERC H730P Mini
- VMware ESXi:8.0.1, 21495797
- TrueNAS-SCALE:22.12.3.1
- RDMモード:物理
主要なところ以外スクリーンショットや操作は割愛しています。
なぜRDMは物理モードなのか
RDMが何かはVMwareさんのマニュアルに書かれている通り、仮想マシンにvmdk(仮想ディスク)ではなく、直接物理ストレージのLUNをアクセスできる仕組みです。直接見えるのでTrueNASからHDDの情報(シリアルNoとか)が見えて管理できるようになるわけです。
RDMには、物理モードを仮想モードがありますが、仮想モードの場合TrueNASとHDDの間にvmkernelの処理が入るので直接ストレージが見えるわけではなくなるので物理を使っています。※仮想モードはそもそも検証もしていないのでTrueNASで動かくかどうかすらわからりませんが・・・。
vmdkとRDMの仮想モード・物理モードの違いは下記にまとめられています。
一番大きな点はRDMの物理モードはvSphereのスナップショットは使えません。
非公式ではありますが、RDMの仮想モードを使わないように記載しているサイトもあります。
そもそも、TrueNASにRDM(とTureNASの仮想化)を使うこと自体をやめるような情報も多いので、本記事の内容もあくまで検証環境に留めるのがよさそうです。
事前準備
TrueNAS仮想マシンの準備
まず、ESXi上の仮想マシンにTrueNAS Scaleをインストールします。
インストール方法は、下記の記事にまとめました。
物理ディスクを非RAIDディスク変換
TrueNASにRDMするHDDは、RAIDアレイとしではなく個々のHDDとして認識する必要があるため、対象のディスクをnon-RAID(もしくはJBOD)に設定します。
下記は、PowerEdgeのiDRACから見たディスクの状態です。Physical Disk0:1:3~5の3本をRDMとして使用します。「非RAID」がnon-RAIDを表しています。
PowerEdgeの場合のディスクのRAID対応設定については、下記に記載されています。
ディスク順番の特定
RDMするHDDもESXiから認識はされていますが、vSphere Client画面からはnaa.xxxxのようにストレージ毎の識別子で表示されます。
RDMの設定をするときもnaa.xxxの識別子を使いますが、物理的にどのディスクスロットかわかりません。厳密にはiDRACなどの管理モジュールやRAIDカードの管理ツールなどを見比べるとわかりますが、ESXiからのみでどのディスクスロットのHDDなのか確認していきます。
vSphere ClientからRAIDカードがどのアダプタ名で認識されているか確認します。
下記の画像では、PERCのRAIDカードが「vmhba0」というアダプタ名で認識されています。
次に各ストレージデバイスのランタイム名を確認します。
ランタイム名の詳細は、VMwareのマニュアル(パスベースの識別子)に記載されています。
画像の例でいうと下記になります。
項目 | 画像の部分 | 説明 |
vmhbaAdapter | vmhba0 | アダプタ名です。今回ではRAIDカードのアダプタ名になります。 |
Channel | C0 | ストレージに接続しているチャネル番号です。
non-RAIDの場合0で、RAIDアレイを作ると別の番号になります。 |
Target | T3 | ターゲット番号です。今回のRAIDカードでは、non-RAIDの場合スロット番号になるので、ディスクスロット3番目を表しています。
RAIDアレイを作成すると0から振られていました。 |
LUN | L0 | LUN番号です。 |
ランタイム名の生成はドライバによっても変わってくるので、その機種によってどのような採番になるか事前に把握しておく必要がありますが、これで各naa.xxxxになっているHDDのディスクスロット位置を特定できました。
ランタイム名を1つずつ確認するのが面倒な場合、ESXiホストにSSH接続して下記コマンドを実行することにより、すべてのデバイスのランタイム名を確認することができます。
esxcli storage core path list
RDM設定
仮想マシンにRDMでHDDを割り当て行きます。
仮想マシンを停止し設定編集画面を開きます。
「新規デバイスを追加」->「RDMディスク」をクリックします。
RDMにできるストレージが表示されます。事前にランタイム名から確認していたディスクスロットで一番若いHDDを選択して「OK」をクリックします。
互換モードが「物理」になっていることを確認します。
「新規デバイスを追加」から同様の手順でRDMにするHDDを追加し、「OK」をクリックします。
TrueNASから確認
仮想マシンをパワーオンしTrueNASの管理画面にログインします。
ストレージからディスクをみるとRDMで設定した順番で認識されシリアルも表示されます。
※sdaはTrueNASのインストールディスク(vmdkの仮想ディスク)のためシリアルは表示されていません。
ディスクの詳細情報も表示できます。
zpoolの作成方法は割愛しますが、RDMのHDD3本でtest-poolを作ってみたところです。問題なく作成できました。
まとめ
国内外含め、あまり情報がなかったので書いてみましたが、あくまで検証環境用途ですね。構成が複雑になりすぎてトラブル時が怖すぎるので、本番環境では使いたくないところです。