2015/02/23

ESXi に使うべき フラッシュメディアのサイズ

ESXi 5.5 のインストールには最低 1GB のストレージ容量が必要で、scratch を配置する場合は 5.2GB 以上、となる。

これは ESXi のマニュアルに記載されている。

さて、ではサイズが異なると ESXi のインストレーションはどう変わっていくのだろうか?
VMware Fusion 上に ESXi をインストールし、その時の VMDK のサイズを変えて試してみた。

● 1,2,4GB の場合

これら 5.2 GB 未満のメディアの場合は、まったく同じサイズで5つのパーティションが作成される。

ID 開始セクタ 終了セクタ サイズ 形式(FS) 用途
1 64 8191 4MiB systemPartition (FAT32) EFI
5 8224 520191 250MiB linuxNative (FAT32) /boot
6 520224 1032191 250MiB linuxNative (FAT32) /altboot
7 1032224 1257471 110MiB vmkDiagnostic Coredump
8 1257504 1843199 286MiB linuxNative (FAT32) /store

IDはパーティション番号を意味する。
1は要するに EFI システムパーティションで、FAT である。
5 が実際の ESXi のシステムが入ってる bootbank で、6 は altbootbank である。
7 は診断パーティションとも呼ばれているもので、要するにコアダンプ用だ。
8 は visorfs の /store にマウントされるパーティションで、VMware Tools のインストール用 CDイメージなどが格納されている。

linuxNative とGUIDで記載されているパーティションが何故 FAT32かというと、GUIDパーティションテーブルでは、Windows のパーティションと Linux のパーティションに同じGUID が割り当てられており、区別できないからだ。

全体で1GiB も使ってないが、これは 1,2,4 GB どの場合も同じだった。
つまり、5.2GB 未満では、どの容量のメディアを使おうと、先頭 0.9 GiB程度しか使われない訳だ。

● 8GB の場合

さて、8GBのメディアにインストールすると、こうなる。

ID 開始セクタ 終了セクタ サイズ 形式(FS) 用途
1 64 8191 4MiB systemPartition (FAT32) EFI
5 8224 520191 250MiB linuxNative (FAT32) /boot
6 520224 1032191 250MiB linuxNative (FAT32) /altboot
7 1032224 1257471 110MiB vmkDiagnostic Coredump
8 1257504 1843199 286MiB linuxNative (FAT32) /store
9 1843200 7086079 2.5GiB vmkDiagnostic 拡張Coredump
2 7086080 15472639 4GiB linuxNative (FAT32) /scratch
3 15472640 16777182 約0.6GiB
(残り全部)
vmfs datastore01


前半のパーティションはそのままで、あらたに9, 2, 3 の三つのパーティションが追加された。

ID:9 はESXi 5.5 で新たに用意されたコアダンプパーティションだ。従来の110MiBのダンプでは全てを取りきれないため、2.5GBもの容量が確保されている。
ID:2 がいわゆる Scratch パーティションで、ログなど様々な情報が格納される。
このパーティションが存在しないと、ESXi が警告を発するのはご存じの通りだ。

ID:3 は VMFS であり、datastore1 となる部分だ。ここは、ディスクの残り領域がすべて割り当てられる。8GBのメディアの場合、600MiB程度が VMFSとして確保される。

ここであれ?っと疑問に思われた方は正しい。そう、VMFS は 600MiB なんてサイズでは構成できない。vSphereClient から datastore1 を削除した後、再作成は失敗する。

この制限以下の小さな VMFS は、インストール時にのみ現れる特別なものらしい。

閑話休題、scratch が必要な場合は 5.2GB 以上のメディアを使うようドキュメントにはあるが、0.9GiB + 2.5GiB(拡張ダンプ) + 4GiB(scratch) では、7.4GB 程度が必要に見える。

そこで、6GB の場合を試してみた。

● 6GB の場合

6GB では、パーティションテーブルはこうなった


