してログ

これは、VMware ESXi 6.0 についての私的メモです。 VMware のサイトでは、なかなか目的のページに行くことができないことが多かったり、バージョンの Update 1 とビルド番号が分かり難かったり、メモしておかないと分からなくなるので。

必要ファイルへのリンク
VMware vSphere Hypervisor 6.0 (ESXi)
正式名称が違うので戸惑いますが、これが ESXi になります。私が試したときは、6.0u1 が英語サイトにしか無かったのですが、現在は日本語サイトのほうにもあるようです。ダウンロードする場合は、ISO イメージと共に、vSphere Client とライセンスキーも忘れずに取得しておきましょう。なお、後述の PowerCLI + ESXi-Customizer-PS を使うとこれより最新のものをダウンロード(6.0 としてダウンロードしますが update 1 より新しいものです)できるようです。
VMware vSphere PowerCLI 6.0 Release 3
PoworShell 用コマンドラインツールです。インストール後の実行には、管理者としての実行が必要です。
VMware vSphere CLI 6.0
従来のコマンドラインツールです。
最新のパッチファイルのありか
手動でのアップデートになります。
V-Front Online Depot for VMware ESXi
未サポートのネットワークドライバやツールがあるサイトです。
UNetbootin
ISOイメージから Live USB を作成するツールです。USBメモリーからブートしてインストールさせたいときに使用します。
インストール前のあれこれ
今のところのベスト構成
ESXi 本体をローカルの SSD(小容量で良い)にインストールし、ゲスト OS は iSCSI にするのが良いと思われる。
カスタム ISO の作成
以前は ESXi-Customizer というツールで作成していましたが、今は ESXi-Customizer-PS という PowerShell のスクリプトを使って、最新の ESXi イメージファイルとドライバの追加ファイルをネットからダウンロードして ISO を構成するようになっています。従って、ESXi の ISO イメージもダウンロードする必要はありません。具体的に用意するものは、vSphere PowerCLI と ESXi-Customizer-PS で良いはず、なのだが今のところうまく行っていません。とりあえず、旧ツールを使っても作成可能なのでダメならそれで(でも旧ツールは Windows10 で動かないんだけど…)行こう。恐らく最新版で何か変わったのだろう。
Intel i7-4770K だと"Initializing IOV"でフリーズしてしまう
起動オプションに「noIOMMU」を加える。インストールメニューで[TAB]を押す、起動時なら Shift + O、恒久化したい場合は、(SSH で接続して)/bootbank/boot.cfg の kernelopt に加える。
The system has found a problem on your machine and cannot continue. Chipset initialization failed.
この環境に限り ESXi6.0u1 だとインストールできる(update 1 じゃないとだめ)。
HARDWARE_VIRTUALIZATION WORNING: Hardware Virtualization is not feature of the CPU, or is not enabled in the BIOS
Intel VT-x などが搭載されていても出る場合は、UEFI で無効になっているので有効にする。
インストール後のあれこれ
ライセンスキーの入力
vSphere Client から「対象ホスト>構成>ライセンス機能>(右上の)編集…」で設定できる。
SSH を有効にする
vSphere Client から「対象ホスト>構成>セキュリティ プロファイル>(右上の)プロパティ>SSH」で設定できる。
ホストはパススルー構成をサポートしていません
Intel VT-d が UEFI などで無効化されているので有効化する。なお、i7-4770K などは VT-d を利用できないので、CPU の選定は慎重に行うべき。
サーバ「vsphereclient.vmware.com」から、必要なクライアントサポートファイルを取得できません。
ESXi サーバーと vSphere Client のバージョンが違っている場合に表示され、ログインができない。サーバーより高いバージョンを使えば良さそうだが、その場合でもサポートファイルとやらを取得できた試しが無く、必ずバージョンを合わせた vSphere Client を用意する必要がある。
仮想マシンのクローンやデータストアのお引越し
ESXi では簡単にクローンなどが出来ない。いくつか方法はあるが、vmkfstools コマンドで行ったほうが良い。vSphere Client のデータストア参照でコピー&ペーストや、VMware vCenter Converter でも作業できるが致命的に遅い。 また、シン・プロビジョニング(仮想容量)のディスクイメージが、シック・プロビジョニング(実用量)なってしまう。

diskpart コマンドでディスク選択を誤って 2TB のデータディスクのパーテーションをすべて削除してしまいました。 操作ミスに気付いて、頭が真っ白になってしまい、フリーズすること約1分。 我に返って何が消えたのか考え出すと、とても諦めることができません。 と言う訳で、パーテーションの復元を試してみることにしました。

まず、パーテーションを削除しただけなので、データはすべて残っているはずです。 そして、今はシステムから切り離されているので、上書きされる心配も考えなくていいと思います。 ひとまず、データは安全だと考えていいと思います。

