第19回 SSDでWindows 8システムを高速化する:Windows 8レボリューション(2/2 ページ)
Windows 8をSSDにインストールすれば、高速なシステムの起動やアプリケーションの実行が期待できる。Windows 8ではSSD向けの機能が実装されており、特に何もせずとも使えるが、いくらか注意すべき点もある。
最後に、SSDに関する用語や機能などを簡単にまとめておく。
概要
「SSD(Solid State Drive)」とは、フラッシュ・メモリを使った半導体ディスクの総称である。2.5インチのハードディスク・ドライブと交換してそのまま利用できる形状のものが広く普及しているが(厚さは7mmと9mm)、mSATAポートに接続できる、ボード状のものもある。
内部的には、複数のフラッシュ・メモリとコントローラを集積したものである。USBメモリでは、メモリ・チップぐらいしか載っていないが、SSDの場合は内部でガーベジ・コレクションなどの高度な処理を行うため、もう少し複雑な構成になっている。ハードディスクと違って可動する部品などがないため、振動や衝撃にも強く、軽量である。また消費電力も2.5インチ・ハードディスクの10分の1程度と少ない。
■ハードディスクと比較すると、容量は少なく、ビット単価も高い
ハードディスクは3Tbytesや4Tbytesといった大容量のものがあるが、SSDではまだ1Tbytes程度までしかなく、しかもビット単価は10〜20倍以上する。原稿執筆時点では、128Gbytesの製品で1万円、256Gbytesで2万円、512Gbytesで4万円程度といったところである。
■SLCとMLC、TLC
SSDの仕様書などを見ると、採用しているフラッシュ・メモリのタイプとして、SLC(Single Level Cell)やMLC(Multi-Level Cell。MLCの一種で3bit、8値/セルをTLCと分けて呼ぶことがある)、TLC(Triple Level Cell)などの区別がある。これらはメモリの1セルに何bitのデータを保存しているかを表している。bit数が多い方が同じサイズでより多くの情報を保存できるが、セル内に多値のデータを保存するため制御が難しく、速度が少し遅かったり、書き換え可能回数が少なかったりする傾向がある。
タイプ | SLC | MLC | TLC |
---|---|---|---|
bit/セル | 1 | 2以上 | 3 |
値/セル | 2値/セル | 4値/セル | 8値/セル |
書き換え可能回数 | 100,000サイクル〜 | 10,000サイクル〜 | 1,000サイクル〜 |
特徴 | 高速、高価。サーバ用など速度を求めるSSDで採用 | 中間 | やや遅め。容量重視タイプのSSDで採用 |
SSDで利用されているフラッシュ・メモリのタイプ フラッシュ・メモリのタイプをおおまかに分類したもの。なお書き換え可能回数はこれ以上書き換えを行うと必ず壊れるというものではない。実際にはウェアレベリングやECCなどによる訂正なども行われるので、現実的にはもっと長く使える。 |
■書き換え可能回数に制限がある
SSDではフラッシュ・メモリという、電気的に消去可能なROM(EEPROM)を利用している。このデバイスは、書き換え可能な回数に制限がある。書き換えを行うと、半導体内部の重要な場所が少しずつ劣化していき、だんだん正しくデータが読み出せなくなる。ただし規定回数を超えると急に記録できなくなるというわけではなく、メモリ中の全セルに対して、エラーとなる確率が少しずつ増えていくだけであり、ある程度までは、ECCなどを使えば補正可能である。
書き換え可能回数に制限があるため、SSDではウェアレベリングなどの手法を使って、書き込みがメモリ全体に分散するように制御している。
なお読み出しに関しては特に制限はなく、何度でも読み出せる。
■ウェアレベリングで書き込みを分散させる
「ウェアレベリング(wear leveling)」とは、フラッシュ・メモリへの書き込みが一カ所に集中しないように全体的に分散/平均化させる制御のことを指す。OSからは、ある特定のセクタ番号にデータを何度も上書きしたとしても、SSD内部では、毎回別の場所へ書き込むように制御している。これにより、フラッシュ・メモリ中の特定の領域の書き換え可能回数が上限に達することなく、SSDデバイス全体としての書き込み回数の増加や信頼性の向上を実現できる。
■ガーベジ・コレクションでブロックを再配置する
SSDの内部では、データはセクタ(512bytes)単位ではなく、もっと大きな、例えば8Kbytesとか16Kbytesといったブロック単位で管理している。もし一部しか使っていないブロックが複数あれば、それを集めることにより、空きブロックを多数作ることができる。例えば8分の1しかデータが入っていないブロックが8つあったとすると、有効なデータだけを集めて1ブロックにすれば、元の8ブロックは解放することができる。SSDはこのような処理をアイドル時間の間に行って、なるべく多くの空きブロックを用意するようにしている。この処理を「ガーベジ・コレクション(ちり集め)」という。ユーザーには影響を与えないように処理しているので、特に何か注意する必要はない。
■オーバープロビジョニングで空き領域を確保する
SSDに対してデータの書き込みを指示すると、SSDはまず空きブロックを見つけ(空きブロックについては、上の項目参照)、そこにデータをセットして(上書きされない部分は元のブロックからコピーしてくる)、ブロック単位でフラッシュ・メモリに書き込む。空きブロックがない場合は、ブロック全体をまず読み出してからそのブロックを消去し(フラッシュ・メモリでは、消去はブロック単位でしかできない)、データをまた書き戻す。
ブロックの消去は時間がかかる操作であり(書き込みの何十倍もかかる)、パフォーマンスを劣化させる原因になる。そのため、適切な数の空きブロックを常に用意しておくことは、SSDのパフォーマンスを劣化させないために、重要なことである。また、空きブロックが少ないとセルへの書き込み回数が増えることになり、SSDが短命化することになる。
このような事態を避けるためには、あらかじめ一定量の領域は使わずに、未使用領域のまま残しておくとよい。これを「オーバープロビジョニング」という。製品にもよるが、あらかじめ5〜10%程度はこのために予約されていて、ユーザーが利用することはできない(サーバ向け製品では20%以上予約しているものもある)。
このオーバープロビジョニングは、SSD内部で自動的に予約するだけでなく、OSやユーザーが手動でさらに領域を確保してもよい。例えば以下は、オーバープロビジョニングを設定するための、あるSSD用ツールの例である。このツールでオーバープロビジョニングを設定すると、C:ドライブのパーティションの末尾の10%ほどを解放して(縮小して)、未使用領域にする。ディスクの管理ツールで見ると、単にディスクの末尾が未割り当て状態になっているだけである。
オーバープロビジョニングを設定する
これはSamsungのSSDに付属しているSSD管理用ツール、「Samsung Magician」での操作例である。パーティションの末尾を少し解放して、オーバープロビジョニングしている。このツールを使わなくても内部ではいくらかの領域が確保されているはずだが、このように設定することで、より多くの領域をオーバープロビジョニングのために利用できる。ここで設定した領域は、SSDやOSから見ると、単にディスク上の未使用領域であり、オーバープロビジョニング専用領域というわけではないが、結果的にオーバープロビジョニング領域として利用される。SSDによっては、自分で「SET MAXIMUM ADDRESS」コマンドを発行して使用領域を制限させる(総セクタ数を減少させる)ことができるものもあるが、自分でパーティションを確保すれば同じ効果が得られる。
(1)オーバー・プロビジョンニングの設定をするにはこれを選択する。
(2)SSDの総容量は120Gbytes。
(3)このツールでは、1割の領域をオーバープロビジョニング用に確保できる。
(4)ディスクの1割を確保するのが推奨されている。
(5)これをクリックすると、実際にはパーティションの末尾を12Gbytesほど解放(縮小)する。ディスクの管理ツールで操作するのと同じ。
SSDでパフォーマンスの劣化や寿命の短命化を防ぐには、ディスクいっぱいにデータを書き込むのではなく、必ず空き領域をいくらか残すようにする。
■トリムで未使用領域をSSDに通知する
ファイル・システム上でファイルを削除した場合(もしくはファイル・サイズを切り詰めた場合)、ファイル・システム上では単に割り当て済みのクラスタを解放して、空き領域ビットマップを修正するだけである。
だがSSDから見ると、ファイルのデータが割り当てられていたセクタの部分は何らかのデータが書き込まれたままであり、その内容はまだ有効だと認識している。するとSSDは、ガーベジ・コレクションの場合でも、いちいちその内容を読み出したり、書き込んだりする必要がある。本当は空き領域なのだから、その部分のデータは捨てて空きブロックとして扱っても構わないのに、SSDでは無駄にデータの維持・管理を行うことになる。
このような無駄を省くために用意されたのが、SSDに対する「トリム(trim。刈り込み)」コマンドである。ファイル・システムである領域(セクタ)が不要になった場合は、Windows 8はSSDに対して、トリム・コマンドを発行する。するとSSDではその部分をすぐに空き領域として扱うことができるようになる。
ほかの入出力コマンドの処理などに追われて、トリムの処理ができなくなった場合に備えて、Windows 8では、定期的にdefragツールがSSDに対して(削除されファイルに対応する)トリム・コマンドを発行するようになっている。
■高速性を生かすにはSATA-3ポートでの接続を推奨
最近のSSDは500Mbytes/sといったインターフェイス速度を持っているが、この速度を生かすためには、システムにSATA-3(6Gbit/s)インターフェイスで接続する必要がある。従来のSATA-2(3Gbit/s)では最大速度を引き出せないので、可能な限りSATA-3で接続することが望ましい。
次の画面は、SATA-3ポートに接続したSSDの読み書きベンチマーク・テストの結果である。
SATA-3(6Gbit/s)ポートで接続したSSDのベンチマーク・テストの例
テストはAtto Disk Benchmarkで測定した、SSDの読み書き速度のベンチマーク。ブロック・サイズを変えながらファイルを読み書きして、その速度を測定している。ピークでは530Mbytes/sと、ほぼSSDの公称速度が出ている。
同じSSDを、今度はSATA-2ポートに接続してテストしてみた。ピークの読み書き速度が、540Mbytes/sから270Mbytes/sと、ほぼ半減している。
今回はWindows 8でSSDを使う場合の注意点などについて見てきた。デフラグ・ツールによるSSDのトリムなどがサポートされ、簡単に使えるようになっているが、空き領域がなくなるような使い方は避けるなど、注意していただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.