SATAの罠
2011年現在でストレージ用インタフェース規格の主流になっている SATA ですが、技術の変遷が激しい分野の常として、規格自体が後からどんどん拡張されています。規格上は、時期的に新しいものは、古いものの上位互換になっているので、たとえばホストインタフェース側コントローラとHDD/SSD側コントローラで世代が異なる、いわゆる新旧混在接続の場合でも、基本的には古いほう(つまり速度的には遅いほう)に合わせて動作します。実際、大まかにはこれで問題は起きないはずです。
なのですが、これまた目まぐるしく技術が変遷しているSSDのコントローラは、このあたりの互換がうまくいかない確率が少し高そうな気がしています。おそらくSSDにとっての2011年は、革命的に普及した2010年を引き継いで、さらに技術革新が加速される年だと予測されますので、まさに過渡期の製品がたくさん出てくると思われます。
前置きが長いですが、ようするに私もハマったのです(笑)
第三DC(謎)に、12年前購入の古い PC に FreeBSD を入れたサーバが置いてあります。これは Celeron 400MHz で、メモリも PC100 な DIMM x2 で最大 256MB という代物。ストレージインタフェースも IDE(PATA) です。これに SSD を搭載するにあたり、例によって PCI な SATA インタフェースカードを追加しました。PCI バスなので、現在主流の 3.0Gbps チップではなく、一世代前の 1.5Gbps チップで十分と思い、価格も安い SiliconImage SiI3512 や VIA VT6421 のカードを使いましたが、SSD のほうは 3.0Gbps 世代の IODATA SSDN-ST30P (東芝製) を選定。理由は、30GBで4,000円台と最も買いやすかったから。
ところがこれがうまくいかない。CD-ROM からの FreeBSD インストールの段階から、頻繁に TIMEOUT – WRITE_DMA retrying などが出まくり、インストールはできるものの(リトライ待ちで)猛烈に遅いのです。OS からは、少なくとも表示上は 1.5Gbps として認識しています。なんとかインストール後に atacontrol で DMA を切ってやれば、まあそれなりの速度にはなるのですが、PIO モードになるので CPU 負荷がもったいない状態に。せっかくの DMA が使えないのは癪なので、いろいろ試行錯誤してみました。
結果的には、たまたま手元にあった SiI3124 (3.0Gbps対応コントローラチップ)のカードに替えたら、まったく快適になり、リトライエラーも出なくなりました。3.0Gbps として認識され、超高速で動作します。
でもなんだか納得いかないので、さらにいろいろ試してみたり。これまた手元にあった Crucial RealSSD C300 を、最初の SiI3512 と組み合わせてみたら、たまにリトライするものの、ほぼ問題なく動作したのです。要するにこれは、6.0Gbps にも対応する C300 のほうが、1.5Gbps への下位互換の考慮についてもマシということですね。
他のサーバのSSD化計画にも影響するため、どういう組み合わせにしようか、ちょっと考えています。