Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)

第 18 章 NIS+ ディレクトリの管理

この章では、NIS+ ディレクトリ オブジェクトとその管理方法について説明します。


注 –

NIS+ は、将来のリリースでサポートされない可能性があります。NIS+ から LDAP への移行支援ツールは、Solaris 9 オペレーティング環境で使用できます (『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照)。詳細については、http://www.sun.com/directory/nisplus/transition.html を参照してください。


NIS+ ディレクトリ

NIS+ ディレクトリオブジェクトには、NIS+ ドメインに関連する情報が格納されます。NIS+ ドメインには、それぞれ NIS+ ディレクトリ構造が関連付けられます。NIS+ ディレクトリの詳細については、第 2 章「NIS+ の紹介」を参照してください。

NIS+ ディレクトリ関連のコマンドとその構文、オプションについては、nis+(1) のマニュアルページを参照してください。

ディレクトリに対して niscat コマンドを使用する

niscat -o コマンドを使えば、NIS+ ディレクトリのオブジェクト属性を表示できます。このコマンドを使うには、ディレクトリオブジェクトの読み取り権が必要です。

ディレクトリのオブジェクト属性を表示する

ディレクトリのオブジェクト属性を表示するには、niscat -o とディレクトリ名を使います。


niscat -o directory-name

たとえば :


rootmaster# niscat -o doc.com.
Object Name : doc
Owner : rootmaster.doc.com.
Group :
Domain : Com.
Access Rights : r---rmcdr---r---
Time to Live : 24:0:0
Object Type : DIRECTORY
.
.

nisls コマンドでディレクトリを表示する

nisls コマンドは、NIS+ ディレクトリの内容を表示します。このコマンドを使うには、ディレクトリオブジェクトに対する読み取り権が必要です。

簡潔形式での表示


nisls [-dgLmMR] directory-name

詳細形式での表示


nisls -l [-gm] [-dLMR] directory-name
表 18–1 nisls コマンドのオプション

オプション 

種類 

-d

ディレクトリオブジェクト。ディレクトリの内容を表示するのではなく、別のオブジェクトのように扱う 

-L

リンク。ディレクトリ名が実際にはリンクである場合、コマンドはリンクをたどり、リンクされたディレクトリの情報を表示する 

-M

マスター。マスターサーバーだけから情報を取得する。これによって最新の情報が得られるが、マスターサーバーが使用中の場合は長時間を要することがある  

-R

再帰的。ディレクトリを再帰的に表示する。つまり、ディレクトリ中に他のディレクトリがある場合、それらの内容も表示する 

-l

長形式。情報を長形式で表示する。長形式では、オブジェクトのタイプ、作成時間、所有者、およびアクセス権を表示する 

-g

グループ。情報を長形式で表示するとき、ディレクトリ所有者ではなく、そのグループ所有者を表示する 

-m

変更時間。情報を長形式で表示するとき、ディレクトリ作成時間ではなく、その変更時間を表示する 

ディレクトリの内容を表示する (簡潔形式)

ディレクトリ内容をデフォルトの短形式で表示するには、次に示すオプションの内の 1 つまたは複数と、ディレクトリ名を使います。ディレクトリ名を指定しない場合、NIS+ はデフォルトのディレクトリを使います。


nisls [-dLMR] directory-name

または


nisls [-dLMR]

たとえば、次の nisls の場合は、ルートドメイン doc.com. のルートマスターサーバーから入力します。


rootmaster% nisls doc.com.:
org_dir
groups_dir 

次に、ルートマスターサーバーから入力した例をもう 1 つ示します。


rootmaster% nisls -R sales.doc.com.
sales.doc.com.:
org_dir
groups_dir
groups_dir.sales.doc.com.:
admin
org_dir.sales.doc.com.:
auto_master
auto_home
bootparams
cred
.

ディレクトリの内容を表示する (詳細形式)

ディレクトリの内容を詳細形式で表示するには -l オプション、および次に示すオプションのうちの 1 つまたは複数を使います -g-m のオプションは、表示される属性を変更します。ディレクトリ名を指定しない場合、NIS+ はデフォルトのディレクトリを使います。


