VMware ESXiをインストールしたノートPCにUSBハードディスクを追加したい
前回、余っているノートPCにVMware ESXiをインストールした。
動作検証ぐらいの自宅ラボなので、このままでもいいのだが、元々ノートPCに入っているSSDが250GBぐらいでそんなに余裕がある状態でもなかったので、余っているUSB-HDDをノートPCにつけてESX上のデータストアとして利用できるようにした。今回はその手順を記録がてら残す。
使ったUSBハードディスクと対象ESXiバージョン
今回、ハードディスクは元々SSD交換前にPCに入っていた内蔵HDDを利用した。
そのままだと当然USB接続には使えないので、以下のようなHDDケースを利用するとよい。
また、ESXiのバージョンは2021年2月時点の最新である7.0.1である。
適用手順
大まかな流れは以下の通り
- USBハードディスクをexFATでフォーマットする
- ESXiにsshログインできるようにする
- ESXiのUSBパススルーを無効にする
- USBハードディスクをノートPCに繋いで認識確認を行う
- USBハードディスクをvmfs6としてフォーマットする
一つずつ解説していく。
USBハードディスクをexFATでフォーマットする
ESXはWindowsで標準的なフォーマット形式であるNTFSは認識できない。
ESXに認識させるためにはFAT32かexFATでフォーマットをしてやる必要がある。
今のWindows機だとFAT32は表示されない場合もあると思うので、ここではexFATでフォーマットを行う。
ESXiにsshログインできるようにする
ESXの管理は通常Webクライアント経由で行うが、USBハードディスクを利用するためには後述の「USBパススルーの無効化」や「vmfs6へのフォーマット」などWebクライアント経由ではできない作業がある。これらの作業を作業用PCから行えるようにするためにESXにsshログインできるように設定変更をしてやる。
まず、対象のESXiホストを起動する。
WebブラウザでVMware Webクライアント(https://[ESXiホスト名またはIPアドレス/ui]を開いて、ESXi管理者用アカウントでログインする(通常root)
続いて、ナビゲータ画面で「管理」を選択し、続けて「サービス」を選択する。
サービスの一覧に「TSM-SSH」がステータス「停止」の状態であるはずなので、「TSM-SSH」を選択した状態で右クリックし「起動」を選択する。
「TSM-SSH」のステータスが「実行中」になっていたらOK。
さらに、ESXホストを再起動した場合にsshが無効にならないようにするために、「TSM-SSH」を選択した状態で右クリックし「ポリシー」→「ホストと連動して起動および停止します」にチェックを入れる。
ここまででESXのsshログイン設定はOK。
実際にsshログインできるかどうか確認する。
ここではターミナルソフトとしてteratermを利用する
「ホスト名」欄にESXホストのIPアドレスを入力してOKをクリック。
「キーボードインタラクティブ認証」を選択し、ユーザ名(通常rootでOK)を入力してOKをクリック。
(余談)
昔は「チャレンジレスポンス認証を使う」だったけどいつからか名前が変わった。
パスワード入力を求められるので、アカウントに対応したパスワードを入力してOKをクリックする。
こんな感じの画面になれば問題なくsshログインができている。
ESXiのUSBパススルーを無効にする
sshログインができるようになったら、今度はUSBパススルー設定を無効にする。
そもそも初期設定として、ESX上ではusbarbitratorというサービスが起動している。
これは、ESXホスト(ここではノートPC)に接続されたUSBデバイスをそのままパススルーで仮想マシンに見せるための仕組みである。なので、このままだとホスト側ではUSBデバイスを認識することができない。
このため、該当サービスの停止と自動起動の無効化を行う必要がある。
コマンドは以下の通り。
#一応サービス起動状態を最初に確認する
/etc/init.d/usbarbitrator status
usbarbitrator is running
#サービス停止を行う。
/etc/init.d/usbarbitrator stop
#さらに、自動起動を無効化する。
chkconfig usbarbitrator off
以上でESXiのUSBパススルーを無効化設定は完了である。
USBハードディスクをノートPCに繋いで認識確認を行う
USBパススルーの無効化が完了したら、いよいよUSBハードディスクをノートPCに接続する。
まず、USBデバイスがディスクとして認識されているか確認するため以下コマンドを実行する。
ls /dev/disks
こんな感じで追加したUSBハードディスクが表示されればOK。
[root@localhost:~] ls /dev/disks
mpx.vmhba37:C0:T0:L0
mpx.vmhba37:C0:T0:L0:1
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________:1
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________:5
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________:6
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________:7
t10.ATA_____CT240BX200SSD1__________________________1615F01A3358________:8
vml.01000000003031323334353637383941424446454e5331303636
vml.01000000003031323334353637383941424446454e5331303636:1
vml.01000000003136313546303141333335382020202020202020435432343042
vml.01000000003136313546303141333335382020202020202020435432343042:1
vml.01000000003136313546303141333335382020202020202020435432343042:5
vml.01000000003136313546303141333335382020202020202020435432343042:6
vml.01000000003136313546303141333335382020202020202020435432343042:7
vml.01000000003136313546303141333335382020202020202020435432343042:8
USBハードディスクをvmfs6としてフォーマットする
USBハードディスクが認識されていることを確認したら、確認できたディスク領域をデータストアとして利用できる形式(vmfs)にフォーマットする。2021年2月現在ではvmfs6が最新なのでvmfs6としてフォーマットする。
なお、
赤色マーカー部分は前述確認したls /dev/disksで出力された内容に応じて変更すること。
黄色マーカー部分は下記コマンド実行のなかで表示される値に応じて変更すること。
青色マーカー部分は任意で決められるデータストアの名前なので好きに決めて良い。
実際のコマンドは以下の通り。
[root@localhost:~] partedUtil mklabel /dev/disks/mpx.vmhba37:C0:T0:L0 gpt
[root@localhost:~] partedUtil getptbl /dev/disks/mpx.vmhba37:C0:T0:L0
gpt
60801 255 63 976773168
[root@localhost:~] eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba37:C0:T0:L0 | tail -1 | awk '{print $1 " \* " $2 " \* " $3 " - 1"}')
976768064
[root@localhost:~] partedUtil setptbl /dev/disks/mpx.vmhba37:C0:T0:L0 gpt "1 2048 976768064 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 976768064 AA31E02A400F11DB9590000C2911D1B8 0
[root@localhost:~] vmkfstools -C vmfs6 -S HDD-Inateck /dev/disks/mpx.vmhba37:C0:T0:L0:1
create fs deviceName:'/dev/disks/mpx.vmhba37:C0:T0:L0:1', fsShortName:'vmfs6', fsName:'HDD-Inateck'
deviceFullPath:/dev/disks/mpx.vmhba37:C0:T0:L0:1 deviceFile:mpx.vmhba37:C0:T0:L0:1
ATS on device /dev/disks/mpx.vmhba37: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.vmhba37:C0:T0:L0:1" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "HDD-Inateck".
Successfully created new volume: 5f2cb1ee-1b437930-6ad7-18ece795c3e7
!注意事項!
最後のコマンド「vmkfstools -C vmfs6 -S HDD-Inateck /dev/disks/mpx.vmhba37:C0:T0:L0:1」では、最後に「:1」がつくことを忘れないこと!
これを忘れると以下のようなエラーが発生する。
create fs deviceName:'/dev/disks/mpx.vmhba37:C0:T0:L0', fsShortName:'vmfs6', fsName:'HDD-Inateck'
deviceFullPath:/dev/disks/mpx.vmhba37:C0:T0:L0 deviceFile:mpx.vmhba37:C0:T0:L0
ATS on device /dev/disks/mpx.vmhba37:C0:T0:L0: 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.vmhba37:C0:T0:L0" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "HDD-Inateck".
Failed to create VMFS on device mpx.vmhba37:C0:T0:L0
/dev/disks/mpx.vmhba37:C0:T0:L0: Permission denied. (Have you set the partition type to 0xfb?)
Error: Permission denied
(24/01/28追記)
余談だが
[root@localhost:~] partedUtil setptbl /dev/disks/mpx.vmhba37:C0:T0:L0 gpt "1 2048 976768064 AA31E02A400F11DB9590000C2911D1B8 0"
この部分の「AA31E02A400F11DB9590000C2911D1B8」はパーティションタイプがVMFSデータストアを表すUUID(GUID)である。
最後にWebクライアントからデータストアとして見えているか確認する
ここまでの手順で作業としては完了している。最後に実際にデータストアとして見えているかの確認を行う。
VMware Webクライアント(https://[ESXiホスト名またはIPアドレス/ui]からログインし、「ストレージ」を選択する。
「データストア」タブにて、追加したものが表示されればOK。
終わりに
これでVMware ESXへのUSBハードディスク追加は完了である。
ここから仮想マシンを作成してシェルスクリプトの検証やらAnsibleのplaybook開発からを今後進めていきたい。
コメント