メインPCのHDDの1台がやや危なくなってきたため、代替HDDにデータを移行した。
セクタ代替処理回数(ID:C4)も”しきい値”を超えていて、中身をカラにしたところ解消されたが、代替処理済セクタはやはりダメだ。
このHDDのインターフェースはIDEだが、SATAに変換して接続しているので「SATA」と表示されている。
常用しているHDDの中では古参の部類だし、133.3MBytes/secで8MBキャッシュでは昨今のSATA_3.0規格と大きなキャッシュ容量の現行品と比較するとGB単位のデータを移動する場合には遅く感じられてしまう。
※転送速度
UltlaATA(IDE):133.3MBytes/sec
SATA_1.0:150MBytes/sec
SATA_2.0:300MBytes/sec
SATA_3.0:600MBytes/sec
昔はHDDの異状を音で判断したもので、幸いなことに、今までHDDのトラブルでのデータ消失を経験してはいないが、怪しいHDDは使用しないに限る。
HDDの状態判断材料として、この
CrystalDiskInfoというツールは非常に助かる。
ここで少しHDDの話をしてみよう。
現在、販売されている組込み用内蔵HDDのほとんどが、2009年末から市場投入された
AFT(
アドバンスド・フォーマット・テクノロジー)を採用した製品である。
AFT採用の初期にはラベルに表示されていない製品もあったが、現在では「AF」という表示がされているから外観だけでも判断できるようになった。
HDDにはデータを記録する円板部分(プラッタ)があり、記録領域を多数の区画に分けて、それを物理セクタという。
従来の物理セクタは512バイトであったが、高容量化のための技術として4096バイトを1セクタとしたのがAFTである。
HDD1台の容量はプラッタの枚数によって異なるが、当然のことながら搭載できるプラッタ枚数には限界があり何もしなければ自ずと限界容量に達してしまう。
そこでプラッタの密度を上げることで、昨今では1プラッタ1TB(テラバイト)にも達した。
要は、512バイトの箱では箱の数ばかり増えてしまうことから、1つの箱の内部密度を高めて箱の数を減らすことで解決したのである。
そもそもWindowsは、データをクラスターという単位で読み書きをしており、1つのクラスターの単位が4096バイト(512バイト×8=4096バイト)ということで都合が良い。
ところが、それだけなら特に問題は無いのだが、実はOS側との関連が問題になり、Windows XPで使用するとパフォーマンスを活かせないのである。
Windows XPまでは論理セクタとして63番目の物理セクタをフォーマットの開始場所(開始オフセット)とするようになっていたのだが、その後のWindows Vista以降では2048番目が開始場所とするようになっている。
Win XPの開始オフセット
512バイト×63=32256バイト
Win Vista、Win 7,Win 8の開始オフセット
512バイト×2048=1048576バイト
Vista以降のOSで従来の非AFTのHDDをフォーマットしても、1048576バイトは512バイトの整数倍だから問題は無いのだが、XPでAFTのHDDをフォーマットすると
32256/4096=7.875
7.875倍と整数倍率にならない。
32256バイトを1セクタ4096バイトに当てはめると、
4096×8=32768バイト-512バイト=32256バイト
ということで、512バイト分ズレてしまう。
もちろん、AFTのHDDをWindows XPでフォーマットして使えることには変わりないのだが、4096バイトのクラスターにある512バイト分のズレを常に修正しながらデータの読み書きをさせることになり、結果、内部処理が遅くなってHDDのパフォーマンスの低下に繋がるのだ。
この事は、OSがインストールされたメーカー製のPCを単にそのまま使う分には何も気にする必要が無いのだけれど、Windows XPを使用している自作PCとメーカー製PCでのHDD追加及び自前での交換という場合には注意が必要になる。
そこで、AFTのHDDをWindows XPで使用する方法としては2通りがある。
1、Windows Vista以降のOSでフォーマットする。(一番簡単)
2、開始オフセットをツールで調整する。
1番に関しては別OSのPCを要するものの何も考える必要は無く、2番はHDDメーカーが提供するアジャストツールを用意する必要がある。
但し、ツールを用意しているのはHGST(旧日立)とWestanDigitalだけでSeaGateと東芝(3.5インチの製造元:HGST)は提供していない。
しかし、
ExamDiskというHDDの情報、パーティション情報を確認するツールでパーティションを作成することで回避することが可能だ。
昨年春頃はまだ非AFTのHDDもメーカー、容量供に選べたものだが、2013年では非AFTのHDDが僅かに販売されているも、メーカー及び容量を自由に選ぶことはできず、Windows XPでも否応無しにAFTのHDDを使わらずおえない。
※2011年にHDD製造メーカーの大きな再編があり、現在の製造元はWestanDigital、SeaGate、東芝(2.5インチのみ)の3社しか残っていない。
※日立(HGST)がWestanDigitalに条件付きで買収されたため、現在のHGSTはブランド名だけで実質WestanDigital社製。
【SSD編】
昨今、HDDよりGB単価ではまだ高いものの価格もこなれて普及してきたSSD(ソリッド・ステート・ドライブ)も同様に1セクタが4096バイトだ。
しかし、SSDをWindows XPで使用するとなると、また別の問題がある。
SSDは、長い期間使い続けているとパフォーマンスが低下することが知られている。
特に書き込み性能の低下が大きく、これはSSDに使われているNANDメモリ固有の制限による。
NANDメモリは、データの書き込みについて「上書き」ができず、消去済みの領域にしかできない。
その「消去」というのが、”ページ”という単位を複数まとめた”ブロック”と呼ばれるより大きい単位で行われ、データ書き換えの際には、書き込みたい領域にあるデータをすべて読み出して一旦コピーし、そのブロックを消去した後にコピーしたデータを戻すという手順が行われている。
その為、空き容量が少なくなるほど消去を伴なった書き込みが増加することから、記録速度の低下を引き起こすことになる。
それを対処するために設けられたのが、「Trim」というコマンド(命令)機能だ。
Trimコマンドは、予め消去してもよい論理アドレスをSSDに通知し、書き込み命令を受ける前に効率よく消去を行なうことで、消去を伴なう書き込み処理を減らして速度低下を抑えるコマンドだ。
このTrimコマンドが実装されているのはWindows 7からであり、Windows Vistaの登場時にSSDは存在していなかったし、Windows XPも当然実装されていない。
ということで、SSDをWindows XPで使用すると前述のAFTと併せて更に都合がよろしくないのだが、今のところIntel製のSSDだけは、「
Intel SSD オプティマイザー」を使用することでTrimコマンドが実装されていないOS(XP、Vista)でも記録速度低下を抑えることが可能だ。
Windows XPでSSDを使うとすると、Intel製SSDにAFT対応フォーマットをして記録速度の低下を抑え、以下のレジストリ設定を行って極々僅か(誤差程度?気休め?)だが書込み寿命の延命を図るのも良いかもしれない。
特にHDDでは有効なデフラグはSSDには効果が無く、単に書込み回数を増やすだけで「百害あって一利無し」だ。
<レジストリ設定>
※自動デフラグ無効化
[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / OptimalLayout]
に DWORD 値で「EnableAutoLayout」を作成して値を「0」にする。
※プリフェッチ無効化
①プリフェッチログ作成を停止
[HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Session Manager / Memory Management\PrefetchParameters]
の「EnablePrefetcher」が初期値「3」になっているので「0」にする。
②プリフェッチログを元にファイルの再配置を行わない
[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Dfrg / BootOptimizeFunction]
の「Enable」が初期では「Y」になっているので「N」にする。
※最終アクセス日時を更新しない
[HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / FileSystem]
の「"NtfsDisableLastAccessUpdate"」を「00000001」にする。
SSDといえども故障や寿命は有る。
HDDが可動部分での故障が多いが、SSDには可動部が無いために電気的な起因による故障だけになり、書込みサイクルで寿命が決まるため、書き込めば書き込むほど寿命を縮める。
使われているNANDメモリには、SLCタイプとMLCタイプが多いがTLCタイプも存在する。
SLCタイプ
高速で読み書きが可能で、書込可能サイクルが10万回ともいわれ、主にサーバ用高速SSD、高性能ワークステーション用SSDに使われる。
SLCを使った製品に300GBで~約100万円というのもある。
MLCタイプ
SLCと比較して1.5倍の情報を記録できるが、動作速度はSLCより低く、電位差を利用するために製品寿命がSLCの半分程度。
書込可能サイクルは 5千~1万回とされ、パソコン用SSD、200倍速の高速フラッシュカード、高速型USBメモリに使われている。
TLCタイプ
1つのセルを3当分して記録を行うことで、SLCの2倍の情報を記録可能だが、シビアな電位差により処理速度が低下し、製品寿命がMLCより大幅に減少する。
書込可能サイクルは1千~5千回とされ、Class 10までの低速度フラッシュカード、低価格USBメモリに使われている。
現在、一般的な家庭用PCで使われるSSDはMLC-NANDメモリが使われているが、低価格のSSDにはTLC-NANDが使われている製品もあるという。
SSDを含め、SDカードなどのフラッシュメモリーには書込みサイクルで”寿命”が決まるということと、低価格製品は比較的寿命が短いということを頭に入れておきたい。
そうはいっても、使用環境で寿命も異なってくるため一概には言えなく
、SSD及び他のフラッシュメモリーの製品としての寿命はまだ良く分からないのが現実だ。
<参考>
SSD耐久テスト - BotchyWorld