nisls -l [-gm] [-dLMR] directory-name

または


nisls -l [-gm] [-dLMR]

次に示すのは、ルートドメイン doc.com. のマスターサーバーから入力した例です。


rootmaster% nisls -l
doc.com.
D r---rmcdr---r--- rootmaster.doc.com. date org_dir
D r---rmcdr---r--- rootmaster.doc.com. date groups_dir

nismkdir コマンド


注 –

この節では、nismkdir コマンドを使用して既存のドメインに非ルートサーバーを追加する方法を説明します。 nisserver スクリプトを使用すれば、より簡単に追加できます。方法については、第 4 章「スクリプトを使用した NIS+ の設定」を参照してください。


nismkdir コマンドは、ルート以外の NIS+ ディレクトリを作成し、これをマスターサーバーに関連付けます。ルートディレクトリを作成するには、nisinit コマンドで説明する nisinit -r コマンドを使います。nismkdir コマンドを使って、複製サーバーを既存のディレクトリに追加できます。

NIS+ ディレクトリを作成するには、いくつかの関連作業のほかに、いくつかの前提条件があります。

ディレクトリを作成するには、以下のように入力します。


nismkdir [-m master-server]  directory-name

複製を既存のディレクトリに追加するには、以下のように入力します。


nismkdir -s replica-server  directory-name
nismkdir -s replica-server  org_dir.directory-name
nismkdir -s replica-server groups_dir.directory-name 

ディレクトリを作成する

ディレクトリを作成するには、(ドメインのマスターサーバー上の) 親ディレクトリに対する作成権が必要です。まず -m オプションを使ってマスターサーバーを定義し、次に -s オプションを使って複製を定義します。


nismkdir -m master  directory
nismkdir -s replica  directory

注意 – 注意 –

nismkdir は必ず (複製サーバーではなく) マスターサーバー上で実行してください。nismkdir を複製サーバー上で実行すると、マスターサーバーおよび複製サーバー間の通信に問題が発生します。


この例では、sales.doc.com. ディレクトリを作成してから、そのマスターサーバー smaster.doc.com. と複製サーバー rep1.doc.com. を指定します。これはルートマスターサーバーから入力します。


rootmaster% nismkdir -m smaster.doc.com. sales.doc.com. 
rootmaster% nismkdir -m smaster.doc.com. org_dir.sales.doc.com.
rootmaster% nismkdir -m smaster.doc.com. groups_dir.sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. org_dir.sales.doc.com.
rootmaster% nismkdir -s rep1.doc.com. groups_dir.sales.doc.com.
この図は、親のサーバーを使用する新しいディレクトリを示します。

小規模またはテスト用の名前空間でないかぎりは推奨しませんが、nismkdir コマンドを使えば、独自のディレクトリを指定する代わりに、新しいディレクトリとして親ディレクトリのサーバーを使えます。次に 2 つの例を示します。

この図は、マスターサーバーを指定する新しいディレクトリを示します。

2 番目の例では、sales.doc.com. ディレクトリを作成し、独自のマスターサーバーである smaster.doc.com. を指定します。


rootmaster% nismkdir -m smaster.doc.com. sales.doc.com. 

複製サーバーは指定されないため、nismkdir を再び使用して複製を割り当てるまでは、新しいディレクトリにはマスターサーバーしかありません。sales.doc.com. ドメインがすでに存在する場合は、上記のように nismkdir コマンドを実行すると、salesmaster.doc.com. が新しいマスターサーバーになり、古いマスターサーバーは複製サーバーに格下げされます。

複製サーバーを既存のディレクトリに追加する

この章では nismkdir コマンドを使用して複製サーバーを既存のシステムに追加する方法を説明します。nisserver スクリプトを使用すると、より簡単に追加できます。

以下の点に注意してください。

新しい複製サーバーを既存のディレクトリに割り当てるには、-s オプションと、既存のディレクトリ名を使います。


nismkdir -s replica-server existing-directory-name
nismkdir -s replica-server org_dir. existing-directory-name
nismkdir -s replica-server groups_dir. existing-directory-name

