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 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 以降のリリース 

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

次の例は、バッキングストアファイルを 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                   : /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 コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 49 章「ファイルとファイルシステムの復元 (手順)」を参照してください。