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

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

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

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

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

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 9 には、ファイルシステムのマウント中にファイルシステムをバックアップするための、fssnap コマンドが含まれています。

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

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

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

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

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

UFS スナップショットは、Instant Image 製品に似ています。Instant Image は、取り込まれるファイルシステム全体のサイズに等しいスペースを割り当てます。ただし、UFS スナップショットが作成するバッキングストアファイルは、必要なディスクスペースの容量しか占有しないため、バッキングストアファイルのサイズに上限を設定することも可能です。

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

UFS スナップショット 

Instant Image 

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

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

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

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

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

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

Solaris 8 1/01、4/01、7/01、10/01、10/02 リリースおよび Solaris 9 リリースの一部 

Sun StorEdge 製品の一部 

UFS スナップショットは大規模なファイルシステムをコピーすることができますが、企業レベルのシステムには Instant Image の方が適しています。UFS スナップショットは、小さめのシステムに適しています。

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
    

    注 -

    バッキングストアファイルは、スナップショットを作成するファイルシステムとは異なるファイルシステムに存在する必要があります。


  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

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


# 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                   : /export/home
    Device state                  : idle
    Backing store path            : /var/tmp/bs.file
    Backing store size            : 0 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Aug 29 15:22:06 2001
    Copy-on-write granularity     : 32 KB

    特定の 1 つのスナップショットについての詳細な情報を表示する場合は、次のように実行します。


    # /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/bs.file
    Backing store size            : 0 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Aug 29 15:23:35 2001
    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 スナップショットの削除

次の例は、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/back.store
    Backing store size            : 576 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Wed Dec 12 09:39:37 2001
    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 コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 48 章「ファイルとファイルシステムの復元 (手順)」を参照してください。