現代PCの基礎知識(5):ストレージがつながるホストインタフェース
はじめに
これまで、PCに接続するストレージとしてHDDやSSDなどについて解説してきたが、それらのストレージとPC(マザーボード)とを接続するためには何らかのインタフェースが必要となる。
そこで今回は、このインタフェース(本連載ではホストインタフェースと呼ぶ)について、その代表的なものについて紹介する。
現代PCの標準「SATA」
SATA(Serial ATA)はデスクトップPCにおいて2016年現在、最も一般的なインタフェースと言っていいだろう(図1)。HDDおよび光学ドライブはたいていSATAケーブル(図2)でマザーボードと接続され、SSDでも2.5インチ形状のものはほとんどSATA接続である。SATA接続では、ケーブルを介してマザーボード上のコネクタとストレージとを1:1で接続する。
SATAではRevisionによって転送速度やコネクタなどの規格が定められている。2016年現在、数多く販売されているのはSATA Revision 3.0対応のもので転送速度は6Gbit/secだ(表1)。ノートPC、あるいは小型PC向けの薄型光学ドライブ用に通常のものと形状が異なるスリムタイプのコネクタもある。
Revision | 転送速度 | 備考 |
---|---|---|
1.0 | 1.5Gbits/sec | SATA |
2.0 | 3Gbits/sec | SATA II, SATA 3.0Gbpsなど |
2.6 | 3Gbits/sec | 2.0 + スリムコネクタやmSATAの規定 |
3.0 | 6Gbits/sec | SATA 3.0, SATA III, SATA 6.0Gbpasなど |
SATAとそれ以前の規格とを比較した際の特徴にホットスワップが挙げられる。ホットスワップとは、PCの電源を入れたままストレージを物理的に取り外したり、取り付けて動かすことができる機能だ。
通常HDDやSSDを接続する際はSATAケーブルと電源ケーブルを別々に配線する(図3)が、ホットスワップベイと呼ばれるストレージ専用スペースを持つ機器ではホットスワップベイの奥にSATAコネクタと電源コネクタが並んでおり、ストレージを挿し込むと同時に接続、引っ張り出すと同時に外すことができる。
なお、ハードウェアとしてホットスワップに対応していてもOSがサポートしていなければデータが壊れるだけなので、RAIDなどで冗長構成をとっているかなどを確認せずにうっかりストレージを本体から外したりしないよう注意したい。
また内蔵用とは別に、外部に置かれた外付けストレージと接続するためのeSATAという拡張規格もある(図4)。eSATAにはSATA IIやSATA III対応のものがあるが、eSATA端子を備えたPCあるいはマザーボードは少なく、eSATA対応の外部ストレージ製品も少ない。
後述するが、ホストインタフェースにはSATAより高速なものもある。コストを優先するなら2016年時点ではおそらくSATA SSDを選択するのが最も無難だろう。OSなどの高速アクセスが必要なプログラムやデータはSATA SSDに入れ、その他のデータは別途接続したSATA HDDに格納するスタイルが開発用PCとしてはリーズナブルだと思う。
最近はあまり見かけない「mSATA」
数年前の超小型PC、あるいはノートPC向けのストレージ用スロットとしてはmSATA(mini SATA)がメジャーだった(図5)。スロットの形状はmini PCI Expressと同じだが、本体側では見た目だけでmSATA対応かを判断できないため、マザーボードあるいはPCの取扱説明書などで確認する必要がある。
なお、mSATAとSATAは物理的なソケット形状は異なるものの信号線は同様であり、ソフトウェアから見た場合はSATA SSDと同じように扱うことができる。
これからの主流SSDをつなぐ「M.2」
M.2(エム・ドット・ツーあるいはエムツー)はmSATAの後継となるNGFF(Next Generation Form Factor)とも呼ばれるインタフェースだ(図6)。
PCIe 3.0、SATA 3.0、USB 3.0の信号が出ており、これらのバスを介してストレージをはじめとした様々なカードとのやり取りを実現している。SSD以外では、例えば無線LANカードのインタフェースとしてM.2が使われているものがある(M.2の他にminiPCI Expressが使われている製品もある)。
M.2 SSDにはSATA接続のものとPCIe接続のものがある。SATA接続では物理形状はSATAと異なるが、2.5インチのSATA SSDと制御方法が同一であり、OSのソフトウェアサポートにも特別な配慮を必要としない。マザーボードによってはオンボードのSATAポートのうち1つをM.2と共有(図7)し、「M.2(SATA) SSDを載せた際はSATAポートが使えない」と注意書きがあるものも存在する(図8)。
一方、PCIe接続のSSDには
SSDのパフォーマンスを引き出す「NVM Express」
PCI Express(PCIe)接続のSSD規格として業界標準となっているのがNVM Express(NVMe)だ。NVMは「Non-Volatile Memory」、つまりフラッシュメモリを表しており、すなわちSSDと考えていい。SATAよりも高速にデータを読み書きできるためPCI Expressを使って接続され、コントローラにも仕様が規定されている。
NVMe SSDはPCIeスロットに挿すカード形状のもの(図9)が多いが、SATA SSDのような2.5インチのパッケージ形状のものもある。この場合、接続インタフェースにはU.2と呼ばれるものが用いられる(図10)。U.2端子がないマザーボードで接続したい場合は、M.2スロットからU.2への変換基板を経由することになる。
2016年時点で主要なOSはNVMeに対応しているが、古いOSあるいは最新ハードウェアへの追従が遅れがちなOSでは利用が難しいことがあるかもしれない。また対応するOSでもNVMeの性能を完全に引き出せない場合がある。
SSDにはデータを書き込む際にPCから送られてきたデータを一時的にため込むqueueがある。カタログスペックで謳われているSSDの速度は大きなファイルをまとめて書き込むときの速度であり、小さなファイルをいくつも書き込むときはカタログスペックよりも遅くなる。そのため、使ってみると「思っていたより速くない」、ということも十分ありうる。より高速なストレージを求めてNVMe SSDを検討する場合は、想定するファイルのアクセスパターンに見合う効果が得られるかを確認するといいだろう。
また、SSDはデータアクセスのためのデバイスドライバやアプリケーションとのデータ送受信周りのボトルネックも顕在化してきており、高速なストレージアクセスのためにSPDK(Storage Performance Development Kit)のようなソフトウェアを用いた開発が試みられている。
エンタープライズ向けの接続規格「SAS」
SAS(Serial Attached SCSI)とその前身のSCSI(パラレルSCSI)との違いはIDEとSATAの関係に似ている。SASは主にサーバマシン用HDDの接続に用いられるが、信号線コネクタはSATAと同形状で、マザーボードあるいは拡張カード側がSASだった場合にSATAのストレージを接続できる(逆はできない)。
SCSI自体はもともとストレージ専用の規格ではなく、スキャナやネットワークインタフェース、あるいはPC(ホスト)同士を繋ぐことも仕様として規定されている。最近ではネットワーク経由でストレージ機能を提供するiSCSIというプロトコルもあり、エンタープライズ向けのストレージ製品で使われていたりする。
LAN経由で接続する「NAS」
NAS(Network Attached Storage)はLAN経由でアクセスできるストレージだが、実体はファイルサーバと呼ばれる一種のコンピュータである。Windowsのファイル共有など製品によってさまざまなアクセス方法をサポートしており、前項のiSCSIもアクセス方法の1つと言える。多くの製品で複数のHDDあるいはSSDを内蔵でき、まとめて1つのストレージであるかのように扱えることから、基本的にデータ保管用として利用される。
NAS製品の多くはストレージとは別に販売されるため、内蔵すべきHDDは別途購入が必要だが、中にはAppleのTime Capsuleのようにストレージを内蔵し、交換を考慮する必要がない製品として売られているものもある。
NAS製品のアクセス速度は、ストレージ・制御するNAS内部のコンピュータ部分・LANインタフェースの速度とNASとして制御されるファームウェアの出来によって決定される。LANインタフェースは基本的にギガビットイーサネット(1000BaseT:GbE)のものが大半だが、安価なものは100BaseTX(100Mbps:GbEの1/10の速度)の製品もあるので要注意だ。また最近では複数PCからのアクセスを前提とした10GbE(10GBaseT:GbEの10倍の速度)を採用した製品も発売されている。
なお、NAS製品にはARMプロセッサを搭載してLinuxで動作しているものもあり、中身のハック(機能を追加する、別のOSに入れ替えるなど)を実践している人もいるが、当然それらの行為は製品の保証対象外であり、趣味として取り組む分には楽しいが壊れても自己責任だ。最悪では「ただの箱」になってしまうので、ハックする場合はあまり無茶をしないように。
外付けストレージとの接続でよく使われる「USB」
市販の外付けストレージとしてはUSB HDDがメジャーだが、その名の通りUSBケーブルで外部のHDDとPCを接続する。USB自体は規格により最大転送速度が異なるため(表2)、アクセス速度が気になる場合はなるべく新しい規格のものを選ぶといい。ただしPC側の規格が古い場合は転送速度も遅い方に合わせられるため、うっかり無駄な買い物にならないようによく確認しておこう。
規格 | 最大転送速度 |
---|---|
USB 1.0 | 12Mbps (Full Speed) |
USB 2.0 | 480Mbps (High Speed) |
USB 3.0 | 5Gbps (SuperSpeed) |
USB 3.1 | 10Gbps (SuperSpeed+) |
また、USBはキーボードやマウスなどの接続にも使用されPCの電源を切ることなく抜き差しが可能(活線挿抜という)だが、HDDやSSDではいきなり取り外すと記録されているデータが破損することもある。重要なデータを保管している場合はは取り扱いに注意しよう。そういう意味では、常用する重要データの保管先としては適していないように思う。
外付けの光学ドライブもたいていはUSB接続だ。別途電源を用意しなくてもUSB端子から電源供給を受けて動作できるバスパワータイプが多く、光学ドライブを持たない機器でもUSBからのブート機能を備えていることから、OSのインストール時に一時的に接続するなど、イザというときのための接続方法として重宝されている。
古いPCのインタフェース
昔のPCでHDDとの接続用に、あるいは一部の光学ドライブとの接続用として一部のマザーボードに搭載されていたのがATA(AT Attachment))である。SATAと対比してPATA(Parallel ATA)とも呼ばれる。 前身の規格はHDDメーカーWestern DigitalによるIntegrated Drive Electronics interface(IDE)と呼ばれるが、そのまま「IDE」と呼んでもおおむね通じる(図11)。
もっとも、最近では統合開発環境の英字略称もIDEであるため、混乱しないようにしたい。なお、さらに古い呼称としてWinchester Diskというものがあり、BSD系のOSでIDE HDDのデバイス名がwd0なのはこれが語源と思われる。
40ピンの信号線をケーブルを使って接続する(それぞれの信号線の間にGNDを通して80線のケーブルを使って高速化した規格も存在した)ため、ケース内の取り回しに難があり、小型PCを自作する際に苦労したという方も多いだろう。
現在は前述の高速なインタフェースにとって代わられたため、中古あるいはジャンク品で見かけることがほとんどだと思う。
なお、SATAとPATAには直接の互換性はない。古いIDE HDDを新しいPCに繋げる需要は利用環境のリプレース時のデータサルベージなどがあるが、その場合はIDE-SATA変換アダプタなどを用いる。
バックアップを忘れずに!
形あるものはいずれ壊れるのが自然の摂理である。プロセッサやRAM、SSDやHDDも例外ではない。プロセッサやRAMは最悪買いなおせば元通りだが、SSDやHDDでは保存されているデータが問題だ。特にソフトウェアの開発環境では開発途上のソフトウェアを失なえば大損失となる。この損失を未然に防ぐ手段が転ばぬ先の杖、バックアップだ。
端的に言えば、作業中のデータを別のメディアなどにコピーすれば、それがバックアップという行為であり、コピー先のメディアがバックアップになる。しかし、これを意識して毎回人の手で実行するのは苦痛だ。忘れることもあるし、手違いで消してしまったら目も当てられない。そのため、OSの機能(MacにおけるTime Machine)や市販のソフトウェアなどを使用するのが賢いやり方である。
バックアップに使うメディアは様々である。例えば前述したNASや光学メディア、あるいはバックアップ専用のテープドライブを用いる場合もある。また、バックアップの頻度や範囲もいろいろな考え方がある。頻繁に更新しないデータであれば前回のバックアップと比較して異なる部分のみを保存する差分バックアップを行えばメディアの使用量を節約できる。
なお、RAID(Redundant Arrays of Inxprensive Disks)は冗長性を向上させて複数のストレージの一部が壊れても問題なくデータを読み書きできるようにする技術だが(中にはストライピングで速度のみを向上し却って故障に弱くなるタイプのRAIDもある)、あくまで冗長化して可用性を向上させるものであり、バックアップとは性質が異なるので注意してほしい。
最近ではクラウドストレージをバックアップ代わりに使うケースもあるようだ。例えばGithubのプライベートリポジトリにデータをpushしておけば、新規のPCに開発環境を移行する際もgit cloneでリポジトリから引っ張り出せばいい。ただし、稀にサービス側の不慮な事故でデータが少し古いものに巻き戻ったりすることもあり、またサービス自体が終了してしまうことも皆無ではないため、過信は禁物だ。
BIOSの設定や時計の情報はどこに記録される?
マザーボードにボタン電池が載っているのを見たことがある人もいるだろう(図12)。マザーボードにはRTC(Real Time Clock)という時刻を計測する集積回路が搭載されているが、常に時刻を計測し続けるには何らかの電源が必要であり、その役割をボタン電池が担っている。
また、マザーボード上にはBIOS(最近ではレガシーなBIOSだけでなくUEFIが搭載されたものが多い)の設定値を保存するためRTCチップ内に小容量のRAM(俗にCMOSと呼ばれる)も搭載されているが、ボタン電池は電源オフ時のCMOSの内容維持にも使われる。
なお、設定の自由度が高いマザーボードでは、動作クロックなどの基本部分を定格値より大幅にずらなどして起動できなくなった場合、このRAMの内容をクリアして設定値を初期化すれば回復できることがある。たいていはマザーボード上のジャンパーをショートさせてリセットをかけるよう説明書に記載があるが、一時的にボタン電池を外しても同様の効果が得られることがある(もちろん、説明書通りのショートのほうが確実だ)。
ボタン電池は消耗品であるため、いずれ取り換える必要があるが、普通に使っているうちは心配する必要もないだろう。昔から使い続けているPCで電源を入れるたびに時計が狂うような場合は、ボタン電池の電池切れを疑ってみてもいいかもしれない。
大昔のUNIXワークステーションには、ボタン電池ではなくマザーボード上にはんだ付けされたキャパシタ(蓄電池)を使っている製品があり、そこに時刻情報やLAN通信に必要なMACアドレスの情報を保持していた。しかし、長年使用した結果キャパシタの寿命で一度電源を切ると情報が失われてしまう製品もあった。おそらく、メーカーもそこまで長く使われるとじゃ想定していなかったのだろう。
まとめ
今回は、マザーボードとストレージを接続するホストインタフェースについて紹介した。ストレージと併せて考えると、ストレージはマザーボードの対応やコスト、求める速度・容量によって以下のような観点で選択することになるだろう。
- 速度:NVMe >= M.2 >= SATA>USB
- 速度:SSD>HDD
- 容量あたりのコストの安さ:HDD>SSD
筆者の場合は開発作業でコンパイルを繰り返すこともあるため、開発用PC向けのストレージはSATA SSDのみで構成し、一方の生活用PCのストレージはSATA HDDのみを利用している。
本稿が、新しく開発環境を構築する場合だけでなく、現在の開発環境を更新する際の参考になれば幸いである。