データ復元ツールで、まず思い浮かぶのは誤って削除してしまったファイルを復元するタイプのものです。 手持ちのツールをいくつか試してみると、やはりデータは保持されています。 ただ、容量が容量なだけにスキャンするにも、ファイルを退避するにも超大な時間が掛かります。 できれば、パーテーションテーブルだけを復元し、中身はそのままという形にしたいのでググります。

PartitionRecovery

http://tokiwa.qee.jp/download/PartitionRecovery/PartitionRecovery.html

こちらのツールでは、復元可能と表示されるものの、復元を行うと「ブートセクタが見つかりませんでした」と出てしまいました。 残念ながら諦めてください、ということのようです。

EaseUS Partition Master (Free)

https://jp.easeus.com/partition-manager-software/free.html

こちらは有料ツールですが、背に腹は替えられないということで試してみました。 最初インストールした試用版は、削除したパーテーションは見つけられるものの、いざ復元しようとすると「これは試用版なため…」と無理そうです。 まあ、値段的には5,000円くらいだし買っても良かったんですが、説明を読むと家庭での利用は無料だと書いてあるみたいなので、もう少し調べてみました。 すると、トライアル版ではなくフリー版というのがあるのを発見、さっそくダウンロードしてみました。

結果、あっという間に復元完了で、元どおりすべてのデータを復元することができました。 諦めないで良かったと、心底思いました。 皆様も、diskpart の操作はくれぐれも慎重に行いましょう。

USBメモリにインストールしてディスクレスにした ESXi では、「ホスト xxxxx のシステム ログは非永続性ストレージに格納されています。」と警告されます。 ログ出力先をネットワークストレージ(iSCSI)に設定しようと思ったのですが、設定方法が少し分かりにくかったので残しておきます。

  1. ログを置くストレージに専用ディレクトリを作る
  2. vSphere Client > ホスト名 > 構成 > 詳細設定 > Syslog > Syslog.global.logDir
  3. 例えば、ストレージが“strage1”、ディレクトリが“/logs”、とすれば“[strage1] /logs”を入力します
  4. [OK] を押して適用します

これでログが残るようになって一安心です。 しかし、よくよく考えてみると iSCSI にログディレクトリを置いた場合、ネットワーク切断時に原因を追えなくなってしまいそうです。 なので、ローカルディスクをインストールすることにしました。 でも、ディスクレスは維持したいので、インストールするのは SSD(32GB 程度の小サイズなら数千円で買えます)です。 今さらですが、USBメモリなんかにインストールしなくても良かったです。

サーバー機のリプレースを行い、すべての移設作業が完了しました。 ずっと電源を入れっぱなしだったので、停止したサーバー内部は埃がたくさん、よく頑張ってくれました。 移設作業を進めていく中で、作業完了したサービスをひとつずつ停止していくのですが、この作業かなりジンときます。

Apache(ウェブサイトの移設作業)

Apache のグラフは1日の中で規則正しく脈を打っていたのに、まるで心停止したかのようです。 移行は PHP のバージョンが上がったことによる関数名の競合が1件、それ以外はスムーズに移行できました。

  • sshfs で新サーバーをマウントし rsync でコピーする(rsync だと差分コピーできるので、二回に分けて行えば、事前に動作確認もでき、本番作業の時間短縮になります)
  • データベースは、フルバックアップを取ってアーカイブを転送し、そのままリストアで問題なし(ファイルサイズが大きくなるので圧縮オプションを使った方が良いです)
  • 今回は、PHP のバージョンが上がった関係で、関数名の競合が少しありました(メモ用に使っている PukiWiki が動かなくなったので、公式から 1.5 をダウンロードして同時にアップデートしました)
Sendmail → Postfix(IMAP メールデータ移設)

こちらはメールサーバー(Sendmail)です。 新しいサーバーでは、Postfix に移行しますのでこの移行作業が一番心配でした。 ただ、実際にやってみると思いのほかスムーズで、特に面倒なところはほとんどありませんでした。

  • imap なのですが、新しい Maildir にディレクトリ毎コピーすれば問題無いようです
  • 実ユーザー管理から、VirtualMailbox に移行しました
  • メールの自動処理をしていたパイプ処理が、VirtualMailbox だとできないので、一部を実ユーザーに転送設定しました(実ユーザーと言っても、aliases でそのままパイプしてスクリプトが処理しますので、実ユーザーは無くて OK です)
  • Procmail も利用していて、こちらも実ユーザーへの転送が必要ですが、とりあえず無くても困らないのでそのままにしました(こっちはちゃんと実ユーザーを作ってそこに配送しないとダメです)
  • 接続プロトコルも、imap から imaps になって安心です

