自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

vSphere ESXi のブートディスクパーティションの変遷

vSphere 7 のアップグレード時に注意すること(ブートパーティション

vSphere 7 では久しぶりにブートディスクパーティション構成が変わりました。これ、vSphere 5.5 で拡張 CoreDump Partition ができて以来の変更で、今回はパーティション構成も整理されており、ずいぶん大きな変更になります。

今回はその変更による影響は特に細かく説明することなく、どのように変わっていったかを図で説明します。

vSphere 5.0 / 5.1 でのパーティション構成

f:id:imaisato:20200612161301p:plain

ESXi 5.0 / 5.1 のブートディスク構成

vSphere 5.0 / 5.1 までのパーティション構成は、ESXi を動かすのに必要なものを 1GB の範囲の中ですべて賄うという形をとっています。とても小さなシステムですね。

vSphere 5.5 でのパーティション構成

f:id:imaisato:20200612161327p:plain

ESXi 5.5 のブートディスク構成

vSphere 5.0 / 5.1 で頻繁に起きていた CoreDump 領域の不足を改善するために、追加の CoreDump 領域がパーティション 9番に用意されました。

この段階で ESXi では以下のパーティションを 9つ利用していることになります。

  1. 基本パーティションEFI システム          Master Boot
  2. 基本パーティション:Scratch パーティション     /scratch
  3. 基本パーティション:VMFS パーティション   
  4. 拡張パーティションのテーブル領域
  5. 拡張パーティション:BootBank-0          /bootbank
  6. 拡張パーティション:BootBank-1          /altbootbank
  7. 拡張パーティション:コアダンプパーティション   Small CoreDump
  8. 拡張パーティション:Locker             /store
  9. 拡張パーティション:拡張コアダンプパーティション Large CoreDump

ESXi 6.0 / 6.5 / 6.7 でのパーティション構成

f:id:imaisato:20200612161421p:plain

ESXi 6.0 / 6.5 / 6.7 のブートディスク構成

vSphere 6 になってもブートディスクのパーティション構成の変化はありませんでしたが、BIOS だけではなく UEFI からの起動が可能になっています。 

vSphere 7.0 でのパーティション構成

vSphere 7 では vSphere の機能が大幅にアップされ、その上ハイパーバイザーの ESXi にもいくつか手が入りました。それに合わせて今後も ESXI の拡張があることを考え、ESXi のパーティション構成が変わっています。

f:id:imaisato:20200612161817p:plain

ESXi 7.0 のブートディスク構成

よく見ていただくとわかるのですが、今までずっとあった 9つのパーティションが整理され、最大でも 5つになっています。つまり、今までばらばらのパーティションを構成していた Scratch, コアダンプ 2つが OS Data パーティションにまとめられています。

  1. 基本パーティションEFI システム          Master Boot
  2. 基本パーティション:未使用
  3. 基本パーティション:未使用
  4. 拡張パーティションのテーブル領域
  5. 拡張パーティション:BootBank-0          /bootbank
  6. 拡張パーティション:BootBank-1          /altbootbank
  7. 拡張パーティション:vSANが利用するパーティション VMFSL
  8. 拡張パーティション:データストア          VMFS 6
  9. 拡張パーティション:削除

この中で vSAN でのスナップショットの速度改善などで利用される vSAN FS が利用するための領域が別途 VMFSL として用意されています。そして、テーブルのリンクを追うことになるためそれによる性能劣化を懸念して基本パーティションに配置されていた VMFS 自体も拡張パーティションに配置されるようになり、より柔軟性が出るようになりました。このあたり、昔の考えであれば VMFS と VMFSL は基本パーティションに配置するのになぁと思いつつ、ハードウエア性能向上に伴う変化なので面白いなぁと感じます。

パーティション構成変更による影響は

ESXi インストール時にインストール先媒体の容量が 16GB以上であれば ESXi 7.0 の BootBank の 1GB への対応がされるかと思いますが、それより少ない場合はインストール先媒体の交換を検討したほうが良いと思います。具体的には 32GB 以上の USB または SD を使うか、物理ディスク / SSD を使用するという形です。後者の場合は 128GB 以上の媒体を選択しないとローカル VMFS を構築できませんのでそこの要注意点です。

USBメディアやSDメディアの空き容量はどう扱われるのか

今後は大容量のブートデバイスにしなければならないのかと、USB や SD カードをインストールメディアで使用している人はそれらのメディアの容量を大きなのに交換するかと思います。昨今は大容量の USB や SD メディアが安価で出るようになっており、そして品質も高品質なものが出るようになっており、エラーが発生した領域の代替領域をしっかり持っているものも多くなっています。そのため、128GB 以上の USB や SD 媒体を使った場合の空き領域を、なにか別の用途に使いたくなります。例えば、一時的に使うローカルデータストアなどにですね。または、Scratch の置き場としても使いたくなるかもしれません。しかし、業務用で使用する環境ではリムーバブル媒体にそれらを置くことは非常に危険ですので制限がかかっているのだと思われます。

USBメディアやSDメディアの空き容量に VMFS を作るには

ただ、私を含めて個人で家ラボをやっている場合は、その使われていない領域を有効活用したいはずです。しかし、ESXi ではデフォルトでは USB や SD 媒体にはそれらのパーティションを作れないようにしてあるため、活用することができませんでした。でも、実は ESXi の起動時に boot.cfg で利用許可の設定をするとパーティションの作成ができるようになります。その手順は以下の通りです。

  • 上記図を参照にして、空き容量ができる USB または SD 媒体を用意する。
  • 用意した USB または SD 媒体に、ESXi をブートメディアとしてインストールする。
  • インストール後に ESXi を起動
  • ターミナルエミュレーターから SSH で接続するか、コンソールシェルから ESXi にログインする
  • エディターで /bootbank/boot.cfg のファイルを編集する。(以下の赤太字の行)

■オリジナルの boot.cfg (ESXi 6.0 の例)
---------------------------------------------

bootstate=0

kernel=tboot.b00

title=Loading VMware ESXi

kernelopt= installerDiskDumpSlotSize=2560 no-auto-partition

modules=b.b00 --- jumpstrt.gz --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- uc_intel.b00 --- uc_amd.b00 --- sb.v00 --- s.v00 --- mtip32xx.v00 --- ata_pata.v00 --- ata_pata.v01 --- ata_pata.v02 --- ata_pata.v03 --- ata_pata.v04 --- ata_pata.v05 --- ata_pata.v06 --- ata_pata.v07 --- block_cc.v00 --- ehci_ehc.v00 --- elxnet.v00 --- emulex_e.v00 --- weaselin.t00 --- esx_dvfi.v00 --- esx_ui.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- lpfc.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsu_hp_h.v00 --- lsu_lsi_.v00 --- lsu_lsi_.v01 --- lsu_lsi_.v02 --- lsu_lsi_.v03 --- lsu_lsi_.v04 --- misc_cni.v00 --- misc_dri.v00 --- net_bnx2.v00 --- net_bnx2.v01 --- net_cnic.v00 --- net_e100.v00 --- net_e100.v01 --- net_enic.v00 --- net_forc.v00 --- net_igb.v00 --- net_ixgb.v00 --- net_mlx4.v00 --- net_mlx4.v01 --- net_nx_n.v00 --- net_tg3.v00 --- net_vmxn.v00 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nvme.v00 --- ohci_usb.v00 --- qlnative.v00 --- rste.v00 --- sata_ahc.v00 --- sata_ata.v00 --- sata_sat.v00 --- sata_sat.v01 --- sata_sat.v02 --- sata_sat.v03 --- sata_sat.v04 --- scsi_aac.v00 --- scsi_adp.v00 --- scsi_aic.v00 --- scsi_bnx.v00 --- scsi_bnx.v01 --- scsi_fni.v00 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v00 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_qla.v00 --- uhci_usb.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- xhci_xhc.v00 --- payload1.v00 --- xorg.v00 --- imgdb.tgz --- state.tgz build=6.0.0-15517548

updated=1

---------------------------------------------

 

■修正後の boot.cfg (ESXi 6.0 の例)
---------------------------------------------

bootstate=0

kernel=tboot.b00

title=Loading VMware ESXi

kernelopt= installerDiskDumpSlotSize=2560 autoPartition=TRUE skipPartitioningSsds=TRUE autoPartitionCreateUSBCoreDumpPartition=TRUE allowCoreDumpOnUsb=TRUE

modules=b.b00 --- jumpstrt.gz --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- uc_intel.b00 --- uc_amd.b00 --- sb.v00 --- s.v00 --- mtip32xx.v00 --- ata_pata.v00 --- ata_pata.v01 --- ata_pata.v02 --- ata_pata.v03 --- ata_pata.v04 --- ata_pata.v05 --- ata_pata.v06 --- ata_pata.v07 --- block_cc.v00 --- ehci_ehc.v00 --- elxnet.v00 --- emulex_e.v00 --- weaselin.t00 --- esx_dvfi.v00 --- esx_ui.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- lpfc.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsu_hp_h.v00 --- lsu_lsi_.v00 --- lsu_lsi_.v01 --- lsu_lsi_.v02 --- lsu_lsi_.v03 --- lsu_lsi_.v04 --- misc_cni.v00 --- misc_dri.v00 --- net_bnx2.v00 --- net_bnx2.v01 --- net_cnic.v00 --- net_e100.v00 --- net_e100.v01 --- net_enic.v00 --- net_forc.v00 --- net_igb.v00 --- net_ixgb.v00 --- net_mlx4.v00 --- net_mlx4.v01 --- net_nx_n.v00 --- net_tg3.v00 --- net_vmxn.v00 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nvme.v00 --- ohci_usb.v00 --- qlnative.v00 --- rste.v00 --- sata_ahc.v00 --- sata_ata.v00 --- sata_sat.v00 --- sata_sat.v01 --- sata_sat.v02 --- sata_sat.v03 --- sata_sat.v04 --- scsi_aac.v00 --- scsi_adp.v00 --- scsi_aic.v00 --- scsi_bnx.v00 --- scsi_bnx.v01 --- scsi_fni.v00 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v00 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_qla.v00 --- uhci_usb.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- xhci_xhc.v00 --- payload1.v00 --- xorg.v00 --- imgdb.tgz --- state.tgz build=6.0.0-15517548

updated=1

---------------------------------------------

  •  修正した boot.cfg を保存
  • ESXi を再起動

この再起動後から空き容量を自由に使えるようになります。例えば「新しいデータストアの作成」では、USB または SD 媒体がデバイスの選択で出てくるようになります。これで一時的に iso イメージを置いたり OVF や仮想マシンを置いておくことができるようになりますね。そして、USB や SD 媒体では置くことのできなかった Scratch も置くことができるようになります。このページで紹介している ESXi 5.5 から最新の ESXi 7.0 まで使える方法ですので、家ラボで USB または SD n活用ができていない場合には、ぜひ使ってみてください。

 

次回以降は

次回以降は vSphere 7 へのアップグレードについて詳細に順番に書いていこうと思うのですが、ここはどちらかというと新幹線メインになりつつあるので、気が向いたら vSphere 関連は別のところに独立させるかもしれません。まだどうするかは決めかねていますが。