自宅サーバーのストレージを RAID0 (striping) に変更しました。このサーバーは、元々 SSD×2 を搭載しており、LVM を使用して 2 つの SSD を仮想的な単一のボリュームとして使用していました。つまり、ストレージの冗長性や高速化に関係しない構成です。しかし、このようなケースであれば、IOPS の高速化が可能となる RAID0 (striping) の方が有利ではないかと考えました。
RAID0 は、データを分割して複数のハードディスクに同時に書き込むことで、書き込み速度を向上させます。また、複数のディスクから同時に読み込むことで高速な読み取りが可能です。しかし、耐障害性がないため、1 本の SSD が故障するとすべてのデータが失われます。
今回、CentOS を使用していますが、Linux のソフトウェア RAID 機能は使用せず、マザーボードに内蔵されている RAID 機能を使用しました。マザーボードは GIGABYTE の GA-H77-DS3H しており、RAID の有効化は BIOS 上から簡単に設定できます。
RAID0 の耐障害性の問題は、外部ストレージに定期的なバックアップをとることで、「最低限、データに関しての耐障害性を保証する」こととしました。
この自宅サーバーは、KVM のホスト OS としており、ゲスト OS は ホスト OS 上の LVM パーティションにインストールしています。ファイルベースではなく、LVM パーティションにインストールしている理由は、仮想化のオーバーヘッドをできるだけ排除したかったためです。
RAID 機能の効果測定には hdparm -t
コマンドを使用しました。結果は以下の通りです。
項目 | 非 RAID(MB/sec) | RAID0(MB/sec) | 上昇率 |
---|---|---|---|
ホスト OS | 268.23 | 831.9 | 210% |
ゲスト OS | 272.45 | 442.1 | 62% |
この結果の通り、ホスト OS は 210% も性能が向上しています。ゲスト OS は 62% 止まりですが、これは仮想化のオーバーヘッドが影響していると思います。そもそも SSD 自体が高速ですが、RAID0 にすることで、更なる高速化を実現できることが確認できました。
高性能な RAID カードは完全にシステムから独立しているため、CPU に負荷をかけませんが、これらは正規のサーバー用ハードウェアであり、高価です。マザーボードにオンボードで搭載されている RAID や、安価な RAID カードは、基本的にシステムとは独立していないため、CPUに負荷をかける傾向があります。それでも個人利用には十分であると思われます。
余談ですが、10 年以上前、Linux を RAID ボリュームにインストールしたいと思い、安価な 5000 円ほどの RAID カードをオークションで購入しました。しかし、ドライバのインストールに四苦八苦し、最終的に諦め、その後は自宅サーバーの RAID 化を避けるようになりました。今回のように、CentOS の標準ドライバでインストールできるようになったことは、この 10 年間に Linux が一般的に普及した証拠だと思います。