ESXi7.0にUSBを挿してデータストアにする

ノートパソコンにESXi7.0を入れて、USBをデータストア化した作業ログ。
コマンドの解釈等が間違ってたら教えて下さい。


公式はこちら。謎のブログ記事より公式を見て。
ESXiでのpartedUtilコマンドラインディスクパーティションユーティリティの使用(1036609)

SUBメモリを「exFAT」形式でフォーマット

作業PCで Windows+R >「diskmgmt.msc」(ディスクの管理)を起動。
もしくはエクスプローラから右クリックからフォーマットしてもいい。


とにかく「exFAT」を選ぶということと、「クイックフォーマット」を選ぶ。

ついでにexFATにする理由は、ESXiからはこの形式しか読み込めないから。
公式記事があったはずなんだけど…掘り返したら追記する。

ESXi7.0のGUIからSSHを許可する

f:id:hiro-29:20210705164739p:plain
キャプチャには映ってないけど「SSHの有効化」ってメニューが横に出てくるので、それをクリック。

TeraTermからSSHログイン

ESXi登録時に登録しているはずのIDとパスワードでログイン。
認証方式はキーボードインタラクティブ認証。
こういうのが出てきてくるのでもう一度打つ。
f:id:hiro-29:20210705165142p:plain


ところでSSHが繋がってLinuxコマンドが打てるようになった瞬間の安心感って一体なんなんでしょうね。

USBパススルーの無効化

パススルーされたら困るので無効化しておく。

#状態を確認
/etc/init.d/usbarbitrator status

#runningしているなら止める
/etc/init.d/usbarbitrator stop

#自動起動も止める
chkconfig usbarbitrator off



物理的にぶっ刺して認識されるか確認

とにかく刺さっているかを確認。
私が刺したのはTOSHIBAなので、表示はこうなった。

[root@localhost:~] lsusb
Bus 002 Device 002: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick



kernelのログを見る

USBはSCSIバイス扱いらしい。接続したかどうかがログから分かる。

cat /var/log/vmkernel.log | grep "ScsiDevice"

バイス名とともに「Successfully」と出てくれば接続成功。
65854)ScsiDevice: 6092: Successfully registered device "mpx.vmhba64:C0:T0:L0" from plugin "NMP" of type 5

バイス名を確認

[root@localhost:~] ls /dev/disks/
mpx.vmhba0:C0:T0:L0                   vml.0000000000766d686261303a303a30
mpx.vmhba0:C0:T0:L0:1                 vml.0000000000766d686261303a303a30:1
mpx.vmhba0:C0:T0:L0:5                 vml.0000000000766d686261303a303a30:5
mpx.vmhba0:C0:T0:L0:6                 vml.0000000000766d686261303a303a30:6
mpx.vmhba0:C0:T0:L0:7                 vml.0000000000766d686261303a303a30:7
mpx.vmhba0:C0:T0:L0:8                 vml.0000000000766d686261303a303a30:8
mpx.vmhba32:C0:T0:L0                  vml.0000000000766d68626133323a303a30
mpx.vmhba32:C0:T0:L0:1               vml.0000000000766d68626133323a303a30:1

下の2行が追加したUSB。
末尾の「:1」というコロン+数字はパーテーションを指す。
よってディスクはホストの「mpx.vmhba0:C0:T0:L0」とUSBで追加した「mpx.vmhba32:C0:T0:L0」の2ディスクということになる。

gptラベルを付ける

partedUtil mklabel /dev/disks/mpx.vmhba32:C0:T0:L0 gpt

ついでに、この「gpt」というのはGUIDパーティーションテーブルという標準規格であって、ラベルと言っても視認性のために自由に命名して付けるものではない。

パーティションテーブルをセットする

まずは現在のパーティションを調べる。

[root@localhost:~] partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0
gpt
942 255 63 15137280

シリンダー数、ヘッダ数、トラックあたりのセクター数、セクター数、という4つの数字が表示される。


パーティションセットに必要な「エンドセクター」の数字を計算する。

eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0 | tail -1 | awk '{print $1*$2*$3 -1}')