まだまだ、細かい設定やチューニングがありますし、新しい管理ツールに慣れないのでスムーズに熟せません。 新しいサーバーが静かに産声を上げた傍らで、旧サーバーは電源を外されすっかり冷えてしまっています。 しばらくは、移行漏れやトラブルに備え動態保存しておきますが、そのあと何につかいましょうか。 長年トラブルらしいトラブルは皆無の優秀なサーバーでしたが、見えない部分で部品は劣化してることでしょう。 本当にお疲れ様でした。

他のサーバーのノードを追加しようと思い、munin.conf に追加したまでは良いのですが、なぜかサイトに表示されない事態が発生しました。 telnet で 4949 に接続可能なので、基本的な設定は間違ってなさそうです。 ログ(/var/log/munin/munin-update.log)を確認してみると、

[WARNING] Config node xxxx listed no services for xxxx, (advertised as localhost.localdomain).  Please see http://munin-monitoring.org/wiki/FAQ_no_graphs for further information.

というような警告が出ています。 どうやら、ホスト名が localhost.localdomain のままだったのが原因らしいです。 munin.conf とリモートサーバーの munin-node.conf のホスト名を一致させておく必要があるようです。

CentOS7 に EPEL リポジトリから munin を設定したところ、グラフの曜日部分が文字化けしているようでした。 このサイトの作成は、cron で定期実行されているので、そこから辿ったシェルスクリプトを修正して対応しました。

/usr/bin/munin-cron の編集

下記のコードを2行目くらいに記述するだけで OK です。

export LANG=C

サイトのドメイン移転で使われる「301リダイレクト」を設定してみて、あれって思ったことがあった今日この頃。 実は、このサイト自体のドメインを landhere.info から landhere.jp に移転することにして、mod_rewrite でリダイレクトを設定したんです。

なぜかリダイレクト後の URL に「/」がひとつ多い

いろんなサイトに紹介されている下記のような設定を記述してみました。 ちなみに、ドメイン移転だけなので .htaccess は使わずに、httpd.conf の VirtualHost に書いてみました。

RewriteEngine on
RewriteRule (.*) http://landhere.jp/$1 [R=301,L]

実際にブラウザで確認してみると、「http://landhere.info/blog/」が「http://landhere.jp//blog/」にリダイレクトされるのを確認。 でも、よく見ると「/」がひとつ余計である。 前に設定したときは、こんなことは無かったと思うけど、最新バージョンでは挙動が異なるのか何なのか、とりあえず。

RewriteEngine on
RewriteRule (.*) http://landhere.jp$1 [R=301,L]

このように変更して解決しました。 まあ、少し嵌ったんですが。

設定を変更してもリダイレクト結果が変わらない

設定を変更した後、再びブラウザでテストしても同じリダイレクト先に飛ばされます。 正規表現を弄ったりしても、何しても結果は変わらず、しばらく悩んだ末。 大胆にリダイレクト先ドメイン名を www.yahoo.co.jp にしてみよう、というのを試してみてやっと分かった。 ブラウザがひと度、301リダイレクトを受け取ってしまうとキャッシュしてしまう、というのが真相らしい。 と言う訳で、キャッシュクリアを実行して正しいリダイレクトが行われるのを確認しました。 くだらない事で消費した時間を返して欲しいです。

USB メモリにセットアップすれば、サーバーをディスクレスにでき、環境のバックアップも簡単に行えます。 ハイパーバイザの容量が 150MB 程度しかないため、数百円で特売されているような USB メモリで十分です。 ただ、USB メモリが飛び出していると破損させてしまう心配があるので、RUF3-PS8G-BK のような出っ張らないタイプの製品がお勧めです。 または、マザーボードから USB ポートを筐体内に出して USB メモリを内臓してしまう、というのもアリかなと思います。

セットアップの手順

セットアップ対象の USB メモリ自身に、インストーラを作成できるため、光学メディアなどが無くても大丈夫です。 用意した ISO イメージは UNetbootin というツールで USB メモリに書き込みます。 ただ、今のバージョンではセットアップ途中でのドライバ追加はできないので、必要であれば ESXi-Customizer というツールで ISO に書き込んでおく必要があります。 基本的には、ネットワークインターフェイス(Intel 製が無難)に気を付けて、予め CPU の VT 関係の設定を UFIF(BIOS)で有効にしておけば良いです。

USB メモリのバックアップ

セットアップが終わった時点で、USB メモリをバックアップしておくと、トラブルのとき安心です。 バックアップには DD というディスクイメージをコピーできるツールを使います。 Windows 用には DD for Windows というツールがありますが、これで作った複製では起動しませんでした(BANK6: not a VMware boot bank, No hypervisor found となってしまう)。 動いた報告もありますが、無難に Linux の DD コマンドを使いましょう。 手元に適当な Linux が無い場合は、Ubuntu などの LiveCD で起動すれば良いでしょう。 具体的な手順は下記の通りです。

  1. USB メモリを刺す
  2. dmsg コマンドでデバイス名を取得(直前に認識した USB デバイスの情報の中で sdc などの名前で確認します)
  3. DD コマンドでとりあえずファイルにダンプします
    dd if=/dev/sdc of=esxi.img
  4. 同容量 or それ以上の USB メモリに差し替えます
  5. もう一度 dmsg でデバイス名を確認しておきます
  6. DD コマンドでリストアします
    dd if=esxi.img of=/dev/sdc

