Solaris のシステム管理 (基本編)

第 48 章 UFS スナップショットの使用 (手順)

この章では、UFS スナップショットの作成およびバックアップ方法について説明します。

UFS スナップショットの作成に関連した手順については、UFS スナップショットの使用 (作業マップ)を参照してください。

バックアップの実行方法の概要については、第 46 章「ファイルシステムのバックアップと復元 (概要)」を参照してください。

UFS スナップショットの使用 (作業マップ)

作業 

説明 

参照先 

1. UFS スナップショットを作成する。 

fssnap コマンドを使用して、ファイルシステムの読み取り専用コピーを作成する。

UFS スナップショットを作成する方法

2. UFS スナップショットの情報を表示する。 

UFS スナップショット情報 (raw スナップショットデバイスなど) を確認する。 

UFS スナップショットの情報を表示する方法

3. (省略可能) UFS スナップショットを削除する。 

バックアップ済みまたは不要になったスナップショットを削除する。 

UFS スナップショットを削除する方法

4. UFS スナップショットをバックアップする。 

次の方法のいずれかを選択する。 

 

 

ufsdump コマンドを使用して、UFS スナップショットの完全バックアップを作成する。

UFS スナップショットの完全バックアップを作成する方法 (ufsdump)

 

ufsdump コマンドを使用して、UFS スナップショットの増分バックアップを作成する。

 

UFS スナップショットの増分バックアップの作成方法 (ufsdump)

 

tar コマンドを使用して、UFS スナップショットのバックアップを作成する。

UFS スナップショットのバックアップ方法 (tar)

5. (省略可能) UFS スナップショットからデータを復元する。 

ufsrestore コマンドを使用して、データを復元するのと同じ方法で、UFS スナップショットを復元する。

ファイルシステム全体を復元する方法

UFS スナップショットの概要

Solaris リリースには、ファイルシステムのマウント中にファイルシステムをバックアップするための、fssnap コマンドが含まれています。fssnap コマンドを使用して、ファイルシステムの読み取り専用のスナップショットを作成することができます。「スナップショット」は、バックアップ操作のためのファイルシステムの一時的イメージです。

fssnap コマンドを実行すると、1 つの仮想デバイスと 1 つのバッキングストアファイルが作成されます。ユーザーは、既存の Solaris バックアップコマンドを使用して、実際のデバイスのように動作し実際のデバイスのように見える「仮想デバイス」をバックアップすることができます。「バッキングストア (backing-store)」ファイルは、スナップショット作成後に変更されたデータのコピーを含むビットマップファイルです。

なぜ UFS スナップショットを使用するか

UFS スナップショット機能を使用することで、バックアップ時に、ファイルシステムをマウントされた状態にし、システムをマルチユーザーモードにしておくことができます。これまでは、バックアップを実行するために ufsdump コマンドを使用する時は、ファイルシステムをアクティブでない状態に保つためにシステムをシングルユーザーモードにすることが推奨されていました。より確実なバックアップのために、tarcpio などの追加の Solaris のバックアップコマンドを使用して UFS スナップショットのバックアップを行うこともできます。

fssnap コマンドにより、企業レベルではないシステムの管理者が、大規模な記憶容量の必要なく、Sun StorEdgeTM Instant Image のような企業レベルツールのパワーを得ることができます。

UFS スナップショットの機能は、Instant Image 製品の機能に似ています。UFS スナップショットは大規模なファイルシステムをコピーすることができますが、企業レベルのシステムには Instant Image の方が適しています。UFS スナップショットは、小さめのシステムに適しています。Instant Image は、取り込まれるファイルシステム全体のサイズに等しい容量を割り当てます。ただし、UFS スナップショットが作成するバッキングストアファイルは、必要なディスク容量だけを占有します。

次の表は、UFS スナップショットと Instant Image との特徴的な違いを示します。

UFS スナップショット 

Sun StorEdge Instant Image 

バッキングストアファイルのサイズは、スナップショットがとられた後のデータの変更量による 

バッキングストアファイルのサイズは、コピーされるファイルシステム全体のサイズに等しい 

システムのリブート後は保持されない 

システムのリブート後も保持される 

UFS ファイルシステムで動作する 

ルート (/) または /usr ファイルシステムでは使用できない

Solaris 8 1/01 以降のリリースで使用できる 

Sun StorEdge 製品の一部 

UFS スナップショットのパフォーマンス上の問題

UFS スナップショットの初回作成時に、ファイルシステムのユーザーが短い一時停止に気づく場合があります。一時停止の時間は、取り込まれるファイルシステムのサイズに応じて増加します。スナップショットがアクティブな間、ファイルシステムへの書き込み時にユーザーが若干のパフォーマンス低下に気づく場合がありますが、ファイルシステムからの読み込み時には影響はありません。