nismkdir コマンドは、ディレクトリがすでに存在することを知っているため、再び作成しません。単に、追加の複製サーバーを割り当てるだけです。たとえば、新しい複製サーバーマシン名が rep1 である場合は、以下のように入力します。


rootmaster% nismkdir -s rep1.doc.com. doc.com. 
rootmaster% nismkdir -s rep1.doc.com. org_dir.doc.com.
rootmaster% nismkdir -s rep1.doc.com. groups_dir.doc.com.

注意 – 注意 –

nismkdir は必ず (複製サーバーではなく) マスターサーバー上で実行してください。nismkdir を複製サーバー上で実行すると、マスターサーバーおよび複製サーバー間の通信に問題が発生します。


上記の説明に従って nismkdir を 3 回繰り返して実行した後は、以下の 3 つのディレクトリでマスターサーバーから nisping を実行する必要があります。


rootmaster# nisping doc.com.
rootmaster# nisping org_dir.doc.com.
rootmaster# nisping group_dir.doc.com.

次のような画面が表示されます。


rootmaster# nisping doc.com.
Pinging replicas serving directory doc.com. :
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 18 19:54:38 1995
Replica server is rep1.doc.com.
 Last update seen was Wed Nov 18 11:24:32 1995
 Pinging ... rep1.doc.com

マスターサーバーの cron ファイルに、nisping コマンドが少なくとも 24 時間に一度 (この 3 つのディレクトリに対して) 実行されるよう設定しておくことをお勧めします。

nisrmdir コマンド

nisrmdir コマンドでは、ディレクトリを削除したり、ディレクトリと複製サーバーを切り離すことができます。ディレクトリを削除、またはディレクトリと複製サーバーを切り離すと、その NIS+ ドメインに対しては、マシンは NIS+ 複製サーバーとしては機能しなくなります。

ディレクトリの削除では、まずマスターサーバーと複製サーバーをディレクトリから切り離し、次にそのディレクトリを削除します。

nisrmdir コマンドの実行で問題が生じる場合は、複製の失敗からの NIS+ ディレクトリの削除または分離を参照してください。

ディレクトリを削除する

ディレクトリ全体を削除し、そのマスターサーバーと複製サーバーを切り離すには、nisrmdir コマンドをオプションなしで実行します。


nisrmdir directory-name
nisping  domain

次の例では、doc.com. ディレクトリの下の manf.doc.com. ディレクトリを削除します。


rootmaster% nisrmdir manf.doc.com.
rootmaster% nisping doc.com.

複製サーバーをディレクトリから切り離す

複製サーバーをディレクトリから切り離すには、まず、ディレクトリの org_dirgroups_dir サブディレクトリを削除します。その時は、nisrmdir コマンドに -s オプションを付けて実行します。サブディレクトリが削除されたら、親ドメインに戻って nisping を実行してください。


nisrmdir -s replicanameorg_dir.domain
nisrmdir -s replicanamegroups_dir.domain
nisrmdir -s replicaname domain
nisping domain

次の例では、manfreplica1 サーバーを manf.doc.com. ディレクトリから切り離します。


rootmaster% nisrmdir -s manfreplica1 org_dir.manf.doc.com. 
rootmaster% nisrmdir -s manfreplica1 groups_dir.manf.doc.com.
rootmaster% nisrmdir -s manfreplica1 manf.doc.com.
rootmaster% nisping manf.doc.com.

nisrmdir -s コマンドを実行したが、切り離し対象の複製サーバーがダウンしていた、または通信が途絶していたという場合、「Cannot remove replica name: attempt to remove a non-empty table」というエラーメッセージが出されます。このような場合は、マスターサーバー上で nisrmdir -f -s replicaname コマンドを実行すれば、強制的に切り離すことができます。しかし、nisrmdir -f -s replicaname を使って通信不能な複製を分離する場合には、複製がオンライン状態に戻ったらすぐに、nisrmdir -f -s replicaname を再実行して、複製の /var/nis ファイルシステムを消去する必要があります。nisrmdir -f -s replicaname を再実行しないと、複製がサービスを再開した時に複製上に残された古い情報によって問題が発生します。

nisrm コマンド

