Solaris のシステム管理 (第 1 巻)

ufsdump の機能

ufsdump コマンドは、ファイルシステムのバックアップを作成するときに 2 つのパスを作成します。最初のパスでは、ufsdump は raw デバイスファイル内でファイルシステムを走査し、メモリー内にディレクトリとファイルのテーブルを作成します。次に、そのテーブルをバックアップ媒体に書き込みます。2 つ目のパスでは、ufsdump は i ノードに番号順にアクセスし、ファイルの内容を読み込んで媒体に書き込みます。

デバイス特性の判断

ufsdump コマンドに必要なことは、適切なブロックの大きさを認識することと、どのようにして媒体の終りを検出するかということです。

媒体の終りの検出

ufsdump は一連の固定長レコードを書き込みます。レコードの一部にしか書き込まれていないという通知を受け取ると、ufsdump は媒体の物理的な終りに達したものと想定します。この方法は、ほとんどのデバイスに有効です。部分的なレコードしか書き込まれなかったことをデバイスが ufsdump に通知できない場合は、 ufsdump が書き込もうとすると媒体エラーが発生します。


注 -

DAT デバイスと 8mm テープデバイスでは、媒体の終りが検出されます。カートリッジテープデバイスと 1/2 インチテープデバイスでは、媒体の終りは検出されません。


ufsdump データのコピー

ufsdump コマンドは、raw ディスクスライスからデータのみをコピーします。ファイルシステムがまだ有効であれば、メモリーバッファー内のデータがコピーされていない可能性があります。ufsdump によるバックアップでは、空きブロックはコピーされず、ディスクスライスのイメージも作成されません。シンボリックリンクが他のスライス上のファイルを指す場合は、リンク自体がコピーされます。

/etc/dumpdates ファイルの役割

ufsdump コマンドを -u オプション付きで使用すると、/etc/dumpdates というファイルを管理し、更新できます。/etc/dumpdates 内の各行は、バックアップが作成されたファイルシステム、前回のバックアップレベル、バックアップ日時と曜日を表しています。次の例は、ファイルサーバーからの典型的な /etc/dumpdates ファイルを示しています。


/dev/rdsk/c0t0d0s0               9 Tue Jul 13 10:58:12 1999
/dev/rdsk/c0t0d0s0               0 Tue Jul 13 10:46:09 1999
/dev/rdsk/c0t0d0s1               0 Tue Jul 13 13:41:04 1999

増分バックアップを実行するときに、ufsdump コマンドは /etc/dumpdates を検索して、下のレベルの最後のバックアップ日付を調べます。次に、下のレベルのバックアップ以降に更新されたすべてのファイルを媒体にコピーします。バックアップが完了すると、完了したばかりのバックアップを記述する新しい情報行によって、そのレベルの最後のバックアップの情報行が置き換えられます。

/etc/dumpdates ファイルを使用して、バックアップが実行中であるかどうかを検査してください。機器に問題が発生している場合は、この検査が特に重要です。機器の障害が原因でバックアップを完了できないと、そのバックアップは /etc/dumpdates ファイルに記録されません。

ディスク全体を復元する必要があれば、/etc/dumpdates ファイル内で最後のバックアップの日付とレベルをチェックできるので、ファイルシステム全体を復元するために必要なファイルを判断できます。


注 -

/etc/dumpdates ファイルは編集可能なテキストファイルですが、編集するかどうかはユーザーの判断によります。ファイルに変更を加えた結果、アーカイブテープと一致しなくなると、必要なテープ (またはファイル) がどれであるか分からなくなることがあります。


バックアップデバイス (dump-file) 引数

dump-file 引数 (-f オプションで使用) では、バックアップ先を指定します。次のいずれかを指定できます。

この引数は、バックアップ先がデフォルトのローカルテープドライブ /dev/rmt/0 でないときに使用します。-f オプションを使用する場合は、dump-file の値を指定しなければなりません。


注 -

また、dump-file 引数では、ローカルディスクまたはリモートディスク上のファイルを指すこともできるので、誤用するとファイルシステムがいっぱいになる可能性があります。


ローカルのテープドライブまたはフロッピーディスクドライブ

通常、dump-file ではテープドライブかフロッピーディスクドライブの raw デバイスファイルを指定します。ufsdump が出力デバイスに書き込むときには、バックアップファイルを 1 つ作成しますが、このファイルは複数のテープやフロッピーディスクにまたがってもかまいません。

デバイスの省略形を使用して、システム上のテープデバイスかフロッピーディスクデバイスを指定します。第 1 のデバイスは常に 0 です。たとえば、SCSI テープコントローラが 1 つと、中密度のフォーマットを使用する QIC-24 テープドライブが 1 つある場合は、次のデバイス名を使用します。

/dev/rmt/0m

テープデバイス名を指定するときは、名前の末尾に文字 "-n" を付けて、バックアップの完了後にテープドライブを巻き戻さないように指定することもできます。たとえば、次のように入力します。

/dev/rmt/0mn

テープに複数のファイルを格納したい場合は、"no-rewind" オプションを使用します。バックアップ中に領域を使い果たすと、ufsdump から新しいテープの挿入を促すプロンプトが表示されるまで、テープは巻き戻されません。デバイスの命名規則についての詳細は、「バックアップデバイス名」を参照してください。