ID 開始セクタ 終了セクタ サイズ 形式(FS) 用途
1 64 8191 4MiB systemPartition (FAT32) EFI
5 8224 520191 250MiB linuxNative (FAT32) /boot
6 520224 1032191 250MiB linuxNative (FAT32) /altboot
7 1032224 1257471 110MiB vmkDiagnostic Coredump
8 1257504 1843199 286MiB linuxNative (FAT32) /store
2 1843200 10229759 4GiB (FAT32) linuxNative (FAT32) /scratch
3 10229760 12582878 約1.1GiB
(残り全部)
vmfs datastore01


ID9 の拡張ダンプパーティションが消えている。その分、余りが増えるため VMFS 領域が拡大しているのが分かる。VMFS領域を抜くと、約 4.9 GiB になる。つまりは、SI単位系で言うところの約 5.2GB である。厳密に言うなら、scratch の最終セクタが 10229759 であり、1セクタが 512バイトのため、5237636608 バイトが必要である。これを1024 で割っていくと 4.87GB となり、1000 で割ると 5.2GB となる訳だ。

そして余った分が VMFS の領域になる。
もし、余りが 2.5GiB 以上あれば、拡張ダンプパーティションが作成され、そこからの残りで VMFS が作成される。


共有ディスクに、複数 ESXi のログまとめて管理したり、syslog で飛ばして LogInsight を使う、とかでも無い限り、scratch はあるに越したことない。

このため、おとなしく 5.2GB以上、実質的には 8GB のフラッシュメディアを用意しておくのが正解、となる。

なお、こちらのKBには面白いことが書いてある。
リテール購入品の 16 GB 以上の USB フラッシュ ドライブを使用すると、「予備の」フラッシュ セルで起動メディアを長持ちさせることができるのでお勧めしますが、コアダンプの拡張パーティションの保持には 4 GB 以上の高品質ドライブがあれば十分です。
16GB にしておくことで、ウェアレベリングが効いてより長持ちすると言うことだ。
後半の文章が謎だが、8GB の誤植ではないかと思われる。





2015/02/20

vExpert 2015 受賞しました

今年も vExpert 2015 を受賞できました。ありがとうございます。

http://blogs.vmware.com/vmtn/2015/02/vexpert-2014-announcement-2.html

2014/07/27

[ヨタ] Fusion はいつ買い時か?

Fusion のリリースノートを順に追いかけたり、Wikipedia のエントリなどを見ると確認できるが、VMware Fusion のメジャーリリースは以下となっている。
  • 1.0  2007/8/6
  • 2.0  2008/9/12
  • 3.0  2009/10/27
  • 4.0  2011/9/14
  • 5.0  2012/8/23
  • 6.0  2013/9/19
見事に秋口にまとまっているのが分かる。大まかに言って理由は二つある。

一つは、OS X のリリースだ。WWDCの影響もあり、こちらは大まかに初夏から秋にかけてのリリースとなる。
  • 10.6 Snow Leopard 2009/8/28
  • 10.7 Lion,   2011/7/20
  • 10.8 Mountain Lion,   2012/7/25
  • 10.9 Mavericks,  2013/10/22
  • 10.10 Yosemite,  2014/秋?
どちらの製品も 2010年が欠如していることから見えてくるように、OS X のリリースに合わせて、Fusion の新バージョンが出てきている、といっても過言ではない。

もう一つは VMworld SanFrancisco の存在だ。例年8月末に行われるこのイベントに合わせて新バージョンが用意され、程なくリリースされている。

開発者向けの OS X 10.10 Yosemite のプレビュー版は6月のWWDCにてアナウンスされ、以後 OSカーネルからの大幅な変更で阿鼻叫喚の修羅場が静かに巻き起こっているようだが、それに加えて、10.0 以来とも思われる一般ユーザ向けのパブリックベータ版も出てきている。

Mac開発者だった当時はドッグフードをかっ喰らう生活、そう不安定な開発者版でメールなどの日常の処理からアプリケーションの開発までやってたので、「アップルが開発者向けに出しているものは気軽に常用できるものでない、苦労を買うだけだからやめておけ」と思うのだが、しかも Yosemite は聞いた限りではかなり厄介な事態になってる、-- たとえばこの blog によるとデバイスドライバ(KEXT)にAppleの証明書が必要になり、署名のないドライバーはロードできなくなっている -- ので、どうせ後数ヶ月の話なのだから、リリースまで待った方が賢明である。

