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

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

 さて、ここからは先日のHDDネタにも実は繋がっているお話。

 タイトルにも書いたが、以下は「普通にWindows7がインストールされている」端末を「VHDブートでWindows7が起動する」端末に変更する作業のメモ。

 具体的なメリットはというと「Windows7のいろんな環境を切り替えて使えるようになる」「(Hyper-V Serverを導入すれば)Hyper-V環境として使うことも出来る」。
 まあHyper-Vをガシガシ使うのはドライバ周りのこともあって特に廉価版端末ではキビシイことも多いが、複数のWindows7環境を切り替えて使えるというのは意外とメリットが多い。

 例えば、DTM・DTVといったメディア系の作業、コアなゲームのプレイ、或いはカーネルデバッガを使うようなプログラミングを行う場合、出来るだけ最適化された環境を使った方が幸せになれることが多い。
 ところが、従来は1台の端末で「普段のもの」「最適化されたもの」といった複数の環境を用意するのはかなりハードルが高い作業で、その上環境の特殊性故に発生する制限も多かったのであり。
 それ故、最終的には「カネで解決する」という究極手段、「もう一台端末を買う」(メディア作業・ゲーマー)とか「いっそシステム全体を仮想化してしまう」(開発系)ということに辿り着くことも多い。

 一方、Windows7でVHDブートを使うと、従来では考えられない程簡単に、且つ殆ど制限らしい制限も受けずに環境を切り替えることが出来る。
 そのため、1台の端末をいろんな状況に最適化して使い回すことが可能なのですよ。
 余計なカネもかからないし、追加の設置場所も必要無いし、とってもスマート。

 とまぁ、能書きはこんなところで。

 #え、何故「今ある環境に追加でVHDブートするWindows 7をインストールする」でなく、「今ある環境をVHDに変更する」のか、って?
  いやだってさ、どうせやるならVHDのメリットを享受しましょうよ。

 ◇

 ここからは実際の作業編ですよ・・・と思ったのだが、書いたら長くなってしまったので分割。
 取り敢えず、用意するモノだけ。

 ◆Step:0

 用意するモノ:新しい大容量HDD。作業対象の端末内蔵HDDより100GB以上大きいモノ。

 とはいえ、出来るだけ容量が大きい方が便利ですよ。
 今では2TBのHDDも特価品ならば¥1万を割ることすらあるので、いっそデカいのを用意してしまいましょうよ。

 どうせイロイロ環境を切り替えて使うならば、デカい容量が無駄になることも無いので。

 以降、実作業は次回へ。

Share

続・メモリ帯域は偉大だという話。

 さて、前回のネタは「Full HD動画を再生するにはVGAのメモリ帯域が必要だ」というお話だったのだが。

 これをちょっと視点をズラして言い換えてみると、こんなことが言えるのでは。

 統合型チップセットでFull HD動画再生を行っている間、VGA画像転送に圧迫されてメインメモリの帯域は著しく制限される
 →従ってこの間はバックグラウンドで実行されているプログラムの処理効率は著しく落ちる

 VGAもメインメモリも同じメモリを分け合っているので、Full HD再生中はメモリ争奪戦がナカナカ凄いことになっている筈。
 でもこれ、ユーザが体感出来る程の違いは出るのか?

 ・・・ということで、実験してみた。
 大量のメモリアクセスを繰り返すと思われるアプリをいくつか、ついでにVMware Workstationも引っ張り出して。
 Full HD動画を再生中と、何もしないでいる時と、条件を変えて実行し、パフォーマンスに差が出るかどうか。

 ◇

 結論。

 確かに違いは出ているようだが、何と言ったら良いやら。

 ・・・スッキリしない言い方だが、実際あんまりスッキリした結論は出てないのよ。

 まずアプリレベルでは、何度か繰り返してみても「振れ幅」が大きく、「確実」ということを言うのは正直キビシイ。
 個人的主観ではパフォーマンスは劣化していると思うのだが・・・という。

 一方、VMware Workstation上で動かしているOSには目に見えてパフォーマンス劣化が。
 特に仮想I/O周辺は影響が大きく、画面描画やNetworkデータ入出力といった部分では、パフォーマンスが半分以下に。

 まあVMware Workstationの仮想I/Oがクソ重いというのは周知の事実で、ちょっと重いアプリを走らせればあっさりとパフォーマンスが劣化するのは常識ではあるのたが。
 ポイントはFull HD再生時にはCPUは「演算は殆どしていない」ということ。GPU側のアクセラレーション(790GXの場合UVD)が効いているので、世間一般ではこの状態を「システムに負荷はかかっていない」と表現することが多い。
 にも関わらず実際に仮想I/Oに強烈なダメージが来る、いうことは「動画再生のためにデータ転送と画面描画をそこそこ頑張っていて、メモリ帯域もそれなりに占有している」という状態は、「システムに少なくない負荷がかかっている」と表現することが正しいのでは、という気がする。

 #にしても、こうやってイロイロいじっていると、単純な機能単位で測るいわゆるベンチマークってのがホントに「参考程度」でしかない、というのを実感しますな。
  あと、そんなにメモリ帯域が大切なら素直に単品VGA刺せよ、と。

