Solaris のシステム管理 (デバイスとファイルシステム)

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

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

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

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

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 ファイルシステム全体を復元する方法」

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

fssnap コマンドを使って、ファイルシステムをマウントした状態で、そのバックアップを作成できます。作成されるのは、ファイルシステムの読み取り専用スナップショットです。「スナップショット」は、バックアップ操作のためのファイルシステムの一時イメージです。

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

バッキングストアファイルを指定する際には、次の注意点に留意してください。

512G バイトを超える UFS ファイルシステムのスナップショットを作成する方法の詳細は、「マルチテラバイト UFS のスナップショットの作成」を参照してください。

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

UFS スナップショット機能により、ファイルシステムのバックアップがより利用しやすく、簡単になりました。この機能を利用すれば、ファイルシステムをマウントした状態でバックアップを作成できます。また、このときマルチユーザーモードを保持できます。さらに、長期保存が必要な場合は、tarcpio コマンドを使って、UFS スナップショットをテープにバックアップすることもできます。ufsdump コマンドでバックアップを実行する場合は、シングルユーザーモードにして、バックアップが完了するまでファイルシステムを非アクティブな状態にする必要があります。

fssnap コマンドは、企業レベルでないシステム管理者に、大規模な記憶容量を必要とせずに、Sun StorEdge 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 ファイルを検査してください。


バッキングストアパスのディレクトリを指定して、バッキングストアファイルは指定のディレクトリに作成することもできます。たとえば、/var/tmp を指定した場合、次のバッキングストアファイルが作成されます。


/var/tmp/snapshot0

/export/home/usr などのファイルシステムを個別に作成する代わりに大容量のルート (/) ファイルシステムを 1 つ作成した場合、これらのファイルシステムのスナップショットを個別に作成することはできません。たとえば、このシステムは、/usr 用の個別のファイルシステムを持ちません。次の Mounted on カラムの下を参照してください。


# df -k /usr
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t0d0s0    3618177 2190002 1391994    62%    /

/usr ファイルシステムのスナップショットを作成しようとすると、次のようなメッセージが表示されます。


# fssnap -F ufs -o bs=/snaps/usr.back.file /usr
snapshot error: Invalid backing file path

ここで、スナップショットを作成するファイルシステム (この例の場合、/usr ファイルシステム) 上にバッキングストアファイルを作成することはできません。

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

マルチテラバイト UFS のスナップショットの作成

マルチテラバイト UFS のスナップショットの作成は、より小さいサイズの UFS ファイルシステムに対するスナップショットの作成とほとんど同じです。唯一の違いは、ファイルシステム領域の 512G バイトごとにバッキングストアファイルが作成されるという点です。

512G バイトを超えるファイルシステムのスナップショットを作成する際には、次の注意点に留意してください。

512G バイトを超えるファイルシステムのスナップショットの作成例については、例 25–2 を参照してください。

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

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

  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
    

例 25–1 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 /usr 
/dev/fssnap/1


例 25–2 マルチテラバイト UFS のスナップショットの作成

次の例は、1.6T バイトの UFS ファイルシステムのスナップショットの作成方法を示しています。


# fssnap -F ufs -o bs=/var/tmp /datab
/dev/fssnap/2
# /usr/lib/fs/ufs/fssnap -i /datab
Snapshot number               : 2
Block Device                  : /dev/fssnap/2
Raw Device                    : /dev/rfssnap/2
Mount point                   : /datab
Device state                  : idle
Backing store path            : /var/tmp/snapshot3
Backing store size            : 0 KB
Maximum backing store size    : Unlimited
Snapshot create time          : Mon Jul 12 10:37:50 2010
Copy-on-write granularity     : 32 KB

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

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/snapshot0
    Backing store size            : 0 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Mon Jul 12 10:37:50 2010
    Copy-on-write granularity     : 32 KB
  3. 特定のスナップショットについての詳細な情報を表示します。

    次に例を示します。


    # /usr/lib/fs/ufs/fssnap -i /export
    Snapshot number               : 1
    Block Device                  : /dev/fssnap/1
    Raw Device                    : /dev/rfssnap/1
    Mount point                   : /export
    Device state                  : idle
    Backing store path            : /var/tmp/snapshot1
    Backing store size            : 0 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Mon Jul 12 10:37:50 2010
    Copy-on-write granularity     : 32 KB

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

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

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

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

スナップショットは、システムをリブートするか、あるいは 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
    

例 25–3 UFS スナップショットの削除

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


# fssnap -i
    0    /export/home
    1    /export
   # fssnap -d /export
 Deleted snapshot 1.
# rm /var/tmp/snapshot1

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

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

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

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

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

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

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


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

    次に例を示します。


    # /usr/lib/fs/ufs/fssnap -i /usr
    Snapshot number               : 1
    Block Device                  : /dev/fssnap/1
    Raw Device                    : /dev/rfssnap/1
    Mount point                   : /usr
    Device state                  : idle
    Backing store path            : /var/tmp/snapshot2
    Backing store size            : 544 KB
    Maximum backing store size    : Unlimited
    Snapshot create time          : Mon Jul 12 10:37:50 2010
    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
    

ProcedureUFS スナップショットの増分バックアップの作成方法 (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 オプションが使用されています。このオプションの使用により、raw デバイスを必要とするコマンド (ufsdump コマンドなど) に fssnap コマンドを組み込むことが簡単になります。

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


    # ufsrestore ta /dev/rmt/0
    

ProcedureUFS スナップショットのバックアップ方法 (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 コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 26 章UFS ファイルとファイルシステムの復元 (手順)を参照してください。