だが、OS X はアクティベーションのような強いライセンス認証を持たない。(それどころかインストールに際してライセンスキーすら確認されない)。このため、開発者向けプレビュー版の漏洩とアンダーグラウンドでの流通は毎度のことである。どうせ突っ込みたがる人間がいるなら、いっそ分かる形で出した方がマシ、っていうことなのだろう。

VMware Fusion についてもβ版が出てきている。

仮想ハードウェアバージョン11 のサポートや、Library ウィンドウからリモートの仮想マシンを操作できる、などの機能がアナウンスされている。特に ESXi の仮想マシンをリモートコントロール出来るのは気になる機能だ。これは VMware Workstation には既にあった機能だが、「クリエイティブ向け」とされた Mac では外されていたものだ。

いわゆる IT Pro 系のSEや、OSS系ではない普通の開発者にも Mac は浸透してきている。Fusion Professional ではそうしたインフラ系エンジニアにとって便利な機能が着実に整備されてきている。

さて、現在βの 次期 Fusion はいつリリースだろうか? 多分 VMworld SF にて詳細が語られ、その後、おそらく Yosemite のリリースの前後にリリースされるのだろう。

そういう意味では、特に個人ユーザはもう少し、秋口まで待ってみるのもいいかもしれない。新しいバージョンがでてから購入するも良し、リリースぎりぎりになって現行バージョンを買うも良い。
なお、現在の VMware Fusion 6.0.4 は Yosemite との互換性があるらしい。今の Fusion を買っても、Yosemite で即動かなくなることはないだろう。

確証は出来ないが、例年、新バージョンがでれば直近に旧バージョンを買ったユーザ向けに無償アップグレードがでたりする。現行バージョンを使い尽くしてから、パッチが落ち着いてから新しいバージョンにアップグレードしても遅くはないわけだ。

また、βテストユーザ向けにはディスカウントコードがでることもある。とりあえずβテストに申し込むのも手だ。

なお、10ライセンス以上をまとめて購入できる企業等の場合、vSphere などにもある Basic/Production の SnS (保守サービス)を購入することが出来る。SnS は「Support and Subscription」の略で、有効期間中に問い合わせなどサポートを受けれるのだが、そこにはフリーアップグレード/ダウングレード権が含まれている。Fusion 6 をまとめ買いして、SnS をつけておき、次のバージョンがでたらSnSの権利下で無償アップグレードをする、という感じだ。


2014/06/04

VMware Tools でカスタムスクリプトを実行させる

VMware Tools には、ゲストOSの起動/終了時、および仮想マシンをサスペンドやレジュームしたときにスクリプトを実行する機能がある。

Windows の場合は 「%ProgramFiles%\VMware\VMware Tools」 以下に以下のバッチファイルがあるのが見てとれるだろう。このバッチファイルが、それぞれのタイミングで実行されるスクリプトだ。

  • poweron-vm-default.bat
  • poweroff-vm-default.bat
  • resume-vm-default.bat
  • suspend-vm-default.bat

なお、Linux, FreeBSD, Solaris などUNIX系のOSの場合、/etc/vmware-tools 以下に同等のファイルが存在する。
OS X をゲストOSとして動かしている場合は、/Library/Application Support/VMware Tools/ 以下だ。

これらのスクリプトを編集することでOSの起動直後や終了前に様々な処理を追加する事ができる。特に View のデスクトップVMなどでは、終了前に ipconfig /flushdns, ipconfig /release をかけておきたいものだが、この機能を使えば簡単に実現できる。

ただ、特に Windows 版では、上記のスクリプトはインストール時に少々きつめの制限がかかってて、編集に苦労する。また resume と suspend については、実は空ではなく VMware 社自身の処理が入っていたりもする。念のために残しておきたいものだ。

そこで、デフォルトのスクリプトを編集するのではなく、スクリプトを別途作成、デフォルトのスクリプトに代わって VMwareTools に実行させる。これがカスタムスクリプトだ。

