この章では、UFS スナップショットの作成およびバックアップ方法について説明します。
UFS スナップショットの作成に関連した手順については、UFS スナップショットの使用 (作業マップ)を参照してください。
バックアップの実行方法の概要については、第 46 章「ファイルシステムのバックアップと復元 (概要)」を参照してください。
作業 |
説明 |
参照先 |
---|---|---|
1. UFS スナップショットを作成する。 |
fssnap コマンドを使用して、ファイルシステムの読み取り専用コピーを作成する。 | |
2. UFS スナップショットの情報を表示する。 |
UFS スナップショット情報 (raw スナップショットデバイスなど) を確認する。 | |
3. (省略可能) UFS スナップショットを削除する。 |
バックアップ済みまたは不要になったスナップショットを削除する。 | |
4. UFS スナップショットをバックアップする。 |
次の方法のいずれかを選択する。 |
|
|
ufsdump コマンドを使用して、UFS スナップショットの完全バックアップを作成する。 | |
|
ufsdump コマンドを使用して、UFS スナップショットの増分バックアップを作成する。
| |
|
tar コマンドを使用して、UFS スナップショットのバックアップを作成する。 | |
5. (省略可能) UFS スナップショットからデータを復元する。 |
ufsrestore コマンドを使用して、データを復元するのと同じ方法で、UFS スナップショットを復元する。 |
Solaris リリースには、ファイルシステムのマウント中にファイルシステムをバックアップするための、fssnap コマンドが含まれています。fssnap コマンドを使用して、ファイルシステムの読み取り専用のスナップショットを作成することができます。「スナップショット」は、バックアップ操作のためのファイルシステムの一時的イメージです。
fssnap コマンドを実行すると、1 つの仮想デバイスと 1 つのバッキングストアファイルが作成されます。ユーザーは、既存の Solaris バックアップコマンドを使用して、実際のデバイスのように動作し実際のデバイスのように見える「仮想デバイス」をバックアップすることができます。「バッキングストア (backing-store)」ファイルは、スナップショット作成後に変更されたデータのコピーを含むビットマップファイルです。
UFS スナップショット機能を使用することで、バックアップ時に、ファイルシステムをマウントされた状態にし、システムをマルチユーザーモードにしておくことができます。これまでは、バックアップを実行するために ufsdump コマンドを使用する時は、ファイルシステムをアクティブでない状態に保つためにシステムをシングルユーザーモードにすることが推奨されていました。より確実なバックアップのために、tar や cpio などの追加の 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 スナップショットの初回作成時に、ファイルシステムのユーザーが短い一時停止に気づく場合があります。一時停止の時間は、取り込まれるファイルシステムのサイズに応じて増加します。スナップショットがアクティブな間、ファイルシステムへの書き込み時にユーザーが若干のパフォーマンス低下に気づく場合がありますが、ファイルシステムからの読み込み時には影響はありません。
fssnap コマンドを使用して UFS スナップショットを作成する場合、バッキングストアファイルがどれだけのディスク容量を消費するかを監視してください。バッキングストアファイルは、はじめは容量をまったく使用しませんが、その後特によく使用されているシステムにおいて急速に拡大します。バッキングストアファイルが拡大するのに十分な容量を必ず確保してください。または -o maxsize=n [k,m,g] オプション (n [k,m,g] はバッキングストアファイルの最大限のサイズ) でそのサイズを制限してください。
バッキングストアファイルに容量が不足する場合、スナップショットが削除されてしまうことがあり、バックアップが失敗します。スナップショットのエラーの可能性を調べるため、/var/adm/messages ファイルをチェックしてください。
詳細は、fssnap_ufs(1M) のマニュアルページを参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
ファイルシステムに、バッキングストアファイル用の十分なディスク容量が存在することを確認してください。
# df -k |
同じ場所に同じ名前の既存のバッキングストアファイルが存在していないことを確認します。
# ls /backing-store-file |
UFS スナップショットを作成します。
# fssnap -F ufs -o bs=/backing-store-file /file-system |
バッキングストアファイルは、UFS スナップショットを使用して取り込むファイルシステムとは異なるファイルシステムに存在する必要があります。
スナップショットが作成されたことを確認します。
# /usr/lib/fs/ufs/fssnap -i /file-system |
次の例は、/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 |
fssnap -i オプションを使用すると、システムの現在のスナップショットを表示することができます。1 つのファイルシステムを指定する場合、そのスナップショットについての詳細な情報が表示されます。特定のファイルシステムを指定しない場合は、現在の UFS スナップショットすべておよび対応する仮想デバイスの情報が表示されます。
次の例に示すように、拡張スナップショット情報を表示する場合は、UFS ファイルシステム固有の fssnap コマンドを使用してください。
スーパーユーザーになるか、同等の役割を引き受けます。
現在のすべてのスナップショットをリスト表示します。
たとえば、次のようになります。
# /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 |
特定のスナップショットについての詳細な情報を表示します。
たとえば、次のようになります。
# /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 スナップショットを作成する際に -o unlink オプションを指定しない場合は、後でバッキングストアファイルを手動で削除する必要があります。
バッキングストアファイルは、バッキングストアファイルの削除に -o unlink オプションを使用した場合はスナップショットが削除されるまで、またはバッキングストアファイルを手動で削除するまで、ディスク容量を使用します。
スナップショットは、システムをリブートするか、あるいは fssnap -d コマンドを使用して削除できます。このコマンドを使用するときには、UFS スナップショットを含むファイルシステムのパスを指定する必要があります。
スーパーユーザーになるか、同等の役割を引き受けます。
削除するスナップショットを特定します。
# /usr/lib/fs/ufs/fssnap -i |
スナップショットを削除します。
# fssnap -d /file-system Deleted snapshot 1. |
(省略可能) スナップショットの作成時に -o unlink オプションを使用しなかった場合は、そのバッキングストアファイルを手動で削除してください。
# rm /file-system/backing-store-file |
次の例は、-o unlink オプションを使用しなかった場合に、スナップショットを削除する方法を示します。
# fssnap -i 0 / 1 /usr # fssnap -d /usr Deleted snapshot 1. # rm /scratch/usr.back.file |
UFS スナップショットの完全バックアップまたは増分バックアップを作成できます。UFS スナップショットのバックアップ作成に、標準の Solaris バックアップコマンドを使用できます。
UFS スナップショットを含む仮想デバイスは、標準の読み取り専用デバイスとして動作します。つまり、仮想デバイスを、ファイルシステムのデバイスをバックアップするかのようにバックアップできます。
ufsdump コマンドを使用して UFS スナップショットをバックアップする場合、バックアップ時にスナップショットの名前を指定することができます。詳細については、次の手順を参照してください。
バックアップする 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 |
UFS スナップショットをバックアップします。
# ufsdump 0ucf /dev/rmt/0 /snapshot-name |
たとえば、次のようになります。
# ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1 |
スナップショットがバックアップされたことを確認します。
たとえば、次のようになります。
# ufsrestore tf /dev/rmt/0 |
UFS スナップショットの増分バックアップでは、最後のスナップショット以降に変更のあったファイルだけがバックアップされます。ufsdump コマンドと新規 N オプションを組み合わせて使用します。このオプションは、増分ダンプをトラックするために /etc/dumpdates ファイルに挿入されるファイルシステムのデバイス名を指定します。
次の例では、ufsdump コマンド内で fssnap コマンドを組み込んでファイルシステムの増分バックアップを作成しています。
スーパーユーザーになるか、同等の役割を引き受けます。
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 コマンドなど) に組み込むことが容易になります。
スナップショットがバックアップされたことを確認します。
# ufsrestore ta /dev/rmt/0 |
tar コマンドを使用してスナップショットをバックアップする場合、バックアップを行う前にスナップショットをマウントします。
スーパーユーザーになるか、同等の役割を引き受けます。
スナップショット用のマウントポイントを作成します。
たとえば、次のようになります。
# mkdir /backups/home.bkup |
スナップショットをマウントします。
# mount -F ufs -o ro /dev/fssnap/1 /backups/home.bkup |
マウントスナップショットのディレクトリに移動します。
# cd /backups/home.bkup |
tar コマンドを使用して、スナップショットをバックアップします。
# tar cvf /dev/rmt/0 . |
仮想デバイスから作成されたバックアップは、基本的には、スナップショットがとられた時点でのオリジナルのファイルシステムの状態を表しています。ファイルシステムをバックアップから復元する場合は、オリジナルのファイルシステムから直接そのバックアップを作成した (たとえば ufsrestore コマンドを使用してバックアップを実行した) かのように復元します。ufsrestore コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 49 章「ファイルとファイルシステムの復元 (手順)」を参照してください。