この章では、UFS スナップショットの作成およびバックアップ方法について説明します。
UFS スナップショットの作成に関連した手順については、「UFS スナップショットの使用 (作業マップ)」を参照してください。
バックアップの実行方法の概要については、第 23 章UFS ファイルシステムのバックアップと復元 (概要)を参照してください。
作業 |
説明 |
参照先 |
---|---|---|
1. UFS スナップショットを作成します。 |
fssnap コマンドを使用して、ファイルシステムの読み取り専用コピーを作成します。 | |
2. UFS スナップショットの情報を表示します。 |
UFS スナップショット情報 (raw スナップショットデバイスなど) を確認します。 | |
3. (省略可能) UFS スナップショットを削除します。 |
バックアップ済みまたは不要になったスナップショットを削除します。 | |
4. (省略可能) UFS スナップショットのバックアップを作成します。 |
次の方法のいずれかを選択します。 |
|
|
ufsdump コマンドを使用して、UFS スナップショットの完全バックアップを作成します。 | |
|
ufsdump コマンドを使用して、UFS スナップショットの増分バックアップを作成します。
| |
|
tar コマンドを使用して、UFS スナップショットのバックアップを作成します。 | |
5. (省略可能) UFS スナップショットからデータを復元します。 |
ufsrestore コマンドを使用して、データを復元するのと同じ方法で、UFS スナップショットを復元します。 |
fssnap コマンドを使って、ファイルシステムをマウントした状態で、そのバックアップを作成できます。作成されるのは、ファイルシステムの読み取り専用スナップショットです。「スナップショット」は、バックアップ操作のためのファイルシステムの一時イメージです。
fssnap コマンドを実行すると、1 つの仮想デバイスと 1 つのバッキングストアファイルが作成されます。ユーザーは、既存の Solaris バックアップコマンドを使用して、実際のデバイスのように動作し実際のデバイスのように見える「仮想デバイス」をバックアップできます。「バッキングストアファイル」は、スナップショット作成後に変更されたデータのコピーを含むビットマップファイルです。
バッキングストアファイルを指定する際には、次の注意点に留意してください。
バッキングストアファイルの格納先は、対象ファイルシステムのデータを格納できるだけの空き容量を備えている必要があります。バッキングストアファイルのサイズは、対象ファイルシステム上における活動量に応じて変わります。
バッキングストアファイルの格納場所は、スナップショット作成対象のファイルシステム上であってはなりません。
バッキングストアファイルの格納場所としては、別の UFS ファイルシステムや NFS ファイルシステムなど、任意の種類のファイルシステムを選択可能です。
512G バイトを超える UFS ファイルシステムのスナップショットを作成する場合、複数のバッキングストアファイルが作成されます。
バッキングストアファイルは空白ファイルです。ls コマンドで表示される空白ファイルの論理サイズは、du コマンドで表示されるその割り当て容量と同一ではありません。
512G バイトを超える UFS ファイルシステムのスナップショットを作成する方法の詳細は、「マルチテラバイト UFS のスナップショットの作成」を参照してください。
UFS スナップショット機能により、ファイルシステムのバックアップがより利用しやすく、簡単になりました。この機能を利用すれば、ファイルシステムをマウントした状態でバックアップを作成できます。また、このときマルチユーザーモードを保持できます。さらに、長期保存が必要な場合は、tar や cpio コマンドを使って、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 スナップショットの初回作成時に、ファイルシステムのユーザーが短い一時停止に気づく場合があります。一時停止の時間は、取り込まれるファイルシステムのサイズに応じて増加します。スナップショットがアクティブな間、ファイルシステムの書き込み中、パフォーマンスに若干の影響が出る可能性があります。ただし、ファイルシステムの読み込み中には、このような影響はありません。
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 ファイルシステムに対するスナップショットの作成とほとんど同じです。唯一の違いは、ファイルシステム領域の 512G バイトごとにバッキングストアファイルが作成されるという点です。
512G バイトを超えるファイルシステムのスナップショットを作成する際には、次の注意点に留意してください。
複数のバッキングストアファイルが作成されます。
スナップショットの作成時にバッキングストアファイル名を指定した場合、その指定されたファイル名に基づく名前が後続のバッキングストアファイルに繰り返し付けられます。後続のバッキングストアファイルには同じ名前が付けられますが、「.2」、「.3」などの接尾辞がそれぞれ付加されます。
バッキングストアの名前は指定せず、その格納先 (ディレクトリ) だけを指定した場合、複数のバッキングストアファイル名が、「.2」、「.3」などの接尾辞付きで繰り返し作成されます。
複数のバッキングストアファイルが作成された場合でも、fssnap -i コマンドの実行時に表示されるのは、最初のバッキングストアファイルの名前だけです。これに対し、バッキングストア長として表示されるのは、スナップショットのすべてのバッキングストアファイルの合計サイズです。
バッキングストアファイルは空白ファイルです。ls コマンドで表示される空白ファイルの論理サイズは、du コマンドで表示されるその割り当て容量と同一ではありません。
スナップショットの作成時に unlink オプションを指定しなかった場合、スナップショットのバックアップ完了後や単にスナップショットを削除するときに、バッキングストアファイルを手動で削除する必要があります。
512G バイトを超えるファイルシステムのスナップショットの作成例については、例 25–2 を参照してください。
詳細は、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 /usr /dev/fssnap/1 |
次の例は、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 |
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 : /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 |
特定のスナップショットについての詳細な情報を表示します。
次に例を示します。
# /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 スナップショットを作成する際に -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 /export/home 1 /export # fssnap -d /export Deleted snapshot 1. # rm /var/tmp/snapshot1 |
UFS スナップショットの完全バックアップまたは増分バックアップを作成できます。UFS スナップショットのバックアップ作成に、標準の Solaris バックアップコマンドを使用できます。
UFS スナップショットを含む仮想デバイスは、標準の読み取り専用デバイスとして動作します。つまり、仮想デバイスを、ファイルシステムのデバイスをバックアップするかのようにバックアップできます。
ufsdump コマンドを使用して UFS スナップショットをバックアップする場合、バックアップ時にスナップショットの名前を指定できます。詳細は、次の手順を参照してください。
バックアップする 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 |
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 オプションが使用されています。このオプションの使用により、raw デバイスを必要とするコマンド (ufsdump コマンドなど) に fssnap コマンドを組み込むことが簡単になります。
スナップショットのバックアップが作成されたことを確認します。
# 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 コマンドを使用してファイルまたはファイルシステムを復元する方法については、第 26 章UFS ファイルとファイルシステムの復元 (手順)を参照してください。