Fusion 4.0 や vSphere 5.0 までの VMware Tools では、GUIからカスタムスクリプトを指定することができた。
Fusion 4.0 までのタスクトレイのメニュー
VMware Tools を開くを選ぶと、各種設定が可能

しかし、Fusion 5 や vSphere 5.1 ないしそれ以降の VMware Tools ではこのUIがなくなってしまっている。

Fusion 5.0 ないしそれ以降のタスクトレイのメニュー
VMware Tools についてを選んでも情報が見えるだけだ

では、カスタムスクリプトを指定するにはどうすればいいかというと、GUIではなくコマンドラインからになる。VMwareToolboxCmd というコマンドが増えており、これをつかうのだ。
(Linux/FreeBSD/Solaris は /usr/bin/vmware-toolbox-cmd 、OS X は何故か /Library/Application Support/VMware Tools/vmware-toolbox-cli とコマンド名からして他のUNIX系と異なる)

Windows 版ではこのコマンドは VMware Tools のインストールディレクトリにある。
ただ、何故かこのディレクトリをカレントディレクトリにして使うことを前提としている節があるので、まず cd しておいたほうがいいだろう。

使い方は、「VMwareToolboxCmd help」を実行すると表示される


現在のシャットダウン時に実行するスクリプトのパスを表示するには「VMware Tools script shutdown current」で表示される



シャットダウン時のカスタムスクリプトを設定するには「VMware Tools script shutdown set "フルパス"」で指定する。相対パスは使えないので注意だ。



なんでこんなことをいまさら書いているかというと、カスタムスクリプトを仕掛けておいた vSphere 4.x 時代の仮想マシン(テンプレート)をずっと使っていたのだが、新しく作った仮想マシンでも同じくカスタムスクリプトをしかけようとして、見てみたら VMwareTools の GUI が無くなっており、設定ができなくなって焦ったから、だったりする。



2014/05/29

VSAN で使ったディスクを再利用して VMFS を構成する

先日のことだが、vExpert 2014受賞者向けに VSANを含む各種製品の評価ライセンス(365日有効)が配布された。
例年、vExpert にはだいた1年のほぼ全製品の評価版が渡されており、自由に検証に使うことができる。あくまで個人への割り当てのため家の私物 ESXi 環境などに入れても問題がないため、これは結構重宝する。


さて、そのVSANの検証をしていて、VSANの構成にHDDやSSDを使おうとした際、あるいはその逆でVSANで使ってたディスクを VMFSで利用しようとすると、構成時にそのディスクが選択肢に表示されず、利用できないことがあった。

どうやら以前に一方で使っていたディスクは、もう一方に使えないようになっているようだ。これはフェイルセーフとしても納得がいく。何らかの理由で孤立してしまい、単体では VSANの一部として見なされないディスクをうっかりVMFSで上書きしてしまっては困るからだ。

とはいえ、検証でディスクを使い回しているとそうも言ってられない。
ので、少々乱暴だが認識できるようにしたので、メモをしておく。


● なぜ認識されないか

VMFSを削除したり VSANを解放しても、SSD/HDD上にはその時に作成されたパーティション情報が残っている。ESXi はこのパーティション情報を見て VSAN/VMFSで使っていたことを検知する。VMFSで使ってた領域を VMFSで使う分には問題ないのだが、タイプを変えようとするとお互いの選択肢から除外されてしまう訳だ。
(なお、これに限らず、ESXi はなんらかのパーティション情報があると選択肢から除外する傾向がある。Linux 等で使ってたディスクを追加のVMFSとして使う際はこれが問題になる事がある。 )
このため、パーティションテーブルをクリアすれば新しいSSD/HDDのように素直に認識してくれる。


● パーティションの削除(失敗編)

さて、パーティションテーブルを飛ばすとなると、普通 dd コマンドだろう。
(大事なことなので強調してみました)

しかし、なんとも嘆かわしいことに ESXi Shell では dd コマンドは使えない。
存在はするのだが、ディスクドライバ側に必要なAPIが備わってないため、書き込みができないのだ。

