my cognition

書きたいことを書きます。

VMware ESXi 6.7 で OS インストール用に使用した USB メモリの空き容量を VMFS として利用する

以下は、パーティションを作成し、VMFSでフォーマットする手順である。 手順を実行する ESXi をインストールしたOSとは別のOSで起動する必要がある。その辺りは解説しないので、参考文献を参照すること。

before

f:id:kitkatayama:20220225013701p:plain

after

f:id:kitkatayama:20220225021759p:plain

tl;dr

disk に対象のUSBメモリのパスを格納して、partedUtilの情報を元にコマンドを生成する。

ESXiのコマンドラインでは、 diskpart における create partition のような「パーティションを追加する」という仕組みが用意されていない。 partedUtil setptbl では、作成したいパーティション情報を partedUtil setptbl "$disk" gpt "<1>" "<2>" ... のように並べる必要があるため、既存のパーティション情報も含めて、パーティション情報をリスティングし、全て1つのコマンドとして実行する。

そのためのリストを以下のコマンドで作成する。

disk=`ls -1 /dev/disks/mpx.vmhba* | head -n 1`; echo ${disk}
partedUtil getptbl "${disk}" | tail -n +3 | while read line; do echo "$line" | awk '{print "\"" $1,$2,$3,$4,$6 "\" \\"}' ; done; echo \"`partedUtil getptbl "${disk}" | tail -n 1 | awk '{print $1+1 " " $3+1}'` `partedUtil getptbl "${disk}" | head -n 2 | tail -1 | awk '{print $1 * $2 * $3 -1}'` "AA31E02A400F11DB9590000C2911D1B8 0"\"

上記のコマンドで得られる出力を以下のコマンドに渡す。

partedUtil setptbl "$disk" gpt \

作成したパーティションを vmfs6 でフォーマットする。デフォルトの構成だと10番目のパーティションとなるので :10 と指定しているが、異なる場合はコマンドを変えること。

vmkfstools -C vmfs6 -S usb "${disk}:10"

実行例

[root@localhost:~] disk=`ls -1 /dev/disks/mpx.vmhba* | head -n 1`; echo ${disk}
/dev/disks/mpx.vmhba32:C0:T0:L0
[root@localhost:~] partedUtil getptbl "${disk}" | tail -n +3 | while read line; do echo "$line" | awk '{print "\"" $1,$2,$3,$4,$6 "\" \\"}' ; done; echo \"`partedUtil getptbl "${disk}" | tail -n 1 | awk '{print $1+1 " " $3+1}'` `partedUtil getptbl "${disk}" | head -n 2 | tail -1 | awk '{print $1 * $2 * $3 -1}'` "AA31E02A400F11DB9590000C2911D1B8 0"\"
"1 64 8191 C12A7328F81F11D2BA4B00A0C93EC93B 128" \
"5 8224 520191 EBD0A0A2B9E5443387C068B6B72699C7 0" \
"6 520224 1032191 EBD0A0A2B9E5443387C068B6B72699C7 0" \
"7 1032224 1257471 9D27538040AD11DBBF97000C2911D1B8 0" \
"8 1257504 1843199 EBD0A0A2B9E5443387C068B6B72699C7 0" \
"9 1843200 7086079 9D27538040AD11DBBF97000C2911D1B8 0" \
"10 7086080 122013674 AA31E02A400F11DB9590000C2911D1B8 0"
[root@localhost:~] partedUtil setptbl "$disk" gpt \
> "1 64 8191 C12A7328F81F11D2BA4B00A0C93EC93B 128" \
> "5 8224 520191 EBD0A0A2B9E5443387C068B6B72699C7 0" \
> "6 520224 1032191 EBD0A0A2B9E5443387C068B6B72699C7 0" \
> "7 1032224 1257471 9D27538040AD11DBBF97000C2911D1B8 0" \
> "8 1257504 1843199 EBD0A0A2B9E5443387C068B6B72699C7 0" \
> "9 1843200 7086079 9D27538040AD11DBBF97000C2911D1B8 0" \
> "10 7086080 122013674 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 64 8191 C12A7328F81F11D2BA4B00A0C93EC93B 128
5 8224 520191 EBD0A0A2B9E5443387C068B6B72699C7 0
6 520224 1032191 EBD0A0A2B9E5443387C068B6B72699C7 0
7 1032224 1257471 9D27538040AD11DBBF97000C2911D1B8 0
8 1257504 1843199 EBD0A0A2B9E5443387C068B6B72699C7 0
9 1843200 7086079 9D27538040AD11DBBF97000C2911D1B8 0
10 7086080 122013674 AA31E02A400F11DB9590000C2911D1B8 0

s
[root@localhost:~] partedUtil getptbl $disk
gpt
7595 255 63 122019840
1 64 8191 C12A7328F81F11D2BA4B00A0C93EC93B systemPartition 128
5 8224 520191 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
6 520224 1032191 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
7 1032224 1257471 9D27538040AD11DBBF97000C2911D1B8 vmkDiagnostic 0
8 1257504 1843199 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
9 1843200 7086079 9D27538040AD11DBBF97000C2911D1B8 vmkDiagnostic 0
10 7086080 122013674 AA31E02A400F11DB9590000C2911D1B8 vmfs 0

[root@localhost:~] vmkfstools -C vmfs6 -S usb /dev/disks/mpx.vmhba32:C0:T0:L0:10
create fs deviceName:'/dev/disks/mpx.vmhba32:C0:T0:L0:10', fsShortName:'vmfs6', fsName:'usb'
deviceFullPath:/dev/disks/mpx.vmhba32:C0:T0:L0:10 deviceFile:mpx.vmhba32:C0:T0:L0:10
ATS on device /dev/disks/mpx.vmhba32:C0:T0:L0:10: 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:10" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "usb".
Successfully created new volume: *********************************************

補足: ESXi 7.0 における OS インストール用メディアとして USB メモリを利用する場合の注意点

今回紹介した手順は、EOLをもうすぐ迎える ESXi 6.7 向けの手順である。 次のバージョンである ESXi 7.0でも同様のことはできると思うが、起動ドライブの構成によっては高頻度の書き込みが行われるので、VMFSのデバイスとして空き容量を使ってよいかは用検討。

参考文献