nisrm コマンドは、標準の rm システムコマンドと似ています。このコマンドは、ディレクトリと空でないテーブルを除いて、名前空間からすべての NIS+ オブジェクトを削除します。nisrm コマンドを使うには、オブジェクトに対する削除権が必要です。しかし、この権利がない場合、-f オプションを使うことができます。このオプションは、アクセス権がなくても動作を強行しようと試みます。

nisgrpadm -d コマンド (NIS+ グループを削除するを参照) を使えばグループオブジェクトを削除でき、nistbladm -r または nistbladm -R (テーブルを削除するを参照) を使えばテーブルを空にできます。

ディレクトリ以外のオブジェクトは、次のコマンドで削除します。


nisrm [-if] object-name
表 18–2 nisrm 構文オプション

オプション 

種類 

-i

照会。オブジェクトを削除する前に確認を要求する。指定されたオブジェクト名が完全指定されていない場合、このオプションが自動的に使われる

-f

強制。たとえ適切なアクセス権がない場合でも、削除の強行を試みる。nischmod コマンドを使ってアクセス権の変更を試み、再度オブジェクトの削除を試みる

ディレクトリ以外のオブジェクトを削除する

ディレクトリ以外のオブジェクトを削除するには、nisrm コマンドを使い、オブジェクト名を指定します。


nisrm object-name...

次の例では、名前空間からグループとテーブルを削除します。


rootmaster% nisrm -i admins.doc.com. groups.org_dir.doc.com. 
Remove admins.doc.com.? y
Remove groups.org_dir.doc.com.? y

rpc.nisd コマンド

rpc.nisd コマンドは、NIS+ デーモンを起動します。このデーモンは NIS 互換モードで実行でき、NIS クライアントからの要求にも応答できます。NIS+ デーモンを起動するにはアクセス権は不要ですが、そのすべての前提条件と関連作業を知っておく必要があります。前提条件については、rpc.nisd を実行するための前提条件 を参照してください。

デフォルトでは、NIS+ デーモンはセキュリティレベル 2 で起動します。

デーモンを起動するには、以下のように入力します。


rpc.nisd

デーモンを NIS 互換モードで起動するには、以下のように入力します。


rpc.nisd -Y [-B]

DNS 転送機能によって NIS 互換デーモンを起動するには、以下のように入力します。


rpc.nisd -Y -B
表 18–3 rpc.nisd 構文オプション

オプション 

種類 

-S security-level

セキュリティレベルを指定する。0 は「NIS+ セキュリティを使用しない」、2 は「最高レベルの NIS+ セキュリティを使用する」という意味(レベル 1 はサポートされない)

-F

デーモンによって提供されるディレクトリのチェックポイント設定を強行する。この動作は、ディレクトリのトランザクションログを空にして、ディスク空間を解放することになる  

任意のサーバーで NIS+ デーモンを起動するには、このコマンドをオプションなしで実行します。


rpc.nisd

デーモンは、デフォルトであるセキュリティレベル 2 で起動します。

セキュリティレベル 0 でデーモンを起動するには、-S フラグを使います。


rpc.nisd -S 0

NIS 互換の NIS+ デーモンを起動する

ルートマスターを含む任意のサーバーで、NIS+ デーモンを NIS 互換モードで起動できます。-Y (大文字) オプションを使います。


rpc.nisd -Y

サーバーが再起動された場合にデーモンを NIS 互換モードで再起動させるには、サーバーの /etc/init.d/rpc ファイル内で EMULYP=Y を含む行をコメント解除にしなければなりません。

DNS 転送 NIS 互換デーモンを起動する

NIS 互換モードで実行している NIS+ デーモンに DNS 転送機能を追加するには、rpc.nisd-B オプションを追加します。


rpc.nisd -Y -B

サーバーが再起動された場合に、デーモンを DNS 転送 NIS 互換モードで再起動させるには、サーバーの /etc/init.d/rpc ファイル内の EMULYP=-Y を含む行をコメント解除し、次のように変更しなければなりません。


EMULYP -Y -B

NIS+ デーモンを停止する