リモートのテープドライブまたはフロッピーディスクドライブ

host:device という形式で、リモートのテープドライブまたはフロッピーディスクドライブを指定します。ローカルシステム上の root ユーザーがリモートシステムへのアクセス権を持っていれば、ufsdump はリモートデバイスに書き込みます。通常、root ユーザーとして ufsdump を実行するのであれば、ルートシステム名がリモートシステムの /.rhosts ファイルに記述されている必要があります。デバイスを user@host:device と指定した場合、ufsdump は指定されたユーザーとしてリモートシステム上でデバイスにアクセスしようとします。この場合、指定されたユーザーの名前が、リモートシステム上の .rhosts ファイル中に含まれている必要があります。

デバイスには、ufsdump コマンドを実行するシステムではなく、そのデバイスが存在するシステムのオペレーティングシステムに合った命名規則を使用してください。デバイスが SunOS の旧バージョン (4.1.1 など) を実行するシステム上にある場合は、SunOS 4.1 でのデバイス名 (/dev/rst0 など) を使用します。システムが Solaris ソフトウェアを実行中の場合は、SunOS 5.8 でのデバイス名 (/dev/rmt/0) を使用します。


注 -

dump-file 引数を使用して、リモートデバイスを明示的に指定しなければなりません。SunOS の旧バージョンでは、rdump コマンドは出力を dumphost 別名で定義されたリモートデバイスに送っていました。ufsdump にはそれに相当する rufsdump がありません。


ufsdump で標準出力を使用する

dump-file 引数としてダッシュ (-) を指定すると、ufsdump は標準出力に書き込みます。


注 -

dump-file 引数として標準出力を指定すると、-v オプション (検査) は機能しません。


ufsdump コマンドを使用して標準出力に書き込み、ufsrestore コマンドを使用して標準入力から読み込むと、パイプライン内でファイルシステムをコピーできます。次のようになります。


# ufsdump 0f - /dev/rdsk/c0t0d0s7 | (cd /home; ufsrestore xf -)

バックアップを作成するファイルを指定する

コマンド行の最後の引数として、必ずバックアップするファイル (files-to-back-up) を指定しなければなりません。この引数は、バックアップのコピー元または内容を指定します。通常はファイルシステムを識別しますが、個々のファイルやディレクトリを識別することもできます。

ファイルシステムの場合は、ディスクスライスの raw デバイスファイルを指定します。これには、ファイルコントローラの省略形 (c)、SCSI デバイス専用のターゲット番号 (t)、ディスク番号 (d) とスライス番号 (s) の識別番号が含まれます。たとえば、スタンドアロンシステム (またはサーバー) 上に SCSI ディスクコントローラがあり、スライス 6 に入っている /usr のバックアップを作成したい場合は、デバイスを次のように指定します。

/dev/rdsk/c0t0d0s6

ファイルシステムは、そのエントリが /etc/vfstab ファイルに入っていれば、マウントポイントディレクトリ (/home など) を使用して指定できます。

デバイスの命名規則についての詳細は、「バックアップデバイス名」を参照してください。

個々のファイルやディレクトリごとに、1 つまたは複数の名前を空白で区切って入力します。


注 -

ufsdump を使用して (ファイルシステム全体ではなく) 1 つまたは複数のディレクトリまたはファイルのバックアップを作成するときには、レベル 0 のバックアップが実行されます。増分バックアップは適用されません。


媒体の終りの検出

ufsdump は、ほとんどのデバイスの媒体の終りを自動的に検出します。したがって、通常は -c-d-s-t オプションを使用しなくても、複数のボリュームのバックアップを実行できます。

媒体の終りオプションを使用する必要があるのは、デバイスによる媒体の終りの検出方法が ufsdump で認識されないときや、restore コマンドの旧バージョンを使用してシステム上のファイルを復元しようとしているときです。restore コマンドの旧バージョンとの互換性を確保するために、サイズオプションを使用すると、従来どおり、現在のテープやフロッピーディスクの終りに達する前に、ufsdump を次のテープやフロッピーディスクに強制的に進ませることができます。

テープの性質を指定する

テープの性質を指定しなければ、ufsdump コマンドはデフォルト設定を使用します。テープカートリッジ (-c)、密度 (-d)、サイズ (-s)、トラック数 (-t) を指定できます。オプションの順序とその引数の順番が一致していれば、オプションはいくつでも指定できます。

ufsdump の制限

表 45-1 に、ufsdump コマンドでは実行できない作業を示します。

表 45-1 ufsdump で実行できない作業

実行できない作業 

備考 

ファイルシステムのバックアップに必要なテープやフロッピーディスクの数を自動的に計算する。 

仮実行 (ドライラン) モード (S オプション) を使用すると、実際にファイルシステムをバックアップする前に必要な容量を判断できる。 

アクティブなファイルシステムをバックアップするときの問題を最小限度に抑えるために、組み込みエラーチェック機能を提供する。 

サーバーからリモートにマウントされたファイルをバックアップする。 

サーバー上のファイルのバックアップは、そのサーバー上で実行しなければならない。ユーザーがサーバー上で所有するファイル上で ufsdump を実行するアクセス権は拒否される。