# dd if=/dev/zero of=/dev/disks/naa.600508b1001cccc92c42c05aa821872a count=1 bs=1M
dd: can't open '/dev/disks/naa.600508b1001cccc92c42c05aa821872a': Function not implemented

嘆かわしい、実に嘆かわしいっ。

仕方が無いので、前時代的で格好の悪いパーティション操作系のコマンドを使うことになる。もういつから使ってるか分からない、あの fdisk だ。

ただ、ESXi の作者はすこしは正気が残ってたようで、fdisk コマンドは動きはするが非推奨となっている。MBRパーティションではなく GPT を使ってるからだ。

# fdisk -l /dev/disks/naa.600508b1001cccc92c42c05aa821872a

***
*** The fdisk command is deprecated: fdisk does not handle GPT partitions.  Please use partedUtil
***

Found valid GPT with protective MBR; using GPT

Disk /dev/disks/naa.600508b1001cccc92c42c05aa821872a: 390651840 sectors,  372M
Logical sector size: 512
Disk identifier (GUID): b380795f-8cc1-4991-b911-aed80429cf48
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 390651806

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            6143        4096   0700
   2            6144       390651806        372M   0700

上記のように、fdisk を実行すると推奨されるのが partedUtil というコマンドだ。


● partedUtil で情報を取得する

partedUtil でのパーティション情報の取得には get/set とgetptbl/setptbl という2つの系統がある。どっちも fdisk にくらべればシンプルだが、より細かい情報が出るのは getptbl の方だ。

# partedUtil get  /dev/disks/naa.600508b1001cccc92c42c05aa821872a
24316 255 63 390651840
1 2048 6143 0 0
2 6144 390651806 0 0
# partedUtil getptbl  /dev/disks/naa.600508b1001cccc92c42c05aa821872a
gpt
24316 255 63 390651840
1 2048 6143 381CFCCC728811E092EE000C2911D0B2 vsan 0
2 6144 390651806 AA31E02A400F11DB9590000C2911D1B8 vmfs 0

get/set では「パーティション番号」「開始ブロック」「終了ブロック」「タイプ」「属性」の順で、getptbl/setptbl では「パーティション番号」「開始ブロック」「終了ブロック」「UUID」「属性」となっている。実際には上記のように、UUIDのあと、そのUUIDの意味がテキストで表示されている。どの用途(ファイルシステムなど)でどのUUIDを使うかは、showGuids オプションで確認できる

# partedUtil showGuids 
Partition Type       GUID 
vmfs                 AA31E02A400F11DB9590000C2911D1B8
vmkDiagnostic        9D27538040AD11DBBF97000C2911D1B8
vsan                 381CFCCC728811E092EE000C2911D0B2
VMware Reserved      9198EFFC31C011DB8F78000C2911D1B8
Basic Data           EBD0A0A2B9E5443387C068B6B72699C
Linux Swap           0657FD6DA4AB43C484E50933C84B4F4F
Linux Lvm            E6D6D379F50744C2A23C238F2A3DF928
Linux Raid           A19D880F05FC4D3BA006743F0F84911E
Efi System           C12A7328F81F11D2BA4B00A0C93EC93B
Microsoft Reserved   E3C9E3160B5C4DB8817DF92DF00215AE
Unused Entry         00000000000000000000000000000000

Linux のパーティションが何故、と思われるかも知れないが、これらは ESXi のブートディスクで利用される。
実際にブートドライブを partedUtil で見たのが、以下だ。

# partedUtil getptbl /dev/disks/naa.600508b1001c7b1101f3c08c5b2c5784
gpt8920 255 63 143305920
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
2 7086080 15472639 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
3 15472640 143305886 AA31E02A400F11DB9590000C2911D1B8 vmfs 0

EFI準拠のため、先頭に EFI パーティションが存在する。LinuxNative の部分がブート用に使用され、vmkDiagnostic がカーネルだんぶ領域だ。最後のVMFSは datastore1 に相当する部分にあたる。パーティションの物理的な所在と、パーティション番号が異なるのも注意を要する。