NIS+ デーモンを停止するには、その実行モードが通常であろうと NIS 互換であろうと、他のデーモンと同じようにプロセスを終了させます。最初にそのプロセス ID を見つけ、次にプロセスを終了させます。次に例を示します。


rootmaster# ps -e | grep rpc.nisd
root 1081 1 61 16:43:33 ? 0:01 rpc.nisd -S 0
root 1087 1004 11 16:44:09 pts/1 0:00 grep rpc.nisd
rootmaster# kill 1081

nisinit コマンド

この節では、nisinit コマンドを使用してマシンクライアントを初期設定する方法について説明します。 nisclient スクリプトを使用すると、より簡単に初期設定できます。NIS+ クライアントマシンの設定 を参照してください。

nisinit コマンドは、NIS+ クライアントまたはサーバーとなるマシンを初期設定します。rpc.nisd コマンドと同様、nisinit コマンドを使うにはアクセス権は不要ですが、その前提条件と関連作業を知っておく必要があります。NIS+ クライアントを初期設定する を参照してください。

クライアントを初期設定する

クライアントを初期設定するには、次の 3 つの方法があります。

前提条件と関連作業は、方法によってそれぞれ異なります。たとえば、ホスト名によってクライアントを初期設定するには、その前にクライアントの /etc/hosts ファイルまたは /etc/inet/ipnodesファイルに、使用するホスト名を登録しなければなりません。また、nsswitch.conf ファイルの hosts の最初の選択肢として、files を指定する必要があります。IPv6 アドレスには、hosts の最初の選択肢としてipnodes を指定してください。nisinit コマンドを使う手順を次にまとめます。

ホスト名によってクライアントを初期設定するには、-c-H のオプションを使い、クライアントがそのコールドスタートファイルを取得するサーバー名を指定します。


nisinit -c -H hostname

コールドスタートファイルによってクライアントを初期設定するには、-c-C のオプションを使い、コールドスタートファイル名を指定します。


nisinit -c -C filename

ブロードキャストによってクライアントを初期設定するには、-c-B のオプションを使います。


nisinit -c -B

ルートマスターサーバーを初期設定する

ルートマスターサーバーを初期設定するには、nisinit -r コマンドを使います。


nisinit -r

ここで次の情報が必要になります。

表 18–4 インターネットの組織ドメイン

ドメイン 

種類 

com 

営利団体 

edu 

教育機関 

gov 

行政機関 

mil 

軍事組織 

net 

主要ネットワークサポートセンター 

org 

非営利組織 

int 

国際組織 

nis_cachemgr コマンド

nis_cachemgr コマンドは、NIS+ キャッシュマネージャプログラムを起動します。このプログラムは、すべての NIS+ クライアント上で動作します。キャッシュマネージャは、名前空間で最もよく使われるディレクトリをサポートする NIS+ サーバーの位置情報キャッシュを管理します。位置情報はトランスポートアドレス、認証情報、生存期間値などです。

キャッシュマネージャが起動すると、クライアントのコールドスタートファイルから初期情報を取得し、それを /var/nis/NIS_SHARED_DIRCACHE ファイルにダウンロードします。

キャッシュマネージャは、クライアントマシンとして要求を行います。クライアントマシンには必ず適切な資格を与えてください。そうしないと、性能が向上するどころか、キャッシュマネージャが性能を低下させます。

キャッシュマネージャの起動と停止

キャッシュマネージャを起動するには、nis_cachemgr コマンドを入力します。


client% nis_cachemgr
client% nis_cachemgr -i

-i オプションがない場合、キャッシュマネージャは再起動されますが、情報を /var/nis/NIS_SHARED_DIRCACHE ファイルに入れておきます。コールドスタートファイル内の情報は、このファイル内の既存情報に追加されます。-i オプションは、キャッシュファイルをクリアし、クライアントのコールドスタートファイルの内容からこれを再び初期設定します。

キャッシュマネージャを停止させるには、他のプロセスと同様にプロセスを終了します。

nisshowcache コマンド

nisshowcache コマンドは、クライアントのディレクトリキャッシュの内容を表示します。

NIS+ キャッシュの内容を表示する