Share

メモリ帯域は偉大だ、という話。

 または、SidePort Memoryだけでは苦し過ぎるというお話。

 さて、AMDの7×0/8×0系のIGXではお馴染みのSidePort Memory。
 128MB程度がオンボードに乗っていて、コレがあると無いとではビミョーに性能が変わるという。最近では搭載しているのが当たり前。

 #・・・かと思ったら、785Gから880Gに世代交代してまた採用率が下がっているような?ビミョーな性能とコストを天秤にかけて、コストが優先されてるのかね。

 ところで、一部のマザボではSidePort Memoryを使うかどうか、或いはUMAを使うかどうか、ということをBIOSで設定が可能なんですな。

 さて、ここからが本題。

 128MBもあればWindows 7でAEROも使用可能。Full HDの2枚表示でも問題ない。
 そこで、モノは試し。790GXをSidePort Memory「だけ」で動かしたらどうなるか、ちょいと試してみた。
 といっても、ポイントはベンチマーク値ではなく。そんな分かり易く数字が下がるのはどうでも良くて、「体感で」分かる程の差が出るかどうか。

 ちなみにSidePort MemoryはDDR-667MHzとクロック数だけは高いが、帯域は僅か「16bit」。
 同世代のRadeon 3450(とその後継の4350)がDDR-500MHzとはいえ64bitの帯域があるのと比べると、1/3という。

 ◇

 実際にBIOSで切り替えて少し使ってみた。

 ビジネスアプリでは・・・ほぼ違いは分からない。
 といっても全く分からないというワケでもない。画像をやったら貼ったExcel画面のスクロールや、画像とFlash満載のサイトをFirefoxで開いている時なんかは、体感で明らかに違いが分かる。
 逆に、そういう画像べったりモノ以外では、ほぼ問題ない。

 #16bitという帯域はダテじゃない。
  とはいえ、AEROそのものって意外と軽いやん。Vistaってなんであんなに重いんだ?

 で、これで課題がクリアになるかと思ったら・・・世の中そんなに甘くなかった。
 劇的にダメになるモノがあったんですわ。もうボロボロという。

 それは何かというと、「動画再生」。

 SidePort+UMAでは余裕だったFull HD再生が、SidePort Memory Onlyでは全く無理。
 フレーム落ち、ガクガク、時間軸ズレ、挙げ句にはフレーム逆転。全く見られたモンじゃない。

 それではどこまで画面を縮小すれば再生が間に合うかと試してみると、倍率50%ならば何とかギリギリ正常に再生出来る様子。
 うーん、SidePort Memoryの帯域ではこれが限界か。

 ◇

 結論。
 SidePort Memory Onlyってのはナシだよね。

 ・・・それは良いのだが、一つ気になることが。
 今回の実験で、DDR2-667MHz/16bitの帯域でまともに動画再生が可能なのは960×540程度が限界、ということが判明したのだが。

 ここから逆にFull HDで必要な帯域を計算してみる。
 Full HDは縦横2倍=面積比4倍のため、メモリ帯域もこの4倍必要。

 ということは、Radeon HD 3450と4350は単体VGAにも関わらず、メモリ帯域が不足してFull HD再生はおぼつかない、ということでは。

 こう考えると、最新のRadeon 5000シリーズから5350という型番のローエンド品が無くなったのも当然かも。
 現在ローエンドの5450はDDR3-800MHz/64bitが一応リファレンスということになっているので、SidePort Memoryの約5倍の帯域。
 コレなら取り敢えずFull HD再生でも問題ない計算になる・・・あまり余裕も無さそうだが。

 ついでに、ローエンド5450にはDDR2-400MHz/64bitなんてモノも転がっているが、これでは明らかに帯域が不足ということに。
 Blu-rayをまともに見たければ、5450でもDDR3採用モデルを選びましょ、と。

Share