どのドライブがどのデバイス名を持っているかは、色々調べる方法がある。
こちらのブログのように esxcfg-scsidevs コマンドを使っても良いし、以下のように esxcli でも同じ結果を得られる。

# esxcli storage core  device list
naa.600508b1001c36b38da960b49ca5fbed
   Display Name: HP Serial Attached SCSI Disk (naa.600508b1001c36b38da960b49ca5fbed)
   Has Settable Display Name: true
   Size: 3815350
   Device Type: Direct-Access
   Multipath Plugin: NMP
   Devfs Path: /vmfs/devices/disks/naa.600508b1001c36b38da960b49ca5fbed
   Vendor: HP
   Model: LOGICAL VOLUME
   Revision: 1.28
   SCSI Level: 5
   Is Pseudo: false
   Status: degraded
   Is RDM Capable: true
   Is Local: false
   Is Removable: false
   Is SSD: false
   Is Offline: false
   Is Perennially Reserved: false
   Queue Full Sample Size: 0
   Queue Full Threshold: 0
   Thin Provisioning Status: unknown
   Attached Filters:
   VAAI Status: unknown
   Other UIDs: vml.0200030000600508b1001c36b38da960b49ca5fbed4c4f47494341
   Is Local SAS Device: false
   Is Boot USB Device: false
   No of outstanding IOs with competing worlds: 32

naa.600508b1001c7b1101f3c08c5b2c5784
   Display Name: HP Serial Attached SCSI Disk (naa.600508b1001c7b1101f3c08c5b2c5784)
   Has Settable Display Name: true
   Size: 69973
(後略)

iSCSI/FibreChannel での共有ディストレージやRAIDカード経由の接続の場合はだいたい naa. から始まる名称に、オンボードのSATA/SAS インターフェイスの場合は mpx. から始まる名称になる。

非常に多くの情報が出るので適宜 grep で削ってもいい。お目当てがどのデバイスかは、サイズとやベンダー名、Display Name あたりがヒントになるだろう。

なお、partedUtil について記載している VMware 社のKB1036609 では、ディスクを見つけるのに /dev/disks 以下を調べろ、というなかなか素敵なことが書いてある。

余談だが、VSANで使ってた、個別にマウントされていたHDDを HP社の SmartArray でRAID5で束ねた場合、partedUtil で見るとこんなことになる。

# partedUtil getptbl /dev/disks/naa.600508b1001c36b38da960b49ca5fbed
Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)? This will also fix the last usable sector as per the new size. diskSize (7813837232) AlternateLBA (1953459631) LastUsableLBA (1953459598)
Error: The primary GPT table on '/dev/disks/naa.600508b1001c36b38da960b49ca5fbed' is OK, but secondary is corrupt. Fix secondary table? This will move secondary at the end in case it is not at the end already. It will also set LastUsableLBA to use all the space at the end. diskSize (7813837232) AlternateLBA (1953459631) LastUsableLBA (1953459598)
Warning: Not all of the space available to /dev/disks/naa.600508b1001c36b38da960b49ca5fbed appears to be used, you can fix the GPT to use all of the space (an extra 5860377600 blocks) or continue with the current setting? This will also move the backup table at the end if is is not at the end already. diskSize (7813837232) AlternateLBA (1953459631) LastUsableLBA (1953459598) NewLastUsableLBA (7813837198)
gpt
486388 255 63 7813837232
1 2048 6143 381CFCCC728811E092EE000C2911D0B2 vsan 0
2 6144 1953459598 AA31E02A400F11DB9590000C2911D1B8 vmfs 0

間にすごく長いエラーメッセージが表示されるが、要は、先頭のGPTパーティションテーブルと、末尾にあるはずのバックアップテーブルが一致しない、というエラーになる。

すくなくとも SmartArray では、RAIDを組んだだけでは内容がクリアされない、以前の単一ディスクだったときのどれかのパーティションテーブルが見えてしまうことがあるようだ。
こういう場合は、partedUtil fixGpt <デバイス名> コマンドを実行することで、パーティションテーブルの復元が行われる。


● partedUtil でパーティションを削除する

