# zfs get reservation,refreserv profs/prof1
NAME PROPERTY VALUE SOURCE profs/prof1 reservation 20G local profs/prof1 refreservation 10G local
refreservation を設定すると、スナップショットを作成できるのは、データセット の referenced の現在のバイト数を格納できるだけの未予約プール領域が、この予約容 量のほかに存在する場合だけになります。
ZFS ファイルシステムの圧縮
圧縮は、データがより少ないディスク容量を使用して格納されるプロセスです。次の 圧縮アルゴリズムを使用できます。
■ gzip - 標準の UNIX 圧縮。
■ gzip-
N - 特定の gzip レベルを選択します。
gzip-1 は、もっとも高速な gzip 圧縮 を提供します。gzip-9 は、最適なデータ圧縮を提供します。gzip-6 がデフォルト です。■ lz4 - より優れた圧縮をより低い CPU オーバーヘッドで提供します
■ lzjb - 優れた圧縮と同時に、最適なパフォーマンスを提供します
■ zle - 長さ 0 のエンコーディングが 0 の大きなブロックを含むデータセットに有効 です
注記 - 現時点では、lz4 および gzip のどちらの圧縮アルゴリズムもルートプールでサ
ポートされていません。
圧縮の ZFS プロパティーを設定することによって、特定の圧縮アルゴリズムを選択で きます。LZ4 アルゴリズムを使用するには、次のようなコマンドを使用します。
# zfs set compress=lz4 pool/fs
ZFS ファイルシステムの暗号化
暗号化とは機密保護のためにデータをエンコードするプロセスで、エンコードされた データにデータ所有者がアクセスするには鍵が必要になります。ZFS 暗号化を使用す る利点は次のとおりです。
■ ZFS 暗号化は ZFS コマンドセットと統合されています。ほかの ZFS 操作と同様 に、鍵の変更や再入力などの暗号化操作は、オンラインで実行されます。
ZFS ファイルシステムの暗号化
■ 既存のストレージプールがアップグレードされていれば、それを使用できます。特 定のファイルシステムの暗号化には柔軟性があります。
■ データは、CCM および GCM 操作モードで、鍵の長さが 128、192、および 256 の AES (Advanced Encryption Standard) を使用して暗号化されます。
■ ZFS 暗号化は、Oracle Solaris 暗号化フレームワークを使用します。このため自動的 に、暗号化アルゴリズムのすべての使用可能なハードウェアアクセラレーションま たは最適化されたソフトウェア実装にアクセスできます。
■ 現時点では、単独のファイルシステムであっても、ZFS ルートファイルシステムま たはその他の OS コンポーネント (/var ディレクトリなど) を暗号化することはで きません。
■ ZFS 暗号化は子孫のファイルシステムに継承できます。
■ 一般ユーザーは、create、mount、keysource、checksum、encryption アクセス 権が割り当てられている場合に、暗号化されたファイルを作成して鍵の操作を管理 できます。
ZFS ファイルシステムが作成されるときに暗号化ポリシーを設定できますが、そのポ リシーを変更することはできません。たとえば、tank/home/darren ファイルシステ ムは、暗号化プロパティーを有効にして作成されています。デフォルトの暗号化ポリ シーでは、最低 8 文字の長さが必要なパスフレーズの入力が求められます。
# zfs create -o encryption=on tank/home/darren Enter passphrase for 'tank/home/darren': xxxxxxx Enter again: xxxxxxxx
ファイルシステムの暗号化が有効になっていることを確認します。例:
# zfs get encryption tank/home/darren
NAME PROPERTY VALUE SOURCE tank/home/darren encryption on local
ファイルシステムの暗号化の値が on になっている場合、デフォルトの暗号化アルゴ リズムは aes-128-ccm です。
ラッピング鍵は、実際のデータ暗号化鍵を暗号化するために使用されます。ラッピン
グ鍵は、上記の例のように、暗号化したファイルシステムの作成時に、zfs コマンド からカーネルに渡されます。ラッピング鍵は、ファイルにあるか (生または 16 進数形 式)、パスフレーズから派生します。ラッピング鍵の形式と場所は、keysource プロパティーで次のように指定されます。
keysource=format,location
■ 形式は次のいずれかになります。
■ raw – 生の鍵バイト
■ hex – 16 進数の鍵文字列
■ passphrase – 鍵を生成する文字列
■ 場所は次のいずれかになります。
ZFS ファイルシステムの暗号化
■ prompt – ファイルシステムの作成またはマウント時に鍵またはパスフレーズの
入力が要求される
■ file:///
filename – ファイルシステム内の鍵またはパスフレーズファイルの場
所■ pkcs11 – PKCS#11 トークンでの鍵またはパスフレーズの場所を記述した URI
■ https://
location – セキュアなサーバー上の鍵またはパスフレーズファイルの
場所。この方法を使用して鍵情報を平文で転送することは推奨されていませ ん。URL に GET を付けると、keysource プロパティーの形式部分でリクエスト された内容に従って、鍵の値またはパスフレーズのみが返されます。keysource で https:// ロケータを使用する場合は、ZFS サーバーが提示する 証明書が libcurl および OpenSSL で信頼されているものである必要がありま す。独自のトラストアンカーまたは自己署名付き証明書を、/etc/openssl/
certs にある証明書ストアに追加します。PEM 形式の証明書を /etc/certs/
CA ディレクトリに配置し、次のコマンドを実行します。
# svcadm refresh ca-certificates
keysource 形式が passphrase の場合、ラッピング鍵はパスフレーズから派生します。
それ以外の場合、keysource プロパティー値は、生のバイトまたは 16 進数形式で、
実際のラッピング鍵を示します。パスフレーズがファイルに格納されているか、入力 が要求される生のバイトストリームに格納されているか (これはおそらくスクリプト 処理にのみ適しています) を指定できます。
ファイルシステムの keysource プロパティー値が passphrase を指定している場合、
ラッピング鍵は、PKCS#5 PBKD2 と、ファイルシステムごとにランダムに生成された ソルトを使用して、パスフレーズから派生します。したがって、子孫のファイルシス テムで使用された場合、同じパスフレーズでも異なるラッピング鍵が生成されます。
ファイルシステムの暗号化ポリシーは、子孫のファイルシステムによって継承され、
削除することはできません。例:
# zfs snapshot tank/home/darren@now
# zfs clone tank/home/darren@now tank/home/darren-new Enter passphrase for 'tank/home/darren-new': xxxxxxx Enter again: xxxxxxxx
# zfs set encryption=off tank/home/darren-new
cannot set property for 'tank/home/darren-new': 'encryption' is readonly
暗号化された、または暗号化されていない ZFS ファイルシステムをコピーまたは移行 する必要がある場合、次の点を考慮してください。
■ 現在、暗号化されていないデータセットストリームを送信することはできず、受信 側のプールのデータセットで暗号化を有効にしている場合でも、これを暗号化され たストリームとして受信することもできません。
■ 次のコマンドを使用して、暗号化されていないデータを、暗号化を有効にしている プール/ファイルシステムに移行できます。
■ cp -r
ZFS ファイルシステムの暗号化
■ find | cpio
■ tar
■ rsync
■ 複製された暗号化ファイルシステムストリームは、暗号化されたファイルシステム で受信でき、データは暗号化されたままです。詳細については、例36「暗号化され