USB メモリは、読み込みは割と速くても書き込みが遅いので、気長に待ちましょう。


追記

後にアクセス速度、安定性、耐久性などの面から、小容量の SSD のほうが適していると考えを改めました。 価格的にも 32GB 程度なら、Transcend や Sandisk 製でも 4,000 円程度で買えます。 少し大容量にして、高速なデータストアと共存させても良いですが、この値段なら分けておくのが良いと思います。

USB メモリーを Linux の USB ブートに使ったりすると、すべての容量が見えなくなることがあります。 例えば、8GB の容量があるはずが、Windows 上からは 512MB しか見えなくなり、フォーマットしても容量が回復したりしません。 このとき、PC(マイコンピュータ)を右クリックして〈コンピュータの管理>ディスクの管理〉を開くと、パーテーションが2つに分かれていたりするかも知れません。 恐らく片方のパーテーションは、削除のメニューがグレーアウトされていて選択することができない状態では無いでしょうか。

要するに、削除不能な特殊なパーテーションが出来てしまっていて、そこを避けた領域しか利用できなくなってるのです。 削除不能なパーテーションも、Windows では見れないフォーマットになっている関係で、総容量があたかも 512MB しか無いというような表示になるのです。 強制的にパーテーションを削除してあげれば良いのですが Windows の GUI からは無理なようで、CUI コマンドの diskpart を使うか、サードパーティ製のツールを使って削除します。

diskpart を使ったパーテーションの強制削除

基本的にはハードディスクの OEM パーテーションと同じやり方で削除しますので、「OEM パーテーションの削除方法」で書いた手順で OK です。 もちろん、削除するドライブ、パーテーションは間違わないよう、くれぐれも注意してください。 ただ、このままでは PC(マイコンピュータ)のドライブアイコンからは、容量が不明と表示されフォーマットすることができません。 先ほどのディスクの管理をもう一度開き、「未割り当て」になっているドライブのメニューから「新しいシンプルボリューム」を選択して、パーテーションの作成とフォーマットを行うことで使えるようになります。

環境を組み替えて、キャプチャーボードとPC自体も変えたところ、番組取得がうまくできないようになってしまい苦労しました。 基本的な設定は新しい環境に合わせて変更し、チャンネル情報も設定し直したのですが、番組情報を開始するとすぐに終了してしまいます。 番組情報取得スケジュールも、〈インテリジェント>番組情報取得〉も最初のチャンネルが終わると、そこで終了してしまうような感じです。

結果的には、新しくTvRock作業フォルダを作り直したらOKになりました。 この作業フォルダには、設定ファイルや自動予約設定などが入っているので、新しく作り直すとそれらもリセットされてしまいます。 DTune.bat を再構築したり、自動予約も入力し直すのは大変なので色々と当たりを付けていたら、なんとか古いフォルダからコピーしてくることに成功しました。

現象
  • 番組情報取得ができない(最初のチャンネル以外は取得されずに終了してしまう)
  • 手動で番組情報取得すると、チャンネル切り替えが行われずに正常終了扱いになっている感じ
  • 設定等を弄っていたら、TvRock 起動直後にアプリケーションエラーで落ちてしまう現象も併発
対応:番組情報を保存してある作業フォルダの再構築
  1. 新しく空のフォルダを作成する
  2. TvRock の設定を開き〈システム設定>TvRock 作業フォルダ〉を作成したフォルダにする
  3. TvRock を一旦終了させ、もう一度起動させる → これで必要ファイルが作成したフォルダにできるはず
  4. TvRock を終了させる(この状態では設定がリセットされているので)
  5. 古い作業フォルダから、dtv.ini、tvrock.sch、tvrock.key の3つを作成したフォルダにコピーする
  6. TvRock を起動し、番組情報取得を行う

追記
  • 番組情報取得がすぐに終了してしまうのは、〈インテリジェント>番組情報取得>番組情報取得条件〉が「3日以上経過」になっていたためのようです。これは「無条件取得」にする必要があったようです。
  • 特定のチャンネルで番組情報取得ができないのは、〈設定>チューナー>チャンネル設定〉で、サービスIDが設定されていなかったようです。TvTest でチャンネルスキャンした後、チャンネル毎にサービスIDが表示されていると思いますので、それと同じ値を設定しました。とりあえず、チャンネル毎に複数あるので一番上のサービスIDを入れています。