ESXi 6.0 に USB外付けHDD を刺してvmfsを作った

おもちゃ用にもらった[PRIMERGY](http://jp.fujitsu.com/platform/server/primergy/)、内蔵SAS 146GB×6 で容量が心許ないのにNASがないので、もらい受けた Buffalo LXU3C をつなげて認識させることに挑戦した。

# HD-LXU3Cを手なずける篇

## HD-LXU3Cの暗号化を解除する

暗号化機能が有効なまま中身を消去した Buffalo [HD-LXU3C](http://buffalo.jp/product/hdd/external/hd-lxu3c/) をもらい受けた。これは暗号化機能を備えたUSB外付けHDDである。暗号化機能が有効である場合、USBで接続すると読み込み専用ドライブとして見え、パスワードを入力することで読み書きできるドライブがマウントされる。
パスワードを入力したあとに見えるようなったドライブをフォーマットしたところで、暗号化機能を無効にできるわけでない。

暗号化を解除するには [SecureLockManagerEasy](http://buffalo.jp/download/driver/hd/slmeasy.html) の「暗号化モードの設定」機能を使わないといけない……
![SecureLockManagerEasy.png](https://qiita-image-store.s3.amazonaws.com/0/61810/7457b9d5-5038-7a32-8c3a-80dd17d8a453.png)

あるいは[SecureLockManagerEasy](http://buffalo.jp/download/driver/hd/slmeasy.html) の「出荷時に戻す」の機能を使って初期状態、すなわち「暗号化なし、全ドライブをNTFSフォーマット」に戻すことができた。
![SecureLockManagerEasy.png](https://qiita-image-store.s3.amazonaws.com/0/61810/4f9f5c91-ecfb-645a-4da3-d2a437b3c5d9.png)


# ESXiに認識させる篇

## NTFSフォーマットではホスト側で認識できない

「暗号化なし、全ドライブをNTFSフォーマット」な状態なので、Windows機ならパスワードなしで全量を認識できる状態になっていたのだが、ESXiではなかなか思うようにいかない。

具体的には、VMWare vSphere Client で、ホスト>構成>ストレージ>デバイス、に登場してくれない。ESXiの[sshサーバを有効にして](kb.vmware.com/kb/1017910)sshで覗いてみても、```lsusb``` では見えるものの、/dev/disks に現れない。

```shell-session
[root@localhost:~]# /etc/init.d/usbarbitrator stop
watchdog-usbarbitrator: Terminating watchdog process with PID 33751
usbarbitrator stopped

[root@localhost:~]# lsusb
Bus 005 Device 002: ID 0000:0000  
Bus 002 Device 002: ID 0411:0227 BUFFALO INC. (formerly MelCo., Inc.) 
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

[root@localhost:~]# ls /dev/disks
naa.6003005700f5c4601dd39fca1eee02f8                          vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035
naa.6003005700f5c4601dd39fca1eee02f8:1                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:1
naa.6003005700f5c4601dd39fca1eee02f8:2                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:2
naa.6003005700f5c4601dd39fca1eee02f8:3                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:3
naa.6003005700f5c4601dd39fca1eee02f8:5                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:5
naa.6003005700f5c4601dd39fca1eee02f8:6                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:6
naa.6003005700f5c4601dd39fca1eee02f8:7                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:7
naa.6003005700f5c4601dd39fca1eee02f8:8                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:8
naa.6003005700f5c4601dd39fca1eee02f8:9                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:9
```

## FAT32 でフォーマットしてみた → ディスクとして見えた。

[DriveNavigator ](http://buffalo.jp/download/driver/hd/hd-lxu3c_dnavi.html) の「ソフトウェアの個別インストール」で導入できる「DiskFormatter2」を使うと、FAT32でフォーマットできる。
このあと ESXi に刺してみたら、/dev/disks/mpx.* として登場した。

VMWare vSphere Client で、すべてを再スキャン することで、
構成>ストレージ>デバイス、に Logical USB Direct-Access として登場した。

```shell-session
[root@localhost:~]# lsusb
Bus 002 Device 003: ID 0411:0227 BUFFALO INC. (formerly MelCo., Inc.) 
Bus 005 Device 002: ID 0000:0000  
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

[root@localhost:~]# ls /dev/disks/
mpx.vmhba32:C0:T0:L0                                          vml.0000000000766d68626133323a303a30
mpx.vmhba32:C0:T0:L0:1                                        vml.0000000000766d68626133323a303a30:1
naa.6003005700f5c4601dd39fca1eee02f8                          vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035
naa.6003005700f5c4601dd39fca1eee02f8:1                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:1
naa.6003005700f5c4601dd39fca1eee02f8:2                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:2
naa.6003005700f5c4601dd39fca1eee02f8:3                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:3
naa.6003005700f5c4601dd39fca1eee02f8:5                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:5
naa.6003005700f5c4601dd39fca1eee02f8:6                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:6
naa.6003005700f5c4601dd39fca1eee02f8:7                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:7
naa.6003005700f5c4601dd39fca1eee02f8:8                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:8
naa.6003005700f5c4601dd39fca1eee02f8:9                        vml.02000000006003005700f5c4601dd39fca1eee02f8524149442035:9
```

## vmfs5 としてフォーマットしてみた → VMFSとして見えた。

あとは以下の手順にそって http://www.virten.net/2015/10/usb-devices-as-vmfs-datastore-in-vsphere-esxi-6-0/

partedUtil を使ったパーティションを作り方は http://kb.vmware.com/kb/1036609 や http://kb.vmware.com/kb/2080042 を参考に。 下記の謎の ```2048``` とか ```AA31E02A400F11DB9590000C2911D1B8``` とかの背景の説明があります。

```shell-session
[root@localhost:~]# partedUtil mklabel /dev/disks/mpx.vmhba32\:C0\:T0\:L0 gpt

[root@localhost:~]# partedUtil getptbl /dev/disks/mpx.vmhba32\:C0\:T0\:L0 
gpt
243197 255 63 3906967728

[root@localhost:~]# eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba32\:C0\:T0\:L0 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3 " - 1"}')
3906959804

[root@localhost:~]# partedUtil setptbl /dev/disks/mpx.vmhba32\:C0\:T0\:L0 gpt "1 2048 3906959804 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 3906959804 AA31E02A400F11DB9590000C2911D1B8 0

[root@localhost:~]# vmkfstools -C vmfs5 -S HD-LXU3C /dev/disks/mpx.vmhba32\:C0\:T0\:L0:1
create fs deviceName:'/dev/disks/mpx.vmhba32:C0:T0:L0:1', fsShortName:'vmfs5', fsName:'HD-LXU3C'
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 vmfs5 file system on "mpx.vmhba32:C0:T0:L0:1" with blockSize 1048576 and volume label "HD-LXU3C".
Successfully created new volume: 5679191b-de894def-4c46-001999b3ab45
```

## usbarbitrator は停止しておく

ESXiホスト上で動作している usbarbitrator というプロセスは、ホスト側に接続されたUSBデバイスを、そのままパススルーで仮想マシンに見せるための仕組み。つまり、これが動いているとホスト側ではUSBデバイスとして認識できない。

なので、以下のようにしてホスト起動時にプロセスが実行されることを抑止しておく:

```shell-session
[root@localhost:~]# chkconfig usbarbitrator off
```