ストレージプールをシステム間で移動しなければならないことがあります。これらのストレージデバイスを元のシステムから切り離し、それらのデバイスを物理的にケーブル接続し直すか、または複数のポートを持つデバイス (SAN 上のデバイスなど) を使用して宛先システムに再接続します。
ZFS では、各システムのアーキテクチャーエンディアンが異なる場合でも、あるシステムからプールをエクスポートし、それを宛先システムにインポートできます。異なるシステム上に存在する可能性のある異なるストレージプール間でのファイルシステムのレプリケーションまたは移行については、ZFS データの保存、送信、および受信を参照してください。
プールを移行するには、まずそのプールをエクスポートする必要があります。この操作により、書き込まれていないデータがすべてディスクにフラッシュされ、エクスポートが完了したことを示すデータがディスクに書き込まれ、さらにそのプールに関するすべての情報がシステムから削除されます。
そのプールを明示的にエクスポートせず、代わりにディスクを手動で削除した場合でも、結果として得られたプールを別のシステムに引き続きインポートできます。ただし、最後の数秒間のデータトランザクションが失われる可能性があります。また、デバイスが存在しなくなっているため、元のシステムではこのプールが UNAVAIL として表示されます。デフォルトでは、明示的にエクスポートしていないプールはインポート先のシステムでインポートできません。アクティブなプールを誤ってインポートしてしまうことを防ぐ (プールを構成するネットワークに接続されたストレージが別のシステムでまだ使用されていることがないようにする) には、この状態が必要になります。
プールをエクスポートするには、次のコマンドを使用します。
$ zpool export [option] pool
このコマンドは、まずプール内のマウントされたファイルシステムをすべてアンマウントします。いずれかのファイルシステムのアンマウントに失敗した場合は、–f オプションを使用して強制的にマウントを解除できます。ただし、プール内の ZFS ボリュームが使用されている場合は、–f オプションが指定されていてもこの操作は失敗します。ZFS ボリュームを持つプールをエクスポートするには、まず、ボリュームのすべての使用者がアクティブでなくなっていることを確認します。
詳細は、ZFS ボリュームを参照してください。
このコマンドが実行されると、このプールはシステム上で認識されなくなります。
エクスポート時にデバイスが使用できない場合、それらのデバイスは明示的にエクスポートされたものとして識別できません。これらのデバイスのいずれかがあとで、ほかに動作中のデバイスがない状態でシステムに接続された場合、そのデバイスは潜在的にアクティブとして表示されます。
システムからプールが削除されたら、ターゲットシステムにデバイスを接続できます。それらを同じデバイス名で接続する必要はありません。ZFS は、移動されたデバイスや名前が変更されたデバイスをすべて検出し、構成を適切に調整します。ZFS は、一部のデバイスのみが使用可能な状況にも対処できることに注意してください。ただし、プールの移行の成功は、すべてのデバイスの全体的な健全性に依存しています。
次の一般的なコマンド構文をプールのインポートのすべての操作に使用します。
$ zpool import [options] [pool|ID-number]
インポートできる使用可能なプールを検出するには、プールを指定せずに zpool import コマンドを実行します。この出力で、各プールは名前と一意の数値識別子によって識別されます。インポートに使用できるプールが同じ名前を共有している場合は、数値識別子を使用して正しいプールをインポートします。
インポートされるプールに問題が存在する場合、このコマンド出力では、どのようなアクションを実行するのかを判断するのに役立つ適切な情報も提供されます。
次の例では、いずれかのデバイスが欠けていますが、ミラー化されたデータにアクセスできる状態のままであるため、このプールを引き続きインポートできます。
$ zpool import
pool: system1
id: 4715259469716913940
state: DEGRADED
status: One or more devices are unavailable.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
config:
system1 DEGRADED
mirror-0 DEGRADED
c0t5000C500335E106Bd0 ONLINE
c0t5000C500335FC3E7d0 UNAVAIL cannot open
device details:
c0t5000C500335FC3E7d0 UNAVAIL cannot open
status: ZFS detected errors on this device.
The device was missing.
次の例では、RAID-Z 仮想デバイスの 2 つのディスクが欠けているため、プールを再構築するための十分な冗長データが存在しません。使用可能なデバイスが不足していると、ZFS はプールをインポートできません。
$ zpool import
pool: mothership
id: 3702878663042245922
state: UNAVAIL
status: One or more devices are unavailable.
action: The pool cannot be imported due to unavailable devices or data.
config:
mothership UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
c8t0d0 UNAVAIL cannot open
c8t1d0 UNAVAIL cannot open
c8t2d0 ONLINE
c8t3d0 ONLINE
device details:
c8t0d0 UNAVAIL cannot open
status: ZFS detected errors on this device.
The device was missing.
c8t1d0 UNAVAIL cannot open
status: ZFS detected errors on this device.
The device was missing.
特定のプールをインポートするには、zfs import コマンドでプール名またはその数値識別子を指定します。さらに、プールのインポート中にその名前を変更することもできます。例:
$ zpool import system1 mpool
このコマンドは、エクスポートされたプール system1 をインポートし、その名前を mpool に変更します。新しいプール名は永続的な名前です。
![]() | 注意 - インポート操作中に、そのプールが別のシステムで使用されている可能性がある場合は、警告が発生します。 cannot import 'pool': pool may be in use on another system use '-f' to import anywayあるシステムでアクティブになっているプールを別のシステムにインポートしようとしないでください。ZFS はネイティブのクラスタファイルシステム、分散ファイルシステム、または並列ファイルシステムではないため、異なる複数のシステムからの同時アクセスには対応できません。 |
–R オプションを使用して、プールを代替ルートの下にインポートすることもできます。詳細は、代替ルート場所で ZFS プールを使用するを参照してください。
デフォルトでは、ログデバイスがないプールはインポートできません。zpool import –m コマンドを使用して、ログデバイスがないプールを強制的にインポートすることができます。
次の例では、プール dozer を最初にインポートしたときにミラー化ログがなかったことが出力に示されています。
$ zpool import dozer The devices below are missing, use '-m' to import the pool anyway: mirror-1 [log] c3t3d0 c3t4d0 cannot import 'dozer': one or more devices is currently unavailable
ミラー化ログのないプールのインポートを続行するには、–m オプションを使用します。
$ zpool import -m dozer
$ zpool status dozer
pool: dozer
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: URL to My Oracle Support knowledge article
scan: scrub repaired 0 in 0h0m with 0 errors on Fri Oct 15 16:51:39 2010
config:
NAME STATE READ WRITE CKSUM
dozer DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
c3t1d0 ONLINE 0 0 0
c3t2d0 ONLINE 0 0 0
logs
mirror-1 UNAVAIL 0 0 0 insufficient replicas
13514061426445294202 UNAVAIL 0 0 0 was c3t3d0
16839344638582008929 UNAVAIL 0 0 0 was c3t4d0
インポートされたプールは、DEGRADED 状態のままになります。出力の推奨事項に基づいて、欠落しているログデバイスを接続します。次に、zpool clear コマンドを実行してプールエラーをクリアします。
あるプールがアクセス不可能なほど損傷している場合は、読み取り専用モードでインポートすると、そのプールのデータを回復できることがあります。例:
$ zpool import -o readonly=on system1 $ zpool scrub system1 cannot scrub system1: pool is read-only
プールが読み取り専用モードでインポートされるとき、次の条件が適用されます。
すべてのファイルシステムおよびボリュームが読み取り専用モードでマウントされます。
プールトランザクション処理が無効になります。インテントログ内の保留中の同期書き込みはすべて、そのプールが読み取り/書き込みモードでインポートされるまで実行されません。
読み取り専用のインポート中にプールプロパティーを設定しても無視されます。
プールは、エクスポートおよびインポートすることによって読み取り/書き込みモードに戻すことができます。例:
$ zpool export system1 $ zpool import system1 $ zpool scrub system1
デフォルトでは、zpool import コマンドは、/dev/dsk ディレクトリ内でのみデバイスを検索します。デバイスが別のディレクトリに存在するか、またはファイルに基づくプールを使用している場合は、–d オプションを使用して、代替ディレクトリを検索する必要があります。例:
$ zpool create mpool mirror /file/a /file/b
$ zpool export mpool
$ zpool import -d /file
pool: mpool
id: 7318163511366751416
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
mpool ONLINE
mirror-0 ONLINE
/file/a ONLINE
/file/b ONLINE
$ zpool import -d /file mpool
デバイスが複数のディレクトリに存在する場合は、複数の –d オプションを指定できます。
次のコマンドは、プールの特定のデバイスの 1 つである /dev/etc/c2t3d0 を識別することによって、プール mpool をインポートします。
$ zpool import -d /dev/etc/c2t3d0 mpool $ zpool status mpool pool: mpool state: ONLINE scan: resilvered 952K in 0h0m with 0 errors on Fri Jun 29 16:22:06 2012 config: NAME STATE READ WRITE CKSUM mpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0
zpool import –D コマンドを使用して、破棄されたストレージプールを回復できます。
次の例では、プール system1 は破棄されたとして示されています。
$ zpool import -D
pool: system1
id: 5154272182900538157
state: ONLINE (DESTROYED)
action: The pool can be imported using its name or numeric identifier.
config:
system1 ONLINE
mirror-0 ONLINE
c1t0d0 ONLINE
c1t1d0 ONLINE
破棄されたプールを回復するには、–D オプションを使用してそのプールをインポートします。
$ zpool import -D system1
$ zpool status system1
pool: system1
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
system1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c1t0d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
errors: No known data errors
破棄されたプール内のいずれかのデバイスが使用できない場合でも、–f オプションを含めることによって、破棄されたプールを引き続き回復できることがあります。このような場合には、機能が低下したプールをインポートしてから、デバイスの障害の修正を試みます。例:
$ zpool import -D
pool: dozer
id: 4107023015970708695
state: DEGRADED (DESTROYED)
status: One or more devices are unavailable.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
config:
dozer DEGRADED
raidz2-0 DEGRADED
c8t0d0 ONLINE
c8t1d0 ONLINE
c8t2d0 ONLINE
c8t3d0 UNAVAIL cannot open
c8t4d0 ONLINE
device details:
c8t3d0 UNAVAIL cannot open
status: ZFS detected errors on this device.
The device was missing.
$ zpool import -Df dozer
$ zpool status -x
pool: dozer
state: DEGRADED
status: One or more devices are unavailable in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or 'fmadm repaired', or replace the device
with 'zpool replace'.
Run 'zpool status -v' to see device specific details.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dozer DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
c8t0d0 ONLINE 0 0 0
c8t1d0 ONLINE 0 0 0
c8t2d0 ONLINE 0 0 0
4881130428504041127 UNAVAIL 0 0 0
c8t4d0 ONLINE 0 0 0
errors: No known data errors
$ zpool online dozer c8t3d0
$ zpool status -x
all pools are healthy