まあ、それは本当にプールをどのように読み取り専用にしたいかに依存します。いいえ、それは冗談ではありません。
まず、ちょっとした用語:ZFSでは、プールをインポートし、オプションでその中の(任意の)ファイルシステムをマウントします。あなたは渡すことによって、任意のファイルシステムをマウントせずにプールをインポートすることができます-N
しzpool import
、その後、後には、使用して任意のファイルシステムをマウントzfs mount
。(たとえば、多数のファイルシステムから単一のファイルシステムにのみアクセスしたい場合、またはプールのオフラインスクラブに似た何かを実行したい場合、これは完全に有効なシナリオです。)
ZFSは、本当に読み取り専用アクセスの大ファンではありません。たとえば、ZFSが修復可能なエラーを検出した場合、プールを読み取り専用としてインポートした場合でも、エラーを修復し、修復されたデータをディスクに書き込みます。私の理解では、ZFS parlaceでは、「読み取り専用」はプールとそのデータセットのユーザーに表示される状態にのみ適用されます。一方、ディスクのバイナリコピーをファイル(またはファイルのセット)に作成し、それらのファイルを本当に読み取り専用にして、そこからプールをインポートしようとすると、ZFSはインポートできません。どんなに頑張っても、プールはまったくありません。ファイルを書き込み可能にすると、正常に動作します。(私は実際には数週間前にこれを試しましたが、zvolを使用していますが、ZFSは激しく拒否しましたプールをインポートします。zvolを読み取り専用ではなく読み取り/書き込みに設定すると、プールは正常にインポートされました。)(Linuxの)ext4のような他のファイルシステムやおそらく他のファイルシステムは、この状況をある程度優雅に処理しますが、ZFSはしのぎます。
運が悪く、プールをインポートするシステムにECC RAMがインストールされていない場合、ZFSが発生したエラーを修正しようとすると実際には事態が悪化する可能性がありますが、これが実際にリスクであるかどうかについては意見が異なります実際には。個人的に私は私が十分に気に任意のデータがZFSとスナップショットおよびストレージ・レベルの冗長性とを保護するという意見だバックアップおよびその他もろもろ値するもECC RAMによって提供される保護を、多くのPCは、ECC RAMを持っていません。
だから、あなたは何も他の人のつま先を踏んでから、それを維持するために、特定の代替ルートで、読み取り専用モードでプールをインポートすることができますが、それは必ずしもではないことに注意する必要があり、本当に読み取り専用のフォレンジック意味で。(ただし、誤ってプール内の何かを変更しないようにします。)読み取り専用のインポートを行うには、プールに名前が付けられtank
ており、デバイスノードがで使用可能であると想定し/dev
ます。次のようなコマンドを使用します。
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
これは/dev
、という名前のZFSプールを保持しているものを探し、tank
それをインポートし、一時的にプールプロパティreadonly
をに設定しon
(つまり、ユーザーが開始したすべての書き込みが拒否されます)、そのaltroot
プロパティを一時的にに設定します/mnt/someplace
。(これらのプロパティ値は、現在のプロパティ値としてディスクに永続化されないという意味で「一時的」であるため、これらのプロパティ値なしでプールをエクスポートして再インポートすると、値は通常に戻ります。ただし、プールの履歴に書き込まれる可能性があります。プールがインポートされると、zpool history tank
プールがインポートされると、/ mnt / someplaceの下にファイルが表示され、プール内のデータセットで既に作成されているスナップショットを含め、それらのファイルへの通常の読み取り専用アクセスが可能になります。
あなたの例を考えると、私はあなたが次の線に沿って何かを使用するのではないかと思います:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
完了したら、プールをきれいにエクスポートすることを忘れないでください。
# zpool export tank
多分
# zpool export zroot02
これにより、プール内のすべてのファイルシステムと他のデータセットのマウントが解除され、すべてのバッファがフラッシュされ(最初にフラッシュする必要がある範囲まで)、プールがすべての構成デバイスにインポートされていないものとしてマークされ、その他の必要なハウスキーピングタスクが実行されます。プールを別のシステムに安全に移動し、後でそこにインポートできること。