nisshowcache コマンドは、/usr/lib/nis 内にあります。このコマンドはキャッシュヘッダーとディレクトリ名だけを表示します。ルートマスターサーバーから入力した例を次に示します。


rootmaster# /usr/lib/nis/nisshowcache -v
Cold Start directory:
Name : doc.com.
Type : NIS
Master Server :
 Name : rootmaster.doc.com.
 Public Key : Diffie-Hellman (192 bits)
 Universal addresses (3)
 . .
Replicate:
 Name : rootreplica1.doc.com.
 Public Key : Diffie-Hellman (192 bits)
 Universal addresses (3)
 .
 .
 .
 Time to live : 12:0:0
 Default Access Rights :

ping とチェックポイントを実行する

NIS+ データセットに変更を加えると、その変更は、当該 NIS+ ドメイン (またはサブドメイン) のマスターサーバーのメモリに格納されます。変更の記録はマスターサーバーのトランザクションログ (/var/nis/data/trans.log) にも残されます。

通常、NIS+ データセットに変更が加えられると、その 120 秒 (2 分) 後に、マスターサーバーから当該ドメインの複製サーバーにその変更の内容が転送されます。この転送プロセスのことを「ping」といいます。マスターサーバーから複製サーバーへの ping が実行されると、通知された変更内容に従って複製サーバーのデータセットが更新されます。これにより、変更された NIS+ データがマスターサーバーと複製サーバーの両方のメモリに格納されることになります。

自動 ping プロセスが不調で複製サーバーのデータセットが更新されないこともあります。その場合は、ping を強制的に実行するの説明に従って ping を強制的に実行する必要があります。複製サーバーが最新の NIS+ データどおりに正しく更新されているかどうか不安な場合は、最新更新時間を表示するの説明に従って複製サーバーが最後に更新されたのはいつであるかを確認してください。

NIS+ データセットに対する変更は、サーバーのメモリーに格納され、トランザクションログに記録されたのち、ディスク上の NIS+ テーブルに書き込まれなければなりません。この NIS+ テーブルを更新することを「チェックポイントを実行する」といいます。

チェックポイントの実行は自動的には行われません。ディレクトリにチェックポイントを実行するの説明に従ってチェックポイントコマンドを実行する必要があります。

nisping コマンド

nisping コマンドには次の用途があります。

最新更新時間を表示する

-u オプションを指定して nisping コマンドを実行すると、ローカルドメインのマスターサーバーと複製サーバーが更新された時間が表示されます。


/usr/lib/nis/nisping -u [domain] 

他のドメインで最後に更新が行われた時間を表示するには、コマンド行にそのドメイン名を指定します。-u オプションを指定して nisping コマンドを実行した場合、複製サーバーに対する ping は一切実行されない点に注意してください。

たとえば、ローカルドメイン doc.com. で複製サーバーが最後に更新された時間を表示するには、次のように入力します。


rootmaster# /usr/lib/nisping -u
Last updates for directory doc.com.:
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 25 10:53:37 1992
Replica server is rootreplica1.doc.com.
 Last update seen was Wed Nov 25 10:53:37 1992

ping を強制的に実行する

-u オプションを指定して nisping コマンドを実行した結果、複製サーバーが正しく更新されていないことがわかったとします。そのような場合は、nisping コマンドを実行することにより、マスターサーバーからドメイン内のすべての複製サーバーに対して、または特定の複製サーバーに対して、ping を強制的に実行できます。

すべての複製サーバーを ping の対象とする場合、次に示すように、nisping コマンドをオプションなしで実行します。


/usr/lib/nis/nisping

これにより、マスターサーバーからドメイン内のすべての複製サーバーへの ping が強制的に実行されます。ローカルドメイン doc.com. のすべての複製サーバーに対する ping を強制的に実行するには、次のように入力します。


rootmaster# /usr/lib/nis/nisping
Pinging replicas serving directory doc.com.:
Master server is rootmaster.doc.com.
 Last update occurred at Wed Nov 25 10:53:37 1992
Replica server is rootreplica1.doc.com.
 Last update seen was Wed Nov 18 11:24:32 1992
 Pinging ... rootreplica1.doc.com.

