この章では、NIS+ 名前空間のバックアップ方法と復元方法について説明します。
NIS+ のバックアップ機能と復元機能を使用すると、NIS+ 名前空間の保存と復元を素早く簡単に行うことができます。また、これらの機能を使用すると、新しい複製サーバーを簡単に作成でき、さらにそのサーバーをオンラインにするためにかかる時間を削減できます。これらのタスクは、次の 2 種類のコマンドを使用して実行します。
nisbackup. NIS+ ディレクトリオブジェクトをバックアップする
nisrestore. NIS+ ディレクトリオブジェクトを復元する
NIS+ は、将来のリリースではサポートされなくなる可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 リリース以降で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。
nisbackup コマンドは、1 つまたは複数の NIS+ ディレクトリオブジェクト、または 1 つの名前空間全体を、指定した UNIX ファイルシステムのディレクトリにバックアップします。
nisbackup コマンドは、必ずマスターサーバー上で実行してください。複製サーバー上では絶対に実行しないでください。
nisbackup コマンドは、バックアップコマンドが動作するように設定された時点の NIS+ 名前空間をコピーします。この記録には、現行のすべての NIS+ データと、認証されたネットワーク管理者が NIS+ 名前空間に入力した変更が含まれます。ただし、まだ NIS+ テーブルにチェックポイントされていない (NIS+ テーブルに記入されていない) ものは除きます。このバックアップ処理は、NIS+ データのチェックや訂正は行いません。テーブル内のデータが破壊されると、破壊されたデータは、有効なデータと見分けがつかない状態にバックアップされます。
nisbackup コマンドは、マシンがそのマスターサーバーであるディレクトリオブジェクトだけをバックアップします。つまり、nisbackup は、マスターサーバー上でだけ使用でき、複製サーバー上では使用できません。
マシンが、ドメインとサブドメイン両方の NIS+ ディレクトリオブジェクトのマスターサーバーである場合、nisbackup をこのマシン上で実行するとドメインとサブドメイン両方のディレクトリオブジェクトをバックアップできます。
ただし、マシンが、1 つのディレクトリオブジェクトのマスターサーバーで、さらに別のディレクトリオブジェクトの複製サーバーである場合、nisbackup を実行してそのマシンがマスターサーバーであるディレクトリオブジェクトをバックアップできますが、複製サーバーのオブジェクトはバックアップされません。
バックアップ処理が、ほかの処理に割り込まれたり、またはその処理を正常に終了できない場合は、処理を停止し、転送先ディレクトリ内に格納された以前のバックアップファイルをすべて復元します。
nisbackup コマンドで使用する構文は、次のとおりです。
nisbackup [-v][-a] backupdir objects |
引数の意味はそれぞれ以下のとおりです。
backupdir には、バックアップファイルを格納する転送先ディレクトリが入ります。たとえば、/var/master1_bakup です。
objects には、バックアップする NIS+ ディレクトリオブジェクトが入ります。たとえば、org_dir.doc.com です。複数の NIS+ ディレクトリオブジェクトを、スペースで区切って入れることができます。
nisbackup コマンドには、次のようなオプションを指定できます。
表 21–1 nisrestore コマンドのオプション
オプション |
目的 |
---|---|
-v |
冗長モード。このモードは、追加情報を出力する |
-a |
すべて。サーバーがマスターである NIS+ ディレクトリオブジェクトをすべてバックアップする。これには、このサーバーがマスターであるサブドメインのディレクトリオブジェクトも含まれる。ただし、ほかのマスターサーバーを持つサブドメインのディレクトリオブジェクトはバックアップされない |
nisbackup コマンドは、バックアップする NIS+ ディレクトリオブジェクトのマスターサーバー上で実行する必要があります。
バックアップする NIS+ ディレクトリオブジェクトを指定する場合、そのディレクトリ名には完全指定名、または部分指定名を使用できます。
マルチレベルディレクトリをバックアップする場合、下位ディレクトリのバックアップファイルは、自動的にバックアップ転送先ディレクトリのサブディレクトリ内に配置されます。
nisbackup を使用する場合、nisbackup はサーバー固有のコマンドであることに注意してください。-a オプションを使用するかどうかに関係なく、nisbackup は、このコマンドを実行中のサーバーがマスターサーバーであるディレクトリだけをバックアップします。ほかにマスターサーバーを持つ NIS+ ディレクトリオブジェクトは、バックアップされません。
たとえば、submaster1 は、sales.doc.com. ディレクトリオブジェクトのマスターサーバーで、さらに west.sales.doc.com. ディレクトリオブジェクトの複製サーバーでもあるとします。この場合、submaster1 上で nisbackup を実行すると、sales.doc.com. ディレクトリオブジェクトだけがバックアップされます。
このサーバー固有の原則には次のものがあります。
「全 NIS+ 名前空間」。複数のドメインのすべての名前空間に、NIS+ バックアップを実行する場合で、ルートマスターサーバーが全サブドメインのマスターサーバーでもある場合は、ルートマスター上で nisbackup に -a オプションを指定して実行します。ただし、スーパーユーザーのマスターサーバーが、すべてのサブドメインのマスターサーバーでない場合は、すべての名前空間のバックアップを完全に実施するために、nisbackup をほかのマスターサーバー上でも実行する必要があります。
「サブドメイン」。1 つまたは複数のサブドメインの NIS+ バックアップを実行する場合、サブドメインのマスターサーバー上で nisbackup を実行する必要があります。ルートマスターなどの 1 つのマシンが、1 つまたは複数のサブドメインのマスターでもある場合、そのマシン上で nisbackup に -a オプションを指定して実行します。
バックアップ転送先ディレクトリは、バックアップ対象のサーバーが使用できるものでなければなりませんが、サーバー上に物理的にマウントしていない転送先ディレクトリを使用するのも良い方法です。この場合、サーバーがダメージを受けても、バックアップディレクトリは使用可能です。
独立した転送先ディレクトリは、バックアップ対象となるマスターサーバーごとに使用する必要があります。混乱を避けるために、マスターサーバーのマシン名を転送先ディレクトリ内に組み込むと良いでしょう。たとえば、master1 マシン上で実行した nisbackup の転送先ディレクトリは、/var/master1_bakup という名前にします。
指定した 1 つの転送先ディレクトリに対して、複数のサーバーをバックアップしないでください。異なるマスターサーバーには、必ず、異なる転送先ディレクトリを使用してください。それは、指定した転送先ディレクトリに、1 つまたは複数の NIS+ ディレクトリオブジェクトをバックアップするたびに、このディレクト内のこれらの NIS+ ディレクトリオブジェクト用のそれ以前のバックアップファイルが上書きされるからです。
バックアップファイルを日付順に保存するには、少なくとも次の 2 つの方法があります。
「別々の転送先ディレクトリとして保存」。異なる転送先ディレクトリは、バックアップした日付ごとに保持できます。たとえば、/var/master1_bakup/July14、/var/master1_bakup/July15、など。この方法は簡単ですが、ディスク領域がかなり必要です。
「ファイルシステムのバックアップ」。NIS+ バックアップを日付順に保存するもっとも一般的な方法は、使用する通常ファイルシステムのバックアップメソッドに、バックアップ転送先ディレクトリを単に組み込むだけの方法です。これを簡単に行うには、nisbackup コマンドを crontab ファイルから実行するか、または Solstice バックアップルーチン内から実行します。nisbackup のようなコマンドを、システムのバックアッププロシージャとして自動的に実行するように指定する方法については、Solstice の説明書を参照してください。
特定の NIS+ ディレクトリオブジェクトをバックアップするには、これらのディレクトリをバックアップ転送先ディレクトリの後ろに入力します。
たとえば、ルート、sales ドメイン、manf ドメインの 3 つの org_dir ディレクトリオブジェクトを /master1_backup ディレクトリにバックアップするには、nisbackup を master1 マシン上で次のように実行します。
master1# nisbackup /var/master1_bakup org_dir org_dir.sales org_dir.manf |
すべての NIS+ 名前空間をバックアップする場合は、ルートマスターサーバー上で、nisbackup コマンドに -a オプションを指定して実行します。
-a オプションを使用する場合は、バックアップする NIS+ ディレクトリオブジェクトは指定しません。サーバー上とそのサーバーの下にあるサブドメインのすべての NIS+ ディレクトリオブジェクトは、自動的にバックアップされます。
たとえば、doc.com. 名前空間を /master1_bakup ディレクトリにバックアップするには、ルートマスター上で、nisbackup を次のように実行してください。
rootmaster# nisbackup -a /var/master1_bakup |
ドメイン上でバックアップを実行すると、バックアップ転送先ディレクトリ内に、NIS+ ディレクトリオブジェクトごとにサブディレクトリが作成されます。これらのサブディレクトリ名は、完全指定の NIS+ ディレクトリオブジェクト名の末尾にピリオドが付いたものになります。
-a オプションを使用して NIS+ オブジェクト全体を完全にバックアップした場合は、3 つの関連ディレクトリオブジェクト (domain.、org_dir.domain.、groups_dir.domain.) がすべてバックアップされ、3 つのターゲットサブディレクトリが作成されます。複数のオブジェクトをバックアップすると、サブディレクトリはバックアップしたそれぞれのオブジェクトごとに作成されます。
複数の NIS+ ディレクトリオブジェクトのバックアップサブディレクトリは、それがサブドメインであるかどうかに関係なく、親バックアップ転送先ディレクトリのサブディレクトリになるので注意してください。つまり、nisbackup は、親バックアップ転送先ディレクトリの下にドメインの階層を複製しません。その代わりに、バックアップサブディレクトリはすべて、転送先ディレクトリの単純なサブディレクトリになります。
たとえば、doc.com. のルート、sales、manf のディレクトリオブジェクトを /var/master1_bakup ディレクトリにバックアップする場合、図 21–1 に示すように、/var/master1_bakup ディレクトリ内には 9 個のサブディレクトリが作成されます。
バックアップ転送先ディレクトリには、この転送先ディレクトリにバックアップされた最新の NIS+ ディレクトリオブジェクトを表示する backup_list ファイルが入っています。
各サブディレクトリには、ファイルが 2 つと /data サブディレクトリが 1 つ組み込まれます。このファイルを次に示します。
data.dictこのディレクトリにバックアップされた NIS+ ディレクトリオブジェクトの NIS+ データ辞書の入った XDR コード化ファイル
last.updこのディレクトリにバックアップされた NIS+ ディレクトリオブジェクトに関する時刻スタンプ情報が入ったバイナリファイル
各 /data サブディレクトリには、1 つまたは複数の以下のファイルが入っています。
root.object。NIS+ ルートディレクトリオブジェクトの説明の入った XDR コード化ファイル。たとえば、/master1_bakup/doc.com/data/root.object
root_dir。これらのオブジェクトのルートディレクトリとサーバー情報内に組み込まれた NIS+ オブジェクトの説明が入った XDR コード化ファイル。たとえば、/master1_bakup/doc.com/data/root_dir
table.directory。バックアップの実行時に、NIS+ テーブル内に表示されていたデータと関連するすべての NIS+ ログファイル内に含まれるデータがすべて入った XDR コード化ファイル。バックアップされた NIS+ ディレクトリオブジェクト内に NIS+ テーブルがある場合、対応する table.directory バックアップファイルが、そのディレクトリオブジェクトの /data サブディレクトリ内に作成される。
たとえば、それぞれの NIS+ org_dir ディレクトリには、hosts テーブルが含まれるため、各 target/org_dir.domain/data サブディレクトリには、hosts.org_dir がある。たとえば、/master1_bakup/org_dir.doc.com./data/hosts.org_dir。
指定したディレクトリオブジェクト内に表示されたユーザー作成の NIS+ テーブルは、標準 NIS+ テーブルとして同じ方法でバックアップされる
NIS+ グループ情報の入った XDR コード化ファイル。このファイルは、対応する NIS+ groups_dir 転送先ディレクトリに格納される
nisrestore コマンドによって、nisbackup を使用して作成したバックアップファイル内に格納されたデータと一致する NIS+ ディレクトリオブジェクトが再現されます。このコマンドを使用すると、NIS+ サーバーの復元、壊れたディレクトリオブジェクトの置換、または新しい NIS+ サーバーに NIS+ データを読み込めます。
nisrestore を使用するには、nisrestore から NIS+ データを受け取るマシンは、NIS+ サーバーとして設定されている必要があります (NIS+ サーバーの設定の詳細については、第 4 章「スクリプトを使用した NIS+ の設定」を参照)。この場合「サーバーが認識している」とは以下のことを意味する
マシンを、NIS+ クライアントとして初期化しておく必要があります。
マシンを NIS 互換モードで実行し、ドメイン名システム (DNS) 転送をサポートする場合は、そのマシンには、適切に構成された /etc/resolv.conf ファイルが必要です。
名前空間内でほかのサーバーが実行中の時、あるサーバーで nisrestore を使用する場合は、nisrestore は、ほかのサーバーを検証して、このサーバーがサーバーに復元するバックアップ NIS+ オブジェクトを配布するように構成されているかどうかを確認します。実行中のサーバーがほかにない場合は、nisrestore に -f オプションを指定して実行する必要があります。つまり、nisrestore がチェックするほかのサーバーがある場合は、-f オプションを使用する必要はありません。また、使用できるサーバーがほかにない場合、たとえば、1 台のマスターサーバーを復元するときに、機能複製サーバーがほかにない場合は、-f オプションを使用する必要があります。
上記の 3 つの前提条件への追加条件として、マシン上で rpc.nisd デーモンを実行しないでください。必要に応じて、NIS+ サービスを停止して rpc.nisd のプロセスを終了してから、nisrestore を実行してください。
nisrestore では、次の構文を使用します。
nisrestore [-fv][-a][-t] backupdir [directory_objects] |
引数の意味はそれぞれ以下のとおりです。
backupdir には、NIS+ オブジェクトの復元に使用するバックアップファイルの入ったディレクトリを入力します (/var/master1_bakup)。たとえば、/var/master1_bakup です。
directory_objects には、復元する NIS+ ディレクトリオブジェクトを入力します (org_dir.doc.com)。たとえば、org_dir.doc.com です。複数の NIS+ ディレクトリオブジェクトを、スペースで区切って入れることができます。nisrestore に -a オプションを指定して実行する場合は、特定のディレクトリオブジェクトは指定しません。
nisrestore コマンドには、以下のオプションを指定できます。
表 21–2 nisrestore コマンドのオプション
オプション |
目的 |
---|---|
-a |
すべて。バックアップディレクトリ内に入っている NIS+ ディレクトリオブジェクトをすべて復元する |
-f |
サーバーが、ディレクトリオブジェクトのサーバーリストに記載されているかどうかを検査せずに、強制的に復元を行う。このオプションは、ルートマスターサーバーを復元する時、または “ オブジェクトを検出できません ” といった種類のエラーを受け取った場合に使用する必要がある |
-v |
冗長モード。このモードは、追加情報を出力する |
-t |
このオプションを使用すると、バックアップディレクトリ内に格納された NIS+ ディレクトリオブジェクトがすべて表示される。オブジェクトの復元は行われない |
NIS+ バックアップファイルから NIS+ データを復元するには、nisrestore コマンドを使用します。
たとえば、org_dir.doc.com. ディレクトリオブジェクトを replica1 サーバーに復元する場合は、root として replica1 にログインし、「nisrestore を実行するための前提条件」で説明した前提条件が満たされていることを確認してから、以下のように nisrestore を実行します。
replica1# nisrestore /var/master1_bakup org_dir.doc.com. |
nisrestore には、以下の項目が適用されます。
「損傷した名前空間」。損傷した、または破壊された NIS+ 名前空間を復元するには、復元する NIS+ ディレクトリオブジェクトのすべてのサーバー上で nisrestore コマンドを実行する必要があります。
「検出エラー」。nisrestore が必要なデータを確認できないか、または検出できないというエラーメッセージを受け取った場合は、-f オプションを使用する必要があります。
たとえば、master1 という名前のルートマスターサーバー上に NIS+ データをロードし直す場合は、次のように入力します。
master1# nisrestore -f -a /var/master1_bakup |
「ディレクトリ名」。復元する NIS+ ディレクトリオブジェクトを指定する場合は、完全指定または部分指定ディレクトリ名を使用します。
NIS+ バックアップおよび復元機能を使用すると、NIS+ データを新しい複製サーバーに速く読み込むことができます。名前空間が広い場合は、この方法の方が、nisping を使用するよりもマスターサーバーからのデータを非常に速く入手できます。
nisbackup と nisrestore を使用して新しい複製サーバーを設定するには、次の手順を行います。
svcadm disable を使用します。この処理は、nisping コマンドを使用した、マスターから複製への名前空間データの自動転送に割り込んで実行されます。
マスターサーバー上で、nisbackup を実行します。
新しい複製サーバー上で nisrestore を実行し、NIS+ データを読み込みます。
新しい複製サーバー上で NIS+ サービスを再起動します。
nisbackup と nisrestore を使用すると、サーバーとして使用中のマシンと別のマシンをすぐに置換できます。たとえば、旧サーバーを新しい高速のサーバーと交換すると、ネットワークのパフォーマンスを向上させることができます。
NIS+ サーバーとして使用中のマシンをほかのマシンに置き換える場合には、次の条件が必要です。
新しいマシンには、置換する旧マシンと同じ IP アドレスを割り当てます。
新しいマシンには、置換する旧マシンと同じマシン名を割り当てます。
新しいマシンは、置換する旧マシンと同じサブネットに接続します。
サーバーマシンを置換する場合は、次の手順に従ってください。
旧サーバーが管理するドメインのマスターサーバー上で nisbackup を実行します。
詳細は、「すべての NIS+ 名前空間をバックアップする」を参照してください。置換する旧サーバーがマスターサーバーである場合もあるので注意してください。この場合は、この旧マスターサーバー上で nisbackup を実行します。
旧サーバーをネットワークから切り離します。
新しいサーバーをネットワークに接続します。
新しいサーバーに旧サーバーと同じ IP アドレス (番号) を割り当てます。
新しいサーバーに旧サーバーと同じマシン名を割り当てます。
必要に応じて、新しいサーバー上の NIS+ サービスを停止します。
新しいサーバー上で nisrestore を実行し、NIS+ データを読み込みます。
詳細は、「nisrestore を使用して NIS+ 名前空間を復元する」を参照してください。
.rootkey ファイルを、バックアップディレクトリから新しいサーバーの /etc にコピーします。
NIS_COLD_START ファイルを、バックアップディレクトリから新しいサーバーの /var/nis にコピーします。
新しいサーバーを再起動します。