最強.NET開発PCを作るよ(その1) はじめに
最強.NET開発PCを作るよ(その2) メモリ編
最強.NET開発PCを作るよ(その3) CPU編
の続き
ストレージ(HDD, SSD)を選定するときに、巷では 「Windows 8 の起動スピードを速くするために、SSD を使うのがよい」という話が多いのですが、私の場合、Windows 7 の頃からスリープを使っているので、起動に関しては通常の HDD で問題がありません。確かに瞬時に立ち上がるのは「心のストレス」的に良いには良いのですが、シャットダウンした後に、再び Outlook やら Visual Studio やらアウトラインエディタやらを立ち上げなおして、同じファイルを開いて、再び昨日の仕事の環境を整えるよりは、スリープから一発で立ち上げたほうが「仕事のストレス」的に良いのです。節電としては休止状態でもいいわけで、昨日の仕事場と今日の仕事場は連続した状態でありたいですよね。
なので、HDD, SSD を選定するときに、開発PCとしての視点では、
- OS 領域とワーク領域を物理的に分ける
- SQL Server などのデータベース領域を物理的に分ける
- できれば、VMWare が使う仮想領域も分ける
という分け方で HDD/SSD の選定をします。
■OS 領域とワーク領域を分ける
OS 領域である C ドライブには Windows 8 を入れます。マイドキュメントなどのユーザー領域は他のドライブに逃がすこともできますが、開発時の安全性(さまざまなツールを使うことが多いので、デフォルトのドライブを変えないほうが、トラブルが少ないのです)を優先させます。なので、Visual Studio 2012 や Office 2013 などのインストール付きアプリも C ドライブに突っ込みます。
この C ドライブには基本「手順書」を使うようなバッチ付きインストーラーを使ってもインストールできるような状態にしておきます。HDD がクラッシュした時にもできるだけ早く復活できるようにすためです。
なので、HDD の物理的なクラッシュに備えて、プログラムやドキュメントなどのワーク領域は、D ドライブに入れます。私の場合、マイドキュメント配下に、ソースや設計書を置くことはありません。よく C ドライブと D ドライブが、ひとつの物理 HDD に乗っている場合もあるのですが(OS 入れ込みの BTO パソコンの場合は、そういうパターンが多いです)、HDD を追加して、データ領域を逃がすようにします。
サーバー系の場合は、データ復旧のために RAID を組むことが普通なのですが、開発用 PC の場合はソースや設計書などは別途 VSS や TFS などを使うために RAID を組みません。むしろ、RAID を組むとコンパイルスピードなどが遅くなってしまうので避けます。
物理的に C ドライブと D ドライブが別の HDD になっていると、OS がクラッシュしたときは、D ドライブの HDD をそっくりそのまま別の PC に移し替えて作業ができます。また、OS がクラッシュしても D ドライブに影響がないのがよいのです。ノートブックの場合は、このパターンができないので、定期的にデータ領域を PC にバックアップさせています。ノートブックの場合は、据え置きの PC とは違い、落下や盗難、水没などのリスクがあるので、ノートブックにしかないデータというのが存在しない状態になっています。
■SQL Server が使う領域を別 HDD にする
SQL Server を激しく使う場合には、別の HDD にデータベース領域を取ります。これはサーバー機でも同じなのですが、SQL Server がデータベースにアクセスしようとすると、できるだけ HDD のシークピンがそれ専用になるほうが早く動作します。たとえば、SQL Server でデータ解析をしているときに、Visual Studio でプログラミングなどをすると(あまりやらないだろうけど)、データ解析が遅くなります。その他、諸々あって、データベースの領域は別々のほうがいいんですよね。極端な話、2倍ぐらいのスピードが違います。これはあとで実測しましょう。
ちなみに、データベース管理者(DBA)的な視点で言えば、master 領域は別にするとか、同時アクセスする領域は別の HDD にしたほうが早くなるとか、クエリのチューニング以前の基本的な問題がいくつかあります。開発 PC の場合には、そこまでは必要がないので、数台の HDD を入れることは稀ですが。
■VMWare などで使う仮想領域を別 HDD にする
VMWare などの仮想 PC の場合には、データベースよりも更に影響が多いと思います。思います、というのは、この部分だけ経験則なので実測はしていないのです。vaio のノートブックに vmware を乗せて vc++ を使ってコンパイルをしているのですが、実に遅いのです。現在、最強PCに移してみると、それなりに早くコンパイルができます。CPU が早くなったというのもあるのですが、ちらちらとタスクマネージャを見ていたのですが、実は思ったよりも VMWare が HDD に掛ける負荷は大きいのかもしれません。
Twitter / kkamegawa: メモリ8GBで3台のVMまではやったことがあるけど、ディスク …
という話もあるし、確かに私も VMWare 3台の場合は妙な動きをする(いきなり、リモートデスクトップでつないでいる仮想 PC が重たくなる)ので、それかもしれません。同時に使う VM の場合は、別々の HDD に分散させるといのかも。となると、巷で言われる古いサーバーを VMWare に乗せたり、Hyper-V に乗せたりしている場合はどうなるのか?という話がありますよね。そういう記事はあるのかな?
■そんなわけで SSD, HDD を構成する
- SSD – OS 領域
- HDD – ワーク領域
- HDD – SQL Server 領域
- HDD – VMWare 領域
という具合にします。VMWare 領域は、以前の PC から引っ越ししたので、購入分は SSD と HDD 2台です。
SSD は、256 GB 程度でも良かったのですが、データベースを SSD で試すとか、VMWare を SSD で試してみたいとか、という目的もあったので、かなり多めのものを用意しています。
- C ドライブ SSD 512 GB
- D ドライブ HDD 2 TB
- E ドライブ HDD 2 TB
- G ドライブ HDD 1 TB
という構成。SSD は、Plextor PX-512M5P を使い、HDD は好みの関係から W.D WD20EZRX SATA3 2TB を 2 台。G ドライブは、日立のものです(まあ、今となっては一緒なんですが)。
VMWare のほうは、こんな風に Linux やら、Windows XP やらいくつかのバージョンを用意しておきます。いくつか容量が足りなくて処分してしまったのですが、Windows XP の SP1 などを残して検証用に使います。あとは、開発環境(Visual Studio 2008)とソースコードを入れ込んで、いつでも復活できるようにするとか、そういう使い方をします。これも HDD を別にしておくことで、新しい PC に即換装ができるということです。まあ、コピーしても1昼夜かければ、大丈夫ですが。これもクラッシュに備えるとうことで。
つぎは、CPU, メモリ, HDD を積むということで、マザーボードの選定の話を。