t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Linuxで暗号化されたRAID10を構築したので概要を解説

今回はAlmaLinux OS 9で暗号化されたRAID10を構築してみた。
作成した暗号化ボリュームはSambaファイルサーバーの共有ファルダで使用する予定である。

※物理的なサーバーの組立は前回の記事を参照
thom.hateblo.jp

RAID(レイド)とは、複数のストレージ(HDD・SSD等)を組み合わせて使うことで速度アップしたり、故障時のデータの消失リスクを下げるためのテクノロジーである。

今回はLinuxのmdadmというツールでRAID10という仕組みを構築し、さらにそこに暗号化ボリュームを作って/mnt/encryptedにマウントし、そこにSambaの共有フォルダーを作成するという構成にした。保存領域の全体像はこんな感じ。

ごちゃごちゃしてよく分からないと言われてしまいそうなので順を追って説明する。

まずハードディスクを買ってSATAケーブルでマザーボードに接続すると、/dev/sdaのように認識される。
※複数のHDDを接続した場合はsdb、sdc…という風に続く。

そこにRAID用のパーティションを作成する。

これを複数セット用意してミラーリングさせたのがRAID 1と呼ばれる構成。

RAID 1の構成だとディスクを増やしてもバックアップに使われるので保存可能なデータ容量が増えないけど、ディスクの数だけバックアップがあるようなものなので、HDDが全滅しない限りはデータが消えないというメリットがある。

一方で、Raid 0という構成ではデータを切り分けて複数のディスクにそれぞれ別の部分を保存する。

HDDはアクセス速度が遅いけどRAID 0だと1つのデータに対して複数のHDDが分担して読み書きを行うのでその分アクセススピードが向上する。

そして、いま説明した2つの仕組みを組み合わせたのがRAID 10である。※1+0と表記されることもある。

今回は採用しなかったが、逆の組み合わせはRAID 01と表記される。※0+1と表記されることもある。図の都合で上から読みそうになるけど逆なので注意。

一見違いが分かりにくいかもしれないが、下図を見ていただくと対障害性でRAID10が勝っていることが分かる。

RAID 01の方はsdaが故障した時点で左側のRAID 0が機能しなくなるため、右側の2本で運用することになる。このうち1本が壊れたらシステムが完全停止となるので障害には弱い。
対してRAID 10はsdaが故障してもミラー先のsdbが生きているので左側のRAID 1はセーフ。この状態でsddが故障してもミラー先のsdcが生きているので右側のRAID 1もセーフ。よって全体を構成するRAID 0もセーフとなり、システム全体は正常に稼働を続ける。
まぁこの図だと4台しかないので、sdaとsdbが同時故障した場合は逆にRAID01の方がセーフということになるんだけど、台数が増えるとグループを跨いだ故障に強いRAID10に軍配が上がるという訳である。


RAIDには専用の基盤を用いるハードウェアRAIDとOS上のアプリケーションで実行するソフトウェアRAIDの2種類がある。
ハードウェアRAIDは専用基盤なのでCPUに負担がかからないけど高額、ソフトウェアRAIDは特に追加で購入する部品などは必要ないがCPUリソースを必要とするので一長一短である。

最初はハードウェアRAIDを考えていたけど、今回Amazonで比較的安価で販売されていたRAID10拡張カードのレビューコメントを見ると、これRAID 0+1だよって書かれているものがあったので気持ちが萎えた。RAID01のメリットは知らないので本当かどうかは分からない。ただどうやら調べてみると販売業者もRAID10とRAID01との区別がついておらず、どちらでも一緒だと考えてる人がいるようで、微妙なものをつかまされても困る。

今回はそもそも家庭で使うファイルサーバーなので、どのみちCPUリソースは持て余すことになる。ということで今回はLinuxのmdadmというツールを用いたソフトウェアRAIDを採用した。

作成したRAIDボリュームはmd0という名前を付け、/dev/md0というデバイス扱いになった。

この時点で同期処理が始まるので終わるまで待機し、完了したらLUKS(Linux Unified Key Setup)という仕組みでmd0を暗号化する。LUKSはディスク暗号化の仕様の名前なので、実際の暗号化にはcryptsetupsというツールを使用し、ボリューム名は参考にした記事に倣ってcryptdataとした。

このcryptdataボリュームにLinuxで一般的なext4形式のファイルシステムを構築しこれを/mnt配下に作成したencryptedフォルダにマウントする。マウントするときに暗号化キーを求められるが、これはキーファイルとして保存しておくことでOS起動時に自動マウントさせることができる。この仕組みだとOSが起動してしまえばデータは見えてしまうわけだけど、仮にディスク単体を抜き取られて盗み出されても他のPCからデータを見ることはできないので安全性は向上している。

さて、これでLinuxから/mnt/encryptedにアクセスすることで実際に暗号化されたRAID10領域を普通のファイルやフォルダを作成することができるスペースとして利用することができる。

ということで今回作成した暗号化RAIDの概要説明はここまで。

実際の手順は以下の2サイトを参考にほぼそのまま対応したのでここでの説明は割愛しようと思う。
ja.linux-console.net
e-penguiner.com

次回はここにSambaを構築する際に若干苦労した点や実装した独自機能について書こうと思う。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。