私が管理しているサーバーの1つは、説明したタイプの構成を実行します。LUKSで暗号化されたRAIDZプールを備えた1TBのハードドライブが6台あります。また、LUKSで暗号化されたZFSミラーに2台の3TBハードドライブがあり、毎週交換されてオフサイトに移動されます。サーバーはこの構成を約3年間使用しており、私はこれまで問題を抱えたことはありません。
Linuxで暗号化を使用したZFSが必要な場合は、このセットアップをお勧めします。Linux上のZFSではなく、ZFS-Fuseを使用しています。ただし、Linux上のZFSが、おそらく私が使用しているセットアップよりも優れたパフォーマンスを発揮すること以外は、結果に影響はないと考えています。
このセットアップでは、LUKSはZ-RAIDを「認識しない」ため、冗長データは数回暗号化されます。LUKS-on-mdadmソリューションでは、データは1回暗号化され、ディスクに複数回書き込まれるだけです。
LUKSはRAIDを認識しないことに注意してください。ブロックデバイスの上にあることだけを知っています。mdadmを使用してRAIDデバイスを作成luksformat
し、それを作成する場合、暗号化されたデータをLUKSではなく、基になるストレージデバイスに複製するのはmdadmです。
LUKS FAQの質問2.8は、暗号化をRAIDの上に置くべきか、またはその逆にするべきかについて述べています。次の図を提供します。
Filesystem <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks <- bottom
ZFSはRAIDとファイルシステムの機能を組み合わせているため、ソリューションは次のように見える必要があります。
RAID-Z and ZFS Filesystem <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks <- bottom
ZFSはパーティションではなくrawブロックストレージを使用することを想定しているため、rawパーティションをオプションとしてリストしました。パーティションを使用してzpoolを作成することはできますが、無駄なレベルの管理が追加されるためお勧めできません。パーティションブロックのアライメントのオフセットを計算する際に考慮する必要があります。
書き込みパフォーマンスを大幅に妨げませんか?[...]私のCPUはIntel AES-NIをサポートしています。
AES-NIドライバーでサポートされている暗号化方法を選択する限り、パフォーマンスの問題はありません。cryptsetup 1.6.0以降を使用している場合は、実行してcryptsetup benchmark
、どのアルゴリズムが最高のパフォーマンスを提供するかを確認できます。
LUKSの推奨オプションに関するこの質問も価値があるかもしれません。
ハードウェア暗号化のサポートがある場合、パーティションの不整合によるパフォーマンスの問題に直面する可能性が高くなります。
Linux上のZFS はコマンドにプロパティを追加しashift
zfs
て、ハードドライブのセクターサイズを指定できるようにしました。リンクされたFAQによるashift=12
と、4Kブロックサイズのドライブを使用していると伝えます。
LUKS FAQには、LUKSパーティションのアライメントが1 MBであると記載されています。質問6.12および6.13でこれについて詳しく説明し、LUKSパーティションヘッダーを大きくする方法についてもアドバイスします。ただし、ZFSファイルシステムが4K境界上に作成されることを保証するのに十分な大きさにできるかどうかはわかりません。これがあなたが解決する必要がある問題であるならば、私はこれがあなたのためにどのように働くか聞くことに興味があるでしょう。2TBドライブを使用しているため、この問題に直面しない可能性があります。
ZFSは、物理デバイスではなくデバイスマッパーLUKSコンテナーで動作しているときにディスク障害を認識しますか?
ZFSは、問題なく読み書きできる限り、ディスク障害を認識します。ZFSにはブロックストレージが必要であり、そのストレージの詳細とそれがどこから来たかについては気にしません。発生した読み取り、書き込み、またはチェックサムエラーのみを追跡します。基盤となるストレージデバイスの状態を監視するのはユーザー次第です。
ZFSドキュメントには、読む価値のあるトラブルシューティングに関するセクションがあります。破損したデバイスの交換または修復に関するセクションでは、障害シナリオ中に発生する可能性のあるものと、その解決方法について説明します。ここでは、ZFSを持たないデバイスの場合と同じことを行います。syslogをチェックして、SCSIドライバー、HBAまたはHDコントローラー、および/またはSMART監視ソフトウェアからのメッセージを確認し、それに応じて対処します。
重複排除やその他のZFS機能はどうですか?
基礎となるブロックストレージが暗号化されているかどうかに関係なく、すべてのZFS機能は同じように機能します。
概要
- LUKSで暗号化されたデバイス上のZFSはうまく機能します。
- ハードウェア暗号化を使用している場合、ハードウェアでサポートされている暗号化方式を使用している限り、パフォーマンスが低下することはありません。使用
cryptsetup benchmark
して、ハードウェアで最適に機能するものを確認します。
- ZFSは、単一のエンティティに結合されたRAIDとファイルシステムと考えてください。ストレージスタックに収まる場所については、上記のASCII図を参照してください。
- ZFSファイルシステムが使用する各LUKS暗号化ブロックデバイスのロックを解除する必要があります。
- 現在と同じ方法で、ストレージハードウェアの状態を監視します。
- 4Kブロックのドライブを使用している場合は、ファイルシステムのブロックアライメントに注意してください。luksformatオプションまたは他の設定を試して、許容速度に必要な調整を行う必要がある場合があります。