UFS スナップショットの作成と削除

fssnap コマンドを使用して UFS スナップショットを作成する場合、バッキングストアファイルがどれだけのディスク容量を消費するかを監視してください。バッキングストアファイルは、はじめは容量をまったく使用しませんが、その後特によく使用されているシステムにおいて急速に拡大します。バッキングストアファイルが拡大するのに十分な容量を必ず確保してください。または -o maxsize=n [k,m,g] オプション (n [k,m,g] はバッキングストアファイルの最大限のサイズ) でそのサイズを制限してください。


注意 – 注意 –

バッキングストアファイルに容量が不足する場合、スナップショットが削除されてしまうことがあり、バックアップが失敗します。スナップショットのエラーの可能性を調べるため、/var/adm/messages ファイルをチェックしてください。


詳細は、fssnap_ufs(1M) のマニュアルページを参照してください。

UFS スナップショットを作成する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. ファイルシステムに、バッキングストアファイル用の十分なディスク容量が存在することを確認してください。


    # df -k 
    
  3. 同じ場所に同じ名前の既存のバッキングストアファイルが存在していないことを確認します。


    # ls /backing-store-file
    
  4. UFS スナップショットを作成します。


    # fssnap -F ufs -o bs=/backing-store-file /file-system
    

    注 –

    バッキングストアファイルは、UFS スナップショットを使用して取り込むファイルシステムとは異なるファイルシステムに存在する必要があります。


  5. スナップショットが作成されたことを確認します。


    # /usr/lib/fs/ufs/fssnap -i /file-system
    

例 — UFS スナップショットを作成する

次の例は、/usr ファイルシステムのスナップショットを作成する方法を示します。バッキングストアファイルは /scratch/usr.back.file です。仮想デバイスは /dev/fssnap/1 です。


# fssnap -F ufs -o bs=/scratch/usr.back.file /usr
/dev/fssnap/1

次の例は、バッキングストアファイルを 500M バイトに制限する方法を示します。


# fssnap -F ufs -o maxsize=500m,bs=/scratch/usr.back.file /export/home 
/dev/fssnap/1

UFS スナップショットの情報を表示する方法

fssnap -i オプションを使用すると、システムの現在のスナップショットを表示することができます。1 つのファイルシステムを指定する場合、そのスナップショットについての詳細な情報が表示されます。特定のファイルシステムを指定しない場合は、現在の UFS スナップショットすべておよび対応する仮想デバイスの情報が表示されます。


注 –

次の例に示すように、拡張スナップショット情報を表示する場合は、UFS ファイルシステム固有の fssnap コマンドを使用してください。


  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 現在のすべてのスナップショットをリスト表示します。

    たとえば、次のようになります。


    # /usr/lib/fs/ufs/fssnap -i
    Snapshot number               : 0
    Block Device                  : /dev/fssnap/0
    Raw Device                    : /dev/rfssnap/0
    Mount point                   : /usr
    Device state                  : idle
    Backing store path            : /var/tmp/snapshot3
    Backing store size            : 256 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Oct 08 10:38:25 2003
    Copy-on-write granularity     : 32 KB
    Snapshot number               : 1
    Block Device                  : /dev/fssnap/1
    Raw Device                    : /dev/rfssnap/1
    Mount point                   : /
    Device state                  : idle
    Backing store path            : /tmp/bs.home
    Backing store size            : 448 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Oct 08 10:39:29 2003
    Copy-on-write granularity     : 32 KB
  3. 特定のスナップショットについての詳細な情報を表示します。

    たとえば、次のようになります。


    # /usr/lib/fs/ufs/fssnap -i /usr
    Snapshot number               : 0
    Block Device                  : /dev/fssnap/0
    Raw Device                    : /dev/rfssnap/0
    Mount point                   : /usr
    Device state                  : idle
    Backing store path            : /var/tmp/snapshot3
    Backing store size            : 256 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Oct 08 10:38:25 2003
    Copy-on-write granularity     : 32 KB

UFS スナップショットの削除

UFS スナップショットを作成する際、バッキングストアファイルがリンクされないように指定することができます。リンクされていないバッキングストアファイルは、スナップショットを削除した後で削除されます。UFS スナップショットを作成する際に -o unlink オプションを指定しない場合は、後でバッキングストアファイルを手動で削除する必要があります。

バッキングストアファイルは、バッキングストアファイルの削除に -o unlink オプションを使用した場合はスナップショットが削除されるまで、またはバッキングストアファイルを手動で削除するまで、ディスク容量を使用します。

UFS スナップショットを削除する方法