ここまで分かれば、後は簡単だ。パーティションを削除すれば良い。
ブートドライブや共有ディスクを誤って殺ってしまわないよう、またパーティション番号にも注意して、以下のように partedUtil delete コマンドを実行する

# partedUtil getptbl /dev/disks/naa.600508b1001cb619f764cc6d47de5db0
gpt486388 255 63 7813837232
1 2048 6143 381CFCCC728811E092EE000C2911D0B2 vsan 0
2 6144 1953459598 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
# partedUtil delete /dev/disks/naa.600508b1001cb619f764cc6d47de5db0 2
# partedUtil delete /dev/disks/naa.600508b1001cb619f764cc6d47de5db0 1
#

delete のあとに、デバイス名とパーティション番号を指定し、うまくいけば、何のエラーも表示せずに消えてくれる。あとは、vSphereClient / WebClient よりストレージの再スキャンを行い、デバイスを再認識させる。


再認識後は、VMFSの作成などで再び選択肢に表示されるようになる。


● VSAN で使っていたSSDの場合

ただ、VSANで使われていた SSD の場合、2つできているパーティションの後者が削除されないという問題が生じた。

# partedUtil getptbl /dev/disks/naa.600508b1001cccc92c42c05aa821872a
gpt
24316 255 63 390651840
1 2048 6143 381CFCCC728811E092EE000C2911D0B2 vsan 0
2 6144 390651806 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
# partedUtil delete /dev/disks/naa.600508b1001cccc92c42c05aa821872a 1
# partedUtil delete /dev/disks/naa.600508b1001cccc92c42c05aa821872a 2
Error: Read-only file system during write on /dev/disks/naa.600508b1001cccc92c42c05aa821872a

Unable to delete partition 2 from device /dev/disks/naa.600508b1001cccc92c42c05aa821872a

どうやら、SSDについては ESXi の VSAN モジュールが握っており、簡単には解放させてくれないようだ。
これについては、こちらのブログに記載がある。手段としては以下の2つがある。

  1. esxcli vsan cluster leave コマンドで VSANを終わらせる
  2. 下記の vmkload_mod コマンドで VSAN関連のモジュールを排除し、解除させる
    • vmkload_mod -u vsan
    • vmkload_mod -u plog
    • vmkload_mod -u lsocommon

ただ、ブログにも記載があるが、1. ではうまくいかないことが多いようだ。私の場合、先に1つパーティションを消して情報を欠損させているせいか、やはりうまくいかなかった。
ので 2. にある3つの vmkload_mod を実行した。すると、上記にある Read-only のエラーが出なくなり、パーティションが削除された。

なお、別解としては以下がある
  1. SSDの2つあるパーティションのうち一方を削除後、ESXi を再起動
最初の VSANパーティションを削除することで、VSAN関連のモジュールがSSDを見つけ出す標を失ってしまう。それから ESXi もろとも再起動、再初期化することで VSANモジュールが握れなくしてしまうと言う訳だ。

再起動が一回かかるので面倒で時間はかかるが、強制的なモジュール排除などを必要としないのでまだ安全かと思われる。


2014/05/27

[余談] Buffalo TS5400 シリーズで管理者パスワードを忘れた場合の対処

職場で Buffalo TS5400R という、ラックマウント型のNASが使えるようになった。

ISOイメージや製品インストーラやアップデータ、検証時のキャプチャ画像など、なにかと一時的なデータの量が多いので、一時的な物置として用意されたのだ。

使ってみると、UIは割と分かりやすく、また HTMLファイルを適当にアップロードすればWebサーバになったり、MySQLやPHPが内蔵されていて動的なWebページを持つサーバとしても利用できる、SOHOでのWebサーバなんてこれがあれば十分じゃないのか?という感じでなかなか良い。
( もっとも、 iSCSI機能については少々 挙動不審なところがある。iSCSI ストレージとして使いたいなら、Terastation IS (TS-RIXシリーズ)を買え、という事なのだろう...、まあ、iSCSI有効にして ESXi に繋ごうとするのがそもそもの間違いというか。)

折角だからと色々試みているうちに、気がついたら管理者パスワードを忘れてしまったのか、管理画面でユーザ:admin、パスワードを知っている限り入力してもログインできなくなった。

