VMware WorkstationのDisk I/Oって、すごく・・・重いです・・・。

 いやね、普通に重いとは思っていたんですよ。
 でもね、まさかここまで重いとは思わなかったんですよ。

 発端はDisk I/OとCPUを両方酷使する、某アプリをVMware Workstationで動かそうとしたこと。アプリの性質上VMware上で動かすと割と悲しいことになることは目に見えていたのだが・・・。
 実際乗せてみたら、これが割とどころかもの凄~く悲惨なことになってしまったんですよ。

 とはいえ、ここまで悲惨なことになるってのはきっと理由がある・・・ということであちこちつっついてみたんですが。
 結論。VMware上の細切れ単位のランダムアクセスはもの凄~く重い。

 ある程度の大きさのI/Oならばまだマシなものの、細切れアクセスに対してはもう「さすが仮想マシン」としか言いようがない。

 で、これの解決方法は・・・無いよそんなの。
 兎に角素のアクセスの重さは決定的なので、上位のOSなりアプリなりで吸収するしかない。といっても上モノのOSがWindows XPだったりするとOSレベルではもう手の出しようがないので、アプリ側でどうにかするしかない。

 ということで、モノは試し。
 アプリ側に手を入れて内部バッファをしこたま大きくして、且つDisk I/Oをある程度まとめて処理するようにしてみたところ。
 何かものすごく調子よく動いているんですけど。

 ・・・と、ここまでやって気づいたのだが。
 I/Oに足引っ張られるVMでこれだけ差が出たってことは、実環境でもI/O周りに手を入れたらパフォーマンスが上がる可能性があるってことでないのか、コレは。
 んと・・・ちょっとやってみるかな・・・。

Share

2008R2 OS RAIDの落とし穴。

 これって結構大きな不具合だと思うんだがなぁ・・・。

 Hyper-Vを有効にしているWindows 2008 R2 サーバにて
 HDDを追加しBCD(起動構成情報)およびシステムパーティションを後からRAID-1化した場合
  ↓
 追加HDD側のBCDから「hypervisorlaunchtype」パラメータが消える「ことがある」

 当然、この状態のまま追加されたBCD側から起動するとHypervisorが起動せず、従ってHyper-Vも動作せずに大騒ぎとなる。

 ♯具体的には深夜にケータイで叩き起こされるぐらいには。

 解決策はbcdeditでパラメータを追記してあければOK。コマンド1行で解決しまっせ。

 bcdedit /set {current} hypervisorlaunchtype auto

 にしても、bcdedit周りというか起動管理周りというか、その辺りは細かい不具合が未だ多数残ってますな。
 余計なパラメータ突っ込まれたりとか、何故か表示言語が英語に戻ってしまい文字化け起こすとか、さ。

 ・・・というか、MS純正ブートマネージャ自体が未だ不具合てんこ盛りなんじゃないかね、と思う今日この頃。

 ◇

 にしても、久々に触ったが、OSに統合されたSoftware Mirror(RAID)ってのはやっぱ扱いがラクね。
 システムパーティションもGUIから簡単にミラーも解除も出来るし、Hardware RAIDでたまに出るRAIDカード故障の心配もする必要ないし。
 これでVerify (Surface Test)が出来れば巷に溢れるSoftware RAIDなんぞ要らなくなるのに、それを実装する気は無いんだろうなぁ>下逸。

 ♯その気があればとっくにやってるわな、ServerでのSoftware Mirrorなんて随分と昔から実装されてるし。

 ちなみに、時々Hardware RAIDは万能だと勘違いしている人が居るが、ンなことない。
 そういうヤツにこそ味あわせたい、これぞHardware RAIDの悲惨コンボ。

 RAIDカード故障→代替品が無しor手配に時間がかかる→データ救出不可→そのデータが緊急に必要

 さあどうするよ?

 ♯Hardware RAID上で重要データを取り扱っている場合、新品予備、若しくは緊急時に借用出来るRAID Hardwareを現用品とは別に必ず用意しておくべし。いやマジで。

