Go to main content
Oracle® Solaris 11.3 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ZFS ストレージプールを移行する

ストレージプールをシステム間で移動しなければならないことがあります。これらのストレージデバイスを元のシステムから切り離し、それらのデバイスを物理的にケーブル接続し直すか、または複数のポートを持つデバイス (SAN 上のデバイスなど) を使用して宛先システムに再接続します。

ZFS では、各システムのアーキテクチャーエンディアンが異なる場合でも、あるシステムからプールをエクスポートし、それを宛先システムにインポートできます。異なるシステム上に存在する可能性のある異なるストレージプール間でのファイルシステムのレプリケーションまたは移行については、ZFS データの保存、送信、および受信を参照してください。

ZFS ストレージプールの移行を準備する

プールを移行するには、まずそのプールをエクスポートする必要があります。この操作により、書き込まれていないデータがすべてディスクにフラッシュされ、エクスポートが完了したことを示すデータがディスクに書き込まれ、さらにそのプールに関するすべての情報がシステムから削除されます。

そのプールを明示的にエクスポートせず、代わりにディスクを手動で削除した場合でも、結果として得られたプールを別のシステムに引き続きインポートできます。ただし、最後の数秒間のデータトランザクションが失われる可能性があります。また、デバイスが存在しなくなっているため、元のシステムではこのプールが UNAVAIL として表示されます。デフォルトでは、明示的にエクスポートしていないプールはインポート先のシステムでインポートできません。アクティブなプールを誤ってインポートしてしまうことを防ぐ (プールを構成するネットワークに接続されたストレージが別のシステムでまだ使用されていることがないようにする) には、この状態が必要になります。

ZFS ストレージプールをエクスポートする

プールをエクスポートするには、次のコマンドを使用します。

# 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 ストレージプールをインポートする

特定のプールをインポートするには、zfs import コマンドでプール名またはその数値識別子を指定します。さらに、プールのインポート中にその名前を変更することもできます。例:

# zpool import system1 mpool

このコマンドは、エクスポートされたプール system1 をインポートし、その名前を mpool に変更します。新しいプール名は永続的な名前です。


注 -  プールの名前を直接変更することはできません。プールの名前は、そのプールのエクスポートおよびインポート中にのみ変更できます。それにより、ルートデータセットの名前も新しいプール名に変更されます。

Caution

注意  -  インポート操作中に、そのプールが別のシステムで使用されている可能性がある場合は、警告が発生します。

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

破棄された ZFS ストレージプールを回復する

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