しょうがないのでパスワードリセットの方法を探したが、FAQはこのとおり、サポートに電話してもパスワードリカバリーUSBを作ってなければどうしようもない、修理扱いになる、との返事でした。まあ、これはサポートが言う事が正しく、作ってなかった私が悪いのだが。

と、嘆いていても仕方ないので、なんとかしてみることとした。

このNAS、後ろ側を見ると USBポートがあるのはともかく、何故か VGAコネクタと「HDD-USB」と書かれたスライドスイッチなんかがある。ディスプレイを繋ぐと、Linux を起動しているのがよく分かる。

ためしに、USBメモリに適当なx86なLinuxを突っ込んで、スライドスイッチをUSB側にして電源を入れたところ、一応起動はした。どうもCPUも x86っぽい。ならば、USBから起動することでパスワードリセットぐらいできるだろう。

ただ、そのLinuxの選定で苦労した。 gparted-live-0.18.0-2-i486 を使ったところ、どうも起動途中でドライバーが足りないっぽいメッセージで fail する。ubuntu-ja-12.10-desktop-i386 の場合は、こんどは CPUパワーか RAMか何か足りないのか、起動途中でハングアップする。

結局、systemrescuecd-x86-4.2.0 で何とか起動に成功した。この systemrescuecd だが、混まんドライベースになるが結構良くできている。

ともあれ、dmesg をもとにデバイスを判断し、mount /dev/md1 /mnt とかしてマウント、/mnt/etc/shadow ファイルを編集、admin ユーザのパスワードを消して再起動することでパスワードリセットに成功した。

デバイスが /dev/md* になるのは、LVM を使ってない場合に限る。このとき /dev/md0 が /boot に相当、/dev/md1 が / , /dev/md2 が swap になる模様だ。LVMが使われた場合も、割と Linux の標準的な構成になるはずなので、適当に探ってほしい。


なお、ISOイメージから USBメモリにブート可能で書き込むのには、UNetbootin を利用した。これも、Mac 版はどうもうまく動いてないというか、書き込みが終わってもブート可能になってない模様。(他のサイトにもあったが、MBR のアクティブフラグが原因かと考えフラグを立ててみたが、改善されず)
使ってる人も多いだろう  Windows版の場合はまったく問題ないので、深追いせず VMware Fusion 上の Windows7 でさっさと作ってしまった。仮想環境でも、 plopbootmanager を併用すれば起動確認もできる。

ともあれ、仮想化とは全く関係がないのだが、メモ代わりに残しておく。

2014/05/08

「セキュリティが強化された Windowsファイアーウォール」が起動不良に陥る

本日ハマったのでメモ。

ふと気がついたら、リモート環境にある WindowsServer 2012 のRDP接続ができなくなっていた。vSphereClient 側から確認するにOSは正しく動いている。が、RDPだけ返答しない。

ファイアーウォールの問題かと思ってMMCを開こうとすると 0x6D9 のエラーを表示してパネルが開かない。そもそも、advfirewall サービスが動いていないようだ。

ググると、同じ問題で困ってる人は居るが、解決したらしい記述がない。

どうも、

a. netsh advfirewall reset
b. net start mpsdrv
c. net start bfe
d. net start mpssvc
e. regsvr32 firewallapi.dll
の手順でコマンドを試せば良いようだが、三つ目の net start bfe でこれまた「エラー 1075: 依存関係サービスが存在しないか、または削除の対象としてマークされています。」を表示する。

このエラー番号から調べて見つけたのが以下のページ


こちらにリンクされている「RestoreBFE.exe」を実行、再起動するとBFEサービスも起動し、ファイアーウォールも正常に稼働、RDP接続もできるようになった。


イベントビューアでログを見ると、SQL Server のアップデートがかかってエラーしている記述がある。どうも、エラーが起こってアンインストールが行われる際に、依存関係か何かから BFEもアンインストールを試み? 削除マークだけ残ってる?? という感じっぽい。

再現方法が分からないので確証はないが、以上、私的なメモまで。