ローカルドメインでないドメイン内のすべての複製サーバーに対し ping を実行するには、ドメイン名を指定します。


/usr/lib/nis/nisping domainname

特定の 1 台のホスト上のすべてのディレクトリにあるすべてのテーブルに対し ping を実行することもできます。この場合、-a オプションを使用します。


/usr/lib/nis/nisping -a hostname

ディレクトリにチェックポイントを実行する

スワップの頻度やディスク領域との関連でトランザクションログが大きくなりすぎる場合、各ドメインおよびサブドメインに対しては、少なくとも 24 時間に 1 回はチェックポイントを実行する必要があります。


注 –

大きなドメイン、または大きなトランザクションログを持つドメインに対してチェックポイントを実行すると、終了するまでにかなりの時間がかかり、その間 NIS+ サーバーが拘束され、NIS+ サービスの速度が低下します。サーバーは、チェックポイントを実行している間もサービス要求に応答しますが、更新できません。できるだけ、システムが混んでいない時間帯を選んでチェックポイントを実行することをお勧めします。チェックポイントの実行スケジュールは cron ファイルで調整できます。


チェックポイントを実行するには、対象のドメインのマスターサーバー上で nisping -C コマンドを実行します。先にすべての複製サーバーに対して ping を実行してから、チェックポイントを実行することをお勧めします。その場合には、複製サーバーに対して常に最新のデータでチェックポイントを実行できます。


rootmaster# /usr/lib/nis/nisping
rootmaster# /usr/lib/nis/nisping -C -a

サーバーによってそのトランザクションログの情報が NIS+ テーブルに転送されると、ログファイル内のトランザクションは、ディスク領域の節約のため消去されます。

doc.com. ドメイン内のすべてのディレクトリに対してチェックポイントを実行するには、次のように入力します。


rootmaster# /usr/lib/nis/nisping -C -a
Checkpointing replicas serving directory doc.com. : 
Master server is rootmaster.doc.com.
 Last update occurred at Wed May 25 10:53:37 1995
Master server is rootmaster.doc.com.
checkpoint has been scheduled with rootmaster.doc.com.
Replica server is rootreplica1.doc.com.
 Last update seen was Wed May 25 10:53:37 1995
Replica server is rootreplica1.doc.com.
checkpoint has been scheduled with rootmaster.doc.com.

nislog コマンド

nislog コマンドは、トランザクションログの内容を表示します。


/usr/sbin/nislog
/usr/sbin/nislog -h [number]
/usr/sbin/nislog -t [number]
表 18–5 nislog コマンドのオプション

オプション 

種類 

-h [ num]

ログの先頭からトランザクションを表示する。数字を指定しなければ、最初のトランザクションから表示が開始される。0 を指定すると、ログヘッダーだけが表示される 

-t [ num]

ログの末尾からトランザクションを表示する。数字を指定しなければ、最後のトランザクションから表示が開始される。0 を指定すると、ログヘッダーだけが表示される 

-v

冗長モード 

トランザクションログの内容を表示する

各トランザクションは、トランザクションの明細部とオブジェクト定義のコピー部の 2 つの部分から構成されます。

doc.com. ディレクトリが最初に作成されたときに作られたトランザクションログエントリを次の例に示します。「XID」はトランザクション ID を意味します。


rootmaster# /usr/sbin/nislog -h 1
NIS Log printing facility.
NIS Log dump:
 Log state : STABLE