Share

サイト用のtwitterアカウント作りました。

@skaz_hinemos

 作りました。
 取り敢えずメアド非公開のサイトなので、こっちは公開しておきます。
 あと、主としてPC関連の小ネタを垂れ流していますが、時折毒っぽいモノが流れる可能性は否定出来ないので御注意を。

#にしても、Windows用にマルチアカウントをスマートに切り替えて使えるクライアントってのが見当たらない。
 Seemicはカスタマイズが全然効かないし・・・。
 P3の複数起動とかしか無いのかね?

Share

Windows 7インストール済環境を後からVHD Bootに切り替えてみる。(後編)

 続きモノの最終回。
 Windows 7をVHDブートしようとした時の、諸々な話とか。

 ◆

 その1。
 パーティションを丸ごとVHD化するなら、予め可能な限りパーティションを圧縮しておくのがお薦め。

 というのは、前回も書いた通り、VHD化してVHDファイル自体が小さくなっても、それを起動に使用するには結局元のパーティションサイズと同じだけのディスク容量が必要になってしまうため。
 ドライブ容量のうち300GBのうち30GBしか使ってなければVHDファイルは30GBになるが、コレを使って起動しようとすれば300GBのディスク容量が必要なんですな。
 ここでパーティションを100GBまで圧縮してからVHD化すれば、このVHDを使って起動するのには100GBのディスク容量で問題ない。

 幸い、Windows 7ではパーティションを後から拡張するのは簡単なので、一度縮小した後、どうしてもディスク容量が必要になったらその時にまた拡張すれば良い。

 さてそれでは実際にどうやって縮小すればいいのかというと、一番簡単なのはWindows標準機能。
 「管理ツール」>「コンピューターの管理」から「記憶域」>「ディスクの管理」と開いて、パーティションを選んで「ボリュームの縮小」。
 MS純正だけあって簡単且つあっさりと出来るのだが、機能も簡単なもの。環境によっては全然縮まない、なんてことも。

 一方、サードパーティ製の各種パーティション操作ツールならば、ボリュームをかなり圧縮することが可能。
 代わりにおカネがかかる・・・筈なのだが、個人の非営利目的ならタダで使える製品もあるので、そういうのを探してみるのも良いかも。

 #但し当方は英語版しか見たことがない。なので、英語が多少は読めないとキビシイかも。

 ◆

 その2。
 では、実際に容量が窮屈になってしまったVHDの拡張方法は、ということでメモ。

 作業は以下の2段作業。

 ・まずVHDファイル自体を大きくする
 ・VHDファイルの中の領域を拡大する

 HDD最後方にインストールされたOSを起動して、コマンドプロンプトを起動。
 さあコマンドを打ち込みましょ。

 ◇

 まず1段目の作業。

 diskpart

 ここでUACが起動して「いいの?」と訊いてくるので「OK」とすると、新しいコマンドプロンプト画面が開く。
 その中で、以下のコマンドを入力。

 SELECT VDISK file=”VHDファイル名”
 EXPAND VDISK maximum=容量(MB単位)

 例えば、E:¥Windows.VHDを60GBに引き延ばすには

 SELECT VDISK file=”E:¥Windows.VHD”
 EXPAND VDISK maximum=61240

 無事出来たら

 EXIT

 でこのコマンドプロンプトを閉じましょ。

 ◇

 2段目の作業。

 「管理ツール」>「コンピューターの管理」から「記憶域」>「ディスクの管理」と選択し、右クリックで「VHDの接続」。
 ダイアログで問題のVHDを選択して、OKをクリック。

 するとVHDが水色のアイコンでマウントされるので、それを見ると後ろの方に「未使用領域」が見える筈。
 後は前にあるボリュームを選択して右クリック→「ボリュームの拡張」を選択、ウィザードが表示されるので「次へ」を連打すれば目一杯まで拡張される、以上。

 ボリュームが拡張し終わったら、水色のアイコンを右クリックして「VHDの切断」で作業完了。

 以上。

 ◆

 その3。
 最後に、パフォーマンスを何より重視するなら、VHDを固定容量タイプに変換するのがお薦め。

 VHDというのはMicrosoft純正だけありパフォーマンス面では相当頑張っていて、圧縮の効いている「可変容量タイプ」のものでも「一般的な使い方」では素のHDDのアクセスとあまり変わらないパフォーマンスが期待できる。
 但し、圧縮が効いているだけあって絶対的なパフォーマンスを追いかけるならやはり不利なのは事実。

 ということで、VHDを固定容量タイプに変換する方法。
 といっても実は出来るのは「変換」ではなく「新規に固定容量タイプを作成して、中身をコピー」することなんですわ。

 なので、この作業をするにはディスクが十分に空いていることを確認して。
 再びHDD最後方にインストールされたOSを起動して、コマンドプロンプトを起動。
 さあコマンドを打ち込みましょ。

 diskpart

 ここでUACが起動して「いいの?」と訊いてくるので「OK」、新しいコマンドプロンプト画面が開く。
 その中で、以下のコマンドを入力。

 CREATE VDISK file=”新しく作るVHD” source=”今あるVHD” type=fixed

 容量にもよるが、一般的に暫く時間がかかりますよ。無事終わったら

 EXIT

 でこのコマンドプロンプトを閉じましょ。
 最後に、新しいVHDが起動出来るように、古いVHDと新しいVHDのファイル名を変更しておしまい、と。

 #ちなみに、固定容量タイプを可変容量タイプにコピーすることも可能。
  その時のコマンドラインは、以下の通り。

  CREATE VDISK file=”新しく作るVHD” source=”今あるVHD” type=expandable

  こうすると、新しいVHDは圧縮の効いた可変容量タイプになりまっせ。

 ◆

 以上。
 それでは皆さんもVHDブートでサクサク環境切替なPCライフをお楽しみ下さい。ではでは。