スナップショットは、システムをリブートするか、あるいは fssnap -d コマンドを使用して削除できます。このコマンドを使用するときには、UFS スナップショットを含むファイルシステムのパスを指定する必要があります。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 削除するスナップショットを特定します。


    # /usr/lib/fs/ufs/fssnap -i
    
  3. スナップショットを削除します。


    # fssnap -d /file-system
    Deleted snapshot 1.
  4. (省略可能) スナップショットの作成時に -o unlink オプションを使用しなかった場合は、そのバッキングストアファイルを手動で削除してください。


    # rm /file-system/backing-store-file
    

例 — UFS スナップショットを削除する

次の例は、-o unlink オプションを使用しなかった場合に、スナップショットを削除する方法を示します。


# fssnap -i
    0    /    1    /usr
# fssnap -d /usr
 Deleted snapshot 1.
# rm /scratch/usr.back.file

UFS スナップショットのバックアップ

UFS スナップショットの完全バックアップまたは増分バックアップを作成できます。UFS スナップショットのバックアップ作成に、標準の Solaris バックアップコマンドを使用できます。

UFS スナップショットを含む仮想デバイスは、標準の読み取り専用デバイスとして動作します。つまり、仮想デバイスを、ファイルシステムのデバイスをバックアップするかのようにバックアップできます。

ufsdump コマンドを使用して UFS スナップショットをバックアップする場合、バックアップ時にスナップショットの名前を指定することができます。詳細については、次の手順を参照してください。

UFS スナップショットの完全バックアップを作成する方法 (ufsdump)

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. バックアップする UFS スナップショットを指定します。


    # /usr/lib/fs/ufs/fssnap -i /file-system
     
    

    たとえば、次のようになります。


    # /usr/lib/fs/ufs/fssnap -i /usr
    Snapshot number               : 0
    Block Device                  : /dev/fssnap/0
    Raw Device                    : /dev/rfssnap/0
    Mount point                   : /usr
    Device state                  : idle
    Backing store path            : /var/tmp/snapshot3
    Backing store size            : 256 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Oct 08 10:38:25 2003
    Copy-on-write granularity     : 32 KB
  3. UFS スナップショットをバックアップします。


    # ufsdump 0ucf /dev/rmt/0 /snapshot-name
    

    たとえば、次のようになります。


    # ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1 
    
  4. スナップショットがバックアップされたことを確認します。

    たとえば、次のようになります。


    # ufsrestore tf /dev/rmt/0
    

UFS スナップショットの増分バックアップの作成方法 (ufsdump)

UFS スナップショットの増分バックアップでは、最後のスナップショット以降に変更のあったファイルだけがバックアップされます。ufsdump コマンドと新規 N オプションを組み合わせて使用します。このオプションは、増分ダンプをトラックするために /etc/dumpdates ファイルに挿入されるファイルシステムのデバイス名を指定します。

次の例では、ufsdump コマンド内で fssnap コマンドを組み込んでファイルシステムの増分バックアップを作成しています。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. UFS スナップショットの増分バックアップを作成します。

    たとえば、次のようになります。


    # ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t1d0s0 `fssnap -F ufs -o raw,bs=
    /export/scratch,unlink /dev/rdsk/c0t1d0s0`
    

    上記の例では、ブロックデバイスではなくraw デバイスの名前を表示するために -o raw オプションが使用されています。このオプションの使用により、fssnap コマンドを raw デバイスを必要とするコマンド (ufsdump コマンドなど) に組み込むことが容易になります。

  3. スナップショットがバックアップされたことを確認します。


    # ufsrestore ta /dev/rmt/0
    

UFS スナップショットのバックアップ方法 (tar)

tar コマンドを使用してスナップショットをバックアップする場合、バックアップを行う前にスナップショットをマウントします。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. スナップショット用のマウントポイントを作成します。

    たとえば、次のようになります。


    # mkdir /backups/home.bkup
    
  3. スナップショットをマウントします。


    # mount -F ufs -o ro /dev/fssnap/1 /backups/home.bkup
    
  4. マウントスナップショットのディレクトリに移動します。


    # cd /backups/home.bkup
    
  5. tar コマンドを使用して、スナップショットをバックアップします。


    # tar cvf /dev/rmt/0 .
    

UFS スナップショットのバックアップからのデータの復元

仮想デバイスから作成されたバックアップは、基本的には、スナップショットがとられた時点でのオリジナルのファイルシステムの状態を表しています。ファイルシステムをバックアップから復元する場合は、オリジナルのファイルシステムから直接そのバックアップを作成した (たとえば ufsrestore コマンドを使用してバックアップを実行した) かのように復元します。ufsrestore コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 49 章「ファイルとファイルシステムの復元 (手順)」を参照してください。