VMware vSphere Hypervisor 6.5(ESXi)に外付けUSB-HDDを接続してデータストアとして利用する

VMware vSphere Hypervisor 6.5(ESXi)に外付けUSB-HDDを接続して、データストアとして利用してみます。

データストアにした場合、仮想マシンのHDDに割り当てることができるので、容量が少なめなSSD+別ドライブにデータ用のHDDを作成することができます。

普通につなげただけではウェブコンソールからは認識はしますが、フォーマットなどできないため、SSHで接続してコマンドを叩く必要があります。

SSHの操作にある程度慣れている方ではないと厳しいです。

また、ESXi実機に接続されたUSB機器を各仮想マシンに転送する機能を停止する為、導入は要検討です。(ESXiをサーバ機としておいていてUSBを使う予定がない場合は良いと思います)

SSH機能を有効化する

まず、ESXiにウェブコンソールでログインし、SSHを有効化します。

ホスト→アクション→サービス→SSHの有効化を押すことにより、有効化されます。

SSHで接続する

SSHを有効化すると、SSHクライアントで接続できるようになります。

ssh root@ESXiのホスト で接続が可能です。パスワードはインストール時に設定したものと同一です。

USB-HDDのフォーマット

USB-HDDは予め、WindowsかMacでフォーマットしておく必要があります。

フォーマットの形式はパーティションがMBRでフォーマットをFATにします。

esxi_add_usb_hdd_10.png

Macの場合はディスクユーティリティからフォーマットが行なえます。

名前は適当な名前をつけます。半角英数字のみ受け付けるので、今回の場合「NOTITLE」とします。

USB-HDDをゲストOSに使用させないようにサービスを停止する

デフォルト状態だと、USBは接続するとゲストOSにそのままパススルーされる設定となっています。

以下のSSHコマンドでゲストOSへのパススルーを停止することができます。

/etc/init.d/usbarbitrator stop

ESXi起動時にも usbarbitrator を起動させないようにするには下記のコマンドを実行します。(デフォルトは起動するようになっています)

/sbin/chkconfig usbarbitrator off

USB-HDDが認識されているか確認する

ウェブコンソールにアクセスし、ストレージを選択します。

esxi_add_usb_hdd_1.png

何も接続されていない状態は上記の画像のように表示されます。

esxi_add_usb_hdd_2.png

usbarbitrator を停止してUSB-HDDを接続した場合、ちゃんと認識されています。

ただし、このままだとESXiでは使用できません。

SSHでvmfs6形式でフォーマットしてESXiのデータストアとして使えるようにする

ここからはSSHでの作業となります。

先程ログインしておいたウィンドウをそのまま利用します。

青文字部分は環境に合わせてください。

ディスクが認識されているかの確認

ls /dev/disks/
t10.JMicron_Generic_________0123456789ABCDEF
t10.JMicron_Generic_________0123456789ABCDEF:1
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:1
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:2
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:3
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:5
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:6
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:7
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:8
t10.NVMe____Samsung_SSD_960_EVO_250GB_______________4F4略:9
vml.0100000000略
vml.0100000000略:1
vml.0100000000略:2
vml.0100000000略:3
vml.0100000000略:5
vml.0100000000略:6
vml.0100000000略:7
vml.0100000000略:8
vml.0100000000略:9

今回のターゲットは「t10.JMicron_Generic_________0123456789ABCDEF」です。

ラベルの作成

partedUtil mklabel /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF gpt

GPTパーティションの取得

partedUtil getptbl /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF
gpt
243201 255 63 3907029168

適切なサイズを取得します。

eval expr $(partedUtil getptbl /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
3907024064

ここの赤で記述した数値は後から使いますのでコピペしておきます。

次のコマンドを実行します。(AA31から始まる文字列は固定のようです)

長いコマンドなのでブラウザのウィンドウが狭いと表示しきれないことがありますのでその場合はブラウザを横に広げてください。

partedUtil setptbl /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF gpt "1 2048 3907024064 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 3907024064 AA31E02A400F11DB9590000C2911D1B8 0

最後にvmfs6のパーティションを作成します。

USB-Datastore はデータストア名なので、自由に設定できます。今回はわかりやすくUSB-Datastoreとしています。

vmkfstools -C vmfs6 -S USB-Datastore /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF:1
create fs deviceName:'/dev/disks/t10.JMicron_Generic_________0123456789ABCDEF:1', fsShortName:'vmfs6', fsName:'USB-Datastore'
deviceFullPath:/dev/disks/t10.JMicron_Generic_________0123456789ABCDEF:1 deviceFile:t10.JMicron_Generic_________0123456789ABCDEF:1
ATS on device /dev/disks/t10.JMicron_Generic_________0123456789ABCDEF: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 "t10.JMicron_Generic_________0123456789ABCDEF:1" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "USB-Datastore".
Successfully created new volume: 5970d4cc-6b50f30e-2329-7085c23b4705

Successfully created new volumeと出たら、完成です。

SSHは終了しても問題ありません。

ウェブコンソール上から認識を確認する

フォーマット後はESXiのリブートなどは必要ありません。

そのまま、ウェブコンソールに入りストレージを選択します。

esxi_add_usb_hdd_3.png

無事、USB-Datastoreが認識されていました。

これで、データストアとして使用できるようになります。

追加したデータストアの容量を使い、ゲストOSにHDDの容量を増設する

ゲストOSのデータ用のHDDとして、先程追加したUSB-HDDを追加してみます。

操作するマシンはシャットダウン状態ではないとダメです。

まずは仮想マシンを開いてアクション→設定の編集を押します。

esxi_add_usb_hdd_4.png

設定の編集画面が出るので、新規ハードディスクを選択します。

esxi_add_usb_hdd_6.png

「新規ハード ディスク」を選びます。

このままですと場所がSSD(サーバ機のSSD)になっていますので、変更します。

esxi_add_usb_hdd_7.png

場所→参照ボタンを押します。

データストアにUSB-Datastoreがあるのでそちらを選択します。

新しいディレクトリを作成します。今回の場合「CentOS7_HDD」としました。

esxi_add_usb_hdd_8.png

仮想マシンの設定に戻ります。

esxi_add_usb_hdd_9.png

新規ハードディスクの場所が [USB-Datastore] CentOS7_HDD になっているのを確認して容量を入力し保存を押します。

今回は1TBにしてみました。

後は普通にゲストOSを起動し、ゲストOSでの方法でフォーマットを行うことにより使用可能になります。

設定を元に戻す(ESXi上でUSBにHDDなどを使用しない場合のみ実行)

ESXiに接続されたUSBをゲストOSに転送するには下記のコマンドを実行します。

/etc/init.d/usbarbitrator start

ただし、すでにESXiでUSBを使用している場合はusbarbitratorをstartさせるとSSHがフリーズしてしまうようなので、継続的に使用する場合はずっと停止状態にしておくと良いです。