Share

Windows 7インストール済環境を後からVHD Bootに切り替えてみる。(中編)

 前回に続いて作業ステップですよ。

 ◆Step:1

 まず、今使っている端末からHDDを取り外し、新しいHDDを接続する。
 今まで使っていたHDDは取り外して、取り敢えず置いておきましょ。

 ◆Step:2

 このHDDに対してHyper-V Server 2008 R2、Windows Server 2008 R2、Windows 7のどれかをインストールする。但しこの時、HDDは80GB程度を残して領域を確保し、残った「最後尾の領域」にこのOSをインストールする。

 ポイントは「わざと前を空けておく」ということ。
 一般にHDDは「前の方」がアクセスが高速なので、「普段使うVHD化されたWindows7」をその「前の方」に置くために空けておくんですな。

 一方、この時インストールされたOSは、VHDのメンテナンスが必要な時や、VHDが逝ってしまった時に使用するもの。
 なので、個人的にはHyper-V Serverの導入がお薦め。Windows 7が真っ当に動く環境ならほぼ確実にHyper-Vも真っ当に使えるので仮想環境でも遊べるし、おまけにタダ。
 Hyper-V Server 2008 R2ならば、一度設定を済ませてしまった後には他のWindows 7なPCからほぼGUIで管理出来るしね。

 #仕事等で2008 R2に触れる環境なら、ソレが一番便利だけど。
  これだけのために個人で買うには高過ぎるよ、Server OSは。

 まあ、緊急時にもWindows 7のGUIが使いたいというならば、ここにWindows 7を入れるというのもアリかね。

 ◆Step:3

 ここでHDDを再度古いモノに付け替える。
 そして、先ほどOSをインストールした新しいHDDも何らかの手法で接続する。

 一番簡単なのは端末内部にある増設用のコネクタを使って新旧2台接続状態にすることなのだが、最近の小型端末ではHDDの内部増設用コネクタが無いものもある。
 この場合、そこら辺に転がっているUSB変換アダプタを使って接続するのがオーソドックス。コネクタとケーブルがあればeSATAも便利。

 #アダプタが転がっていない人は買ってくるか、知人のツテで借りてくるか。
  新品でも¥3千とかそんな値段で買える程度のものだが、最近はこういうアクセサリも中古で出回っているようで、中古品があれば更にお手軽価格。

 ◆Step:4

 普段使っていたWindows 7を起動する。
 起動後、新しいHDDも認識されて、大きな空きドライブが見えていることをエクスプローラから確認、と。

 #「ドライブ~フォーマットしますか?」とか訊かれたら「はい」でフォーマットする。

 ついでに、これからVHD化する領域の全体容量を確認しましょ。
 通常はC:の、全容量。空き領域でも使用領域でもなく、全容量ね。これをメモっておくこと。

 ここで、Windows標準の「バックアップと復元」を起動する。
 「システムイメージの作成」を起動して「バックアップの保存先」に、先程の空きドライブを指定して、バックアップ開始。

 ◆Step:5

 暫く待っていれば、普段使いWindows 7のVHDが新しいHDDの上に作成される。

 #具体的には¥WindowsImageBackup¥マシン名¥バックアップを取った日付とシリアル番号¥管理ID.vhd。

 但し、目的にVHDの他にもイロイロと作成されるので、余計なモノは削除する。
 この作業中「このフォルダーにアクセスする許可が~アクセスを取得します」とか訊かれたら「はい」で続ける。

 そして余計なモノを削除していくと.VHDが2つ残るが、容量が小さい方は今回は必要無いので削除。

 #この小さいのはHDD先頭の100MB分のイメージ。
  ちなみに複数のドライブのバックアップを一気に取るとドライブの数だけVHDが増えまっせ。

 こうして最後に1つ残ったのが、普段使い環境がそのままイメージに変換されたVHDですよ。
 標準でついている名前はややこしいので、簡単な名前に変更して分かり易いフォルダに移動しておきましょ。

 #ルート直下とか。

 ◆Step:6

 再度古いHDDを取り外し、新しいHDDを本体内部に接続、端末起動。
 無事起動したら、VHDの入っているドライブをエクスプローラで開いて。

 VHDファイル本体サイズ+空き領域>Step:4でメモった容量

 であることを確認。
 もしこの法則が成り立っていない場合、このVHDから起動は出来ないので、諦めてもっと大容量のHDDを用意して作業を最初からやり直すこと。

 #何故かというと、このVHDは圧縮されているため。
  実際に起動してみると分かるが、起動中はこのVHDの圧縮は解除されて、VHD化する前と同じだけの容量を占有する(正確には「しているように見える」)。
  このため、圧縮解除出来るだけの空き領域が必要なんですな。

 ◆Step:7

 さて、ここからはコマンドラインでの操作。
 Windows 7ではAdministrator特権でコマンドプロンプトを開いてね、と。

 まずはこのコマンドを打って下準備。

 takeown /F (VHDファイル名)

 VHDファイル名、はドライブレターを含めたフルパスで。
 例えば E:¥Windows7.vhd が対象のVHDならば、こういうこと。

 takeown /F E:¥Windows7.vhd

 #この下準備、正確には「アクセス権を確保する」という作業を忘れるととっても悲惨なことになるので注意。具体的には、Step:1から全部の作業をやり直すハメになる。

 ◆Step:8

 準備が終わったら、いよいよbcdeditで起動パーティションに設定を突っ込みますよ。
 先程開いたコマンドプロンプトで引き続きコマンドを打ち込みます。

 ◇コマンドその1

 bcdedit /copy {current} /d “VHD Windows 7”

 ””の中はお好みに応じて変更可能。但し英語以外は使わない方が無難ではある。
 そしてコマンドラインの画面に注目。

 >エントリは{うだうだうだ}に正しくコピーされました。

 この中で{}で囲まれた部分が今回使うID。この後使う時は、マウスで範囲選択してコピペが一番簡単。

 ◇コマンドその2・その3

 コマンドを打つ前に、VHDが置いてある場所を確認。
 ここではE:¥Windows7.vhdということにするが、これは勿論環境次第なので、読み替えること。

 確認が出来たら、コマンドを打ちますよ。

 bcdedit /set {さっきのうだうだうだ} device vhd=[E:]¥Windows7.vhd
 bcdedit /set {さっきのうだうだうだ} osdevice vhd=[E:]¥Windows7.vhd

 2つのコマンドで途中の2文字以外違わないので、下のコマンドは上のコマンドの履歴を呼び出して修正して再度打てば簡単。

 ポイントはドライブレターを[](「角括弧、とか言うらしい」)で囲う必要があること。何でこんな仕様にしたんだろね、下逸クン。

 #言い忘れていたが、ここまでの記述は表記上¥が全て全角になっているのでコピペ注意。ホントは半角ね、当然。

 ◆Step:9

 コマンドを全部打ち終えたらここで 再起動。
 すると今まで出たことのない起動選択画面が表示されますよ。

 ここで画面上から「VHD Windows 7」(若しくは先程変更した文字列)を選択して、Enter。
 するとVHDからWindows 7を起動開始。
 ここですんなり起動出来れば、これでおしまい。

 ・・・が、イロイロやってみたが、大抵、一発目の起動はコケるのがお約束の模様。
 コケたら自動的に修復画面が表示されるので、この表示画面に従って再構成を行う。
 ハードウェアが違うとこう簡単ではないようだが、同一ハードウェア上でのVHDへの移行なら、ほぼこれで問題ない模様。
 自動的に再起動がかかりますよ。

 ◆Step:10

 そして再び、起動選択画面が表示・・・されるのだが、何故か画面が英語に。
 ・・・何でやねん。

 まあこれは後で直すので、取り敢えず再度「VHD Windows 7」を選択して起動してみる。大抵はまあここで起動する筈。

 #これで起動出来ない場合、あちこち手を入れれば起動出来る可能性はあるものの、正直簡単ではないので「環境そのままVHDに移行」は諦めた方が。
  多分新しくVHDを作ってインストールし直した方がラクでしょう。

 無事起動しても、初回の起動完了はやったら遅いのが普通のようなので、暫く待ってあげること。
 次からは通常の早さで起動するので気にする必要無し。

 ◆Step:11

 起動が終わったら、取り敢えず起動選択画面を日本語に戻しましょ。
 再び管理者権限でコマンドプロンプトを起動し、以下のコマンドを叩き込む。

 bcdedit /deletevalue {bootmgr} path

 #上は何故か追加されてしまう不要なパラメータを削除するコマンド。
  今のところKB等MSの情報には出ていない模様だが、世間では一般的。

 ここで再起動してみると、起動画面が日本語に戻っている筈。

 #極希にコレでは直らないこともあるらしい。
  その場合は、もう一回管理者権限でコマンドプロンプトを開いて、以下のコマンドを打ってみれば、確実に直る筈。・・・つか、これでダメなら起動エリアが壊れてしまっている可能性が高いので、作業は最初(Step:1)からやり直し。

  bcdedit /set {bootmgr} locale ja-JP

 ◆Step:12

 再度「VHD Windows 7」を選択して起動。

 この後、システムが無事に動いていることを確認出来たら、最後の作業。
 またまた管理者権限でコマンドラインを起動し、以下のコマンドを実行。

 bcdedit /default {current}

 これでおしまい。

 ◆

 以上。
 だ~いぶ長くなってしまったが、今のところコレが一番手間の少ない方法、だと思われる。

 この後の回で、ちょっと気づいたことなんかをまとめて、この続きモノも終了にしましょ。

Share