Number of updates : 48
Current XID : 39
Size of log in bytes : 18432
***UPDATES***
@@@@@@@@@@@@@@TRANSACTION@@@@@@@@@@@@@@
#00000, XID : 1
Time : Wed Nov 25 10:50:59 1992
Directory : doc.com.
Entry type : ADD Name
Entry timestamp : Wed Nov 25 10:50:59 1992
Principal : rootmaster.doc.com.
Object name : org_dir.doc.com.
...................Object......................
Object Name : org_dir
Owner : rootmaster.doc.com.
Group : admin.doc.com.
Domain : doc.com.
Access Rights : r---rmcdr---r---
Time to Live : 24:0:0
Object Type : DIRECTORY
Name : `org_dir.doc.com.'
Type: NIS
Master Server : rootmaster.doc.com.
.
.
................................................
@@@@@@@@@@@@@@TRANSACTION@@@@@@@@@@@@@@
#00000, XID : 2

nischttl コマンド

nischttl コマンドは、名前空間内のオブジェクトまたはエントリの生存期間値を変更します。キャッシュマネージャは、この生存期間値を使って、キャッシュエントリをいつ期限切れにするかを決めます。生存期間を指定するには、合計秒数か、日、時間、分、秒の組み合わせのいずれかを使います。

オブジェクトまたはエントリに割り当てる生存期間値は、オブジェクトの安定性に左右されます。よく変化するオブジェクトの場合、生存期間値を低くします。安定したオブジェクトの場合、高い値を指定します。高い生存期間値であれば、1 週間などを指定し、低い値であれば 1 分未満を指定します。パスワードエントリの生存期間値は約 12 時間とし、1 日に 1 回パスワード変更ができるようにする必要があります。RPC テーブル内のエントリなど、あまり変化しないテーブルのエントリには、数週間の値を設定できます。

オブジェクトの生存期間を変更するには、そのオブジェクトに対する変更権が必要です。テーブルエントリの生存期間を変更するには、変更したいテーブル、エントリ、または列に対して変更権が必要です。

オブジェクトまたはテーブルエントリの現在の生存期間値を表示するには、第 15 章「NIS+ のアクセス権の管理」で説明する nisdefaults -t コマンドを使います。

オブジェクトの生存期間値を変更するには、以下のどちらかのように入力します。


nischttl time-to-live object-name

または


nischttl [-L] time-to-live object-name

エントリの生存期間値を変更するには、以下のどちらかのように入力します。


nischttl time-to-live \
  [column=value,...], \
  table-name

または


nischttl [-ALP] time-to-live \
  [column=value,...], \
  table-name

time-to-live には以下のものを指定します。

以上の値は組み合わせて使うことができます。たとえば「 4d3h2m1s 」は、4 日 3 時間 2 分 1 秒を意味します。

nischttl コマンドでは以下のフラグを使用できます。

表 18–6 nischttl 構文のオプション

オプション 

種類 

A

すべて。[column=value] 指定に合致する全エントリに変更を適用する

L

リンク。リンクをたどり、リンク自体ではなく、リンクされたオブジェクトまたはエントリを変更する 

P

パス。条件を満足するエントリが 1 つ見つかるまで、パスをたどる 

オブジェクトの生存期間を変更する

オブジェクトの生存期間を変更するには、生存期間の値とオブジェクト名を指定して nischttl コマンドを入力します。-L コマンドを追加すれば、リンクされたオブジェクトにまで変更を拡張できます。


nischttl -L time-to-live object-name

生存期間は秒か、日、時間、分、秒の組み合わせかで指定できます。前者の場合、秒数だけを指定します。後者の場合、日数、時間数、分数と秒数に「 smhd」をつけてください。 たとえば :


client% nischttl 86400 sales.doc.com.
client% nischttl 24h sales.doc.com.
client% nischttl 2d1h1m1s sales.doc.com.

最初の 2 つでは、sales.doc.com. ディレクトリの生存期間が 86,400 秒、つまり 24 時間に変更されます。 3 つ目では、hosts テーブル内の全エントリの生存期間が 176,461 秒、つまり 2 日と 1 時間 1 分 1 秒に変更されます。

テーブルエントリの生存期間を変更する

エントリの生存期間を変更するには、インデックス付きのエントリフォーマットを使います。-A-L、または -P のどのオプションでも使えます。


nischttl [-ALP] time-to-live \
  [column=value,...], \
  table-name

注 –

C シェル を使用している場合、[ ] がメタキャラクタとして解釈されないように引用符で囲みます。


次に示す例は上記の例と似ていますが、オブジェクトではなく、テーブルエントリの値を変更します。


client% nischttl 86400 '[uid=99],passwd.org_dir.doc.com.' 
client% nischttl 24h `[uid=99],passwd.org_dir.doc.com.' 
client% nischttl 2d1h1m1s `[name=fred],hosts.org_dir.doc.com'