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にします。
Macの場合はディスクユーティリティからフォーマットが行なえます。
名前は適当な名前をつけます。半角英数字のみ受け付けるので、今回の場合「NOTITLE」とします。
USB-HDDをゲストOSに使用させないようにサービスを停止する
デフォルト状態だと、USBは接続するとゲストOSにそのままパススルーされる設定となっています。
以下のSSHコマンドでゲストOSへのパススルーを停止することができます。
/etc/init.d/usbarbitrator stop
ESXi起動時にも usbarbitrator を起動させないようにするには下記のコマンドを実行します。(デフォルトは起動するようになっています)
/sbin/chkconfig usbarbitrator off
USB-HDDが認識されているか確認する
ウェブコンソールにアクセスし、ストレージを選択します。
何も接続されていない状態は上記の画像のように表示されます。
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のリブートなどは必要ありません。
そのまま、ウェブコンソールに入りストレージを選択します。
無事、USB-Datastoreが認識されていました。
これで、データストアとして使用できるようになります。
追加したデータストアの容量を使い、ゲストOSにHDDの容量を増設する
ゲストOSのデータ用のHDDとして、先程追加したUSB-HDDを追加してみます。
操作するマシンはシャットダウン状態ではないとダメです。
まずは仮想マシンを開いてアクション→設定の編集を押します。
設定の編集画面が出るので、新規ハードディスクを選択します。
「新規ハード ディスク」を選びます。
このままですと場所がSSD(サーバ機のSSD)になっていますので、変更します。
場所→参照ボタンを押します。
データストアにUSB-Datastoreがあるのでそちらを選択します。
新しいディレクトリを作成します。今回の場合「CentOS7_HDD」としました。
仮想マシンの設定に戻ります。
新規ハードディスクの場所が [USB-Datastore] CentOS7_HDD になっているのを確認して容量を入力し保存を押します。
今回は1TBにしてみました。
後は普通にゲストOSを起動し、ゲストOSでの方法でフォーマットを行うことにより使用可能になります。
設定を元に戻す(ESXi上でUSBにHDDなどを使用しない場合のみ実行)
ESXiに接続されたUSBをゲストOSに転送するには下記のコマンドを実行します。
/etc/init.d/usbarbitrator start
ただし、すでにESXiでUSBを使用している場合はusbarbitratorをstartさせるとSSHがフリーズしてしまうようなので、継続的に使用する場合はずっと停止状態にしておくと良いです。