ここ、ググると出てくる記事はほとんど乗算記号「*」をダブルクォーテーションで括ってるんだけど、それすると計算式が表示されるだけで、計算結果が返ってきません。
ESXiのバージョンによっては括らないといけないんですかね。


上記で計算したエンドセクターを3つ目の引数にあててパーティションセット。

partedUtil setptbl /dev/disks/mpx.vmhba32:C0:T0:L0 gpt "1 2048 [計算した数字] AA31E02A400F11DB9590000C2911D1B8 0"

引数は公式に書いてあるとおり5つあって、4つ目は「GUID」。このGUIDは、VMFSフォーマットする今回は絶対に上記の文字列になります。
f:id:hiro-29:20210705181129p:plain

1つ目が1、2つ目が2048、最後のアトリビュートが0というのはこの場合は固定でいいらしい。理由はどこかのブログさんが書いてくれてましたが忘れました。

やっとフォーマット

ここのボリューム名は自由に命名するやつ。GUIにデータストアとして表示される名前です。
ディスクは末尾の「:1」に注意。パーティションに対してフォーマットするというわけですね。
カーソルが返ってくるまで数秒間だけかかる。

vmkfstools -C vmfs6 -S [ボリューム名] /dev/disks/mpx.vmhba32:C0:T0:L0:1


ちゃんとフォーマットされたか確認。
Typeが「vmfs6」でVolumeNameが命名した通りのが表示されればおk

esxcli storage filesystem list


あとはGUIでデータストアが追加されているか確認。
f:id:hiro-29:20210705183321p:plain



というわけでここの一連の作業ログ。

[root@localhost:~] eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0 | tail -1 | awk '{print $1*$2*$3 -1}')
15133229
[root@localhost:~] partedUtil setptbl /dev/disks/mpx.vmhba32:C0:T0:L0 gpt "1 2048 15133229 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 15133229 AA31E02A400F11DB9590000C2911D1B8 0
[root@localhost:~] vmkfstools -C vmfs6 -S USB-ADD-DS /dev/disks/mpx.vmhba32:C0:T0:L0:1
create fs deviceName:'/dev/disks/mpx.vmhba32:C0:T0:L0:1', fsShortName:'vmfs6', fsName:'USB-ADD-DS'
deviceFullPath:/dev/disks/mpx.vmhba32:C0:T0:L0:1 deviceFile:mpx.vmhba32:C0:T0:L0:1
ATS on device /dev/disks/mpx.vmhba32:C0:T0:L0:1: not supported
.
Checking if remote hosts are using this device as a valid file system. This may take a few seconds...
Creating vmfs6 file system on "mpx.vmhba32:C0:T0:L0:1" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "USB-ADD-DS".
Successfully created new volume: 60e2cd7f-2bb1c6ca-776f-000c29f7ff49
[root@localhost:~] esxcli storage filesystem list
Mount Point                                        Volume Name                                 UUID                                 Mounted  Type            Size          Free
-------------------------------------------------  ------------------------------------------  -----------------------------------  -------  ------  ------------  ------------
/vmfs/volumes/60dd7776-53fb0668-14f9-000c29f7ff49  datastore1                                  60dd7776-53fb0668-14f9-000c29f7ff49     true  VMFS-6   14763950080    4564451328
/vmfs/volumes/60e2cd7f-2bb1c6ca-776f-000c29f7ff49  USB-ADD-DS                                  60e2cd7f-2bb1c6ca-776f-000c29f7ff49     true  VMFS-6    7516192768    6007291904
/vmfs/volumes/60dd7776-3d07350c-1467-000c29f7ff49  OSDATA-60dd7776-3d07350c-1467-000c29f7ff49  60dd7776-3d07350c-1467-000c29f7ff49     true  VFFS    128580583424  125620453376
/vmfs/volumes/eefa9f0a-b642b9f3-748f-e0ca4678d024  BOOTBANK1                                   eefa9f0a-b642b9f3-748f-e0ca4678d024     true  vfat      4293591040    4085121024
/vmfs/volumes/86095575-d64702ae-028b-84b6d880d33b  BOOTBANK2                                   86095575-d64702ae-028b-84b6d880d33b     true  vfat      4293591040    4293525504