LinuxでのZFS RAIDおよびLUKS暗号化


24

LinuxでLUKSで暗号化されたZ-RAIDプールとして3x 2TB 7200rpmドライブのセットをセットアップする予定です(NASソリューション用)。

目の前の問題についての私の理解は、これを達成する唯一の方法は、luksFormatすべての物理デバイスを使用して、ロックされていないLUKSコンテナーからzpoolを組み立てることです。

これには次の懸念があります。

  • 書き込みパフォーマンスを大幅に妨げませんか?このセットアップでは、LUKSはZ-RAIDを「認識しない」ため、冗長データは数回暗号化されます。LUKS-on-mdadmソリューションでは、データは1回暗号化され、ディスクに複数回書き込まれるだけです。私のCPUはIntel AES-NIをサポートしています。

  • ZFSは、物理デバイスではなくデバイスマッパーLUKSコンテナーで動作しているときにディスク障害を認識しますか?重複排除やその他のZFS機能はどうですか?


4
しません 失敗しやすいようです。
ewwhite 14

3
@MadHatter ZFSだから。それはできません。
マイケルハンプトン

1
結構です(あなたの言葉を受け入れます)。1つの大きなファイルを含む1つの大きなZFSを作成し、ループバックマウントして暗号化ます。
MadHatterは、モニカをサポートします14

1
@eewhite ZFSカーネルモジュールが暗号化自体を実装するまで、Linux上のZFSで暗号化を使用するためのオプションを考え出すだけです。しかし、私は同意しなければなりません-LUKSとZFSはうまくやっていないようです。
MasterM

4
決して、決して大きなファイルを作成してZFSでループバックしないでください。CoWの操作のためにCoWのスペースがなくなると、プールを使い物にならない速度にねじ込んでしまいます。
ヴィニシウスフェラン14

回答:


27

私が管理しているサーバーの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 コマンドプロパティを追加しashiftzfsて、ハードドライブのセクターサイズを指定できるようにしました。リンクされた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機能は同じように機能します。

概要

  1. LUKSで暗号化されたデバイス上のZFSはうまく機能します。
  2. ハードウェア暗号化を使用している場合、ハードウェアでサポートされている暗号化方式を使用している限り、パフォーマンスが低下することはありません。使用cryptsetup benchmarkして、ハードウェアで最適に機能するものを確認します。
  3. ZFSは、単一のエンティティに結合されたRAIDとファイルシステムと考えてください。ストレージスタックに収まる場所については、上記のASCII図を参照してください。
  4. ZFSファイルシステムが使用する各LUKS暗号化ブロックデバイスのロックを解除する必要があります。
  5. 現在と同じ方法で、ストレージハードウェアの状態を監視します。
  6. 4Kブロックのドライブを使用している場合は、ファイルシステムのブロックアライメントに注意してください。luksformatオプションまたは他の設定を試して、許容速度に必要な調整を行う必要がある場合があります。

3
この作品を作るための方法見つけるために1 例を。
ewwhite

1
1 MiBはすでに4KiBで均等に分割できるため、rawディスクを使用している場合は、ashift = 20(これは私のキャリアでは必要ないと思われます)まで正確に調整する必要があります。
マイケルハンプトン

1
もう1つだけです。私はあなたの答えを投票しています。なぜなら、それはOPが期待したものであり、よく書かれているからです。
ヴィニシウスフェラン

3
@ViníciusFerrão:また、FreeBSDとFreeNASがZFS暗号化に同じアプローチを使用していることにも注意してください。geli暗号化されたデバイスを作成するために使用され、プレーンテキストデータはZFSが使用する2番目のデバイスを介して利用可能になります。doc.freenas.org/index.php/Volumes#Encryptionの 2番目の箇条書きを参照してください。
ヒトデ14

2
@CMCDragonkai L2ARCとSLOGの両方のデバイスにはプールからのデータが含まれているため、機密性を確保するためにストレージを暗号化する場合(多くの場合、最初に暗号化されたストレージを使用するポイントです)同様に暗号化されたL2ARCおよびSLOGデバイスを実行します。
CVn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.