Solaris のシステム管理 (上級編)

第 18 章 ソフトウェアで発生するさまざまな問題の解決 (手順)

この章では、ときどき発生するが比較的修正しやすい、さまざまなソフトウェアの問題について説明します。特定のソフトウェアアプリケーションや内容に関連しない問題 (リブートの失敗やファイルシステムがフルになるなど) の解決方法も含みます。これらの問題の解決方法は、この後の節で説明します。

この章で説明する情報は次のとおりです。

リブートが失敗した場合の対処


注 –

この節で説明する情報の一部は、Oracle Solaris 10 リリースのみに関連しています。


システムがリブートに失敗した場合またはリブートしたがクラッシュした場合は、システムのブートを妨害しているソフトウェアまたはハードウェアの障害があると考えられます。

システムがブートしない原因 

問題の解決方法 

システムが /platform/`uname -m`/kernel/unix を見つけられない

SPARC システムの PROM 内の boot-device 設定を変更します。デフォルトのブートデバイスの変更については、『Solaris のシステム管理 (基本編)』「ブート PROM を使用してデフォルトのブートデバイスを変更する方法」を参照してください。

Oracle Solaris 10: x86 システムで、デフォルトのブートデバイスが存在しない。次のメッセージが表示される。

Not a UFS filesystem.

Oracle Solaris 10: Configuration Assistant (構成用補助) フロッピーディスク (ブートフロッピーとも呼ぶ) を使用してシステムをブートし、ブートするディスクを選択します。

Solaris 10 1/06: GRUB ブートアーカイブが壊れている。または、SMF ブートアーカイブサービスが失敗した。svcs -x コマンドを実行すると、エラーメッセージが表示される

Solaris 10 1/06: フェイルセーフアーカイブをブートします。

/etc/passwd ファイル内に無効なエントリが存在する

無効な passwd ファイルの復元については、『Solaris のシステム管理 (基本編)』の第 12 章「Oracle Solaris システムのブート (手順)」を参照してください。

ディスクなどのデバイスに、ハードウェアの問題がある 

ハードウェアの接続を確認します。 

  • 装置が接続されていることを確認します。

  • すべてのスイッチが適切に設定されていることを確認します。

  • すべてのコネクタおよびケーブル (Ethernet ケーブルも含む) を検査します。

  • すべて異常がなければ、システムの電源を切り、10 秒 〜 20 秒ほど待って、もう一度電源を投入します。

上記のリストで問題が解決できない場合は、ご購入先にお問い合わせください。

ルートパスワードを忘れた場合の対処

ルートパスワードを忘れると、システムにログインできなくなります。その場合、次の手順を実行する必要があります。

ルートパスワードを忘れると、システムにログインできなくなります。その場合、次の手順を実行する必要があります。

この手順については、『Solaris のシステム管理 (基本編)』の第 12 章「Oracle Solaris システムのブート (手順)」に詳述されています。


注 –

GRUB ベースのブートは、今回のリリースでは、SPARC ベースのシステムには使用できません。


次の例では、SPARC システムおよび x86 システムでルートパスワードを忘れた場合の対処方法について説明します。


例 18–1 SPARC: ルートパスワードを忘れた場合の対処

次の例は、ルートパスワードを忘れた場合にネットワークからブートして回復する方法について説明します。この例では、ブートサーバーがすでに有効になっているものとします。システムのリブート後に、必ず新しいルートパスワードを適用してください。


(Use keyboard abort sequence--Press Stop A keys to stop the system)
ok boot net -s
# mount /dev/dsk/c0t3d0s0 /a
# cd /a/etc
# TERM=vt100
# export TERM
# vi shadow
(Remove root's encrypted password string)
# cd /
# umount /a
# init 6


例 18–2 x86: ルートパスワードを忘れた場合に GRUB ベースのブートを実行する

この例では、ブートサーバーがすでに有効になっているものとします。システムのリブート後に、必ず新しいルートパスワードを適用してください。


GNU GRUB  version 0.95  (637K lower / 3144640K upper memory)
 +-------------------------------------------------------------------+
| be1
| be1 failsafe
| be3
| be3 failsafe
| be2
| be2 failfafe
  +------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.

Searching for installed OS instances...
	
	An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
	The boot archive is a cache of files used during boot and
	should be kept in sync to ensure proper system operation.
	
	Do you wish to automatically update this boot archive? [y,n,?] n
Searching for installed OS instances...

Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select 'q'.

  1  pool10:13292304648356142148     ROOT/be10
  2  rpool:14465159259155950256      ROOT/be01

Please select a device to be mounted (q for none) [?,??,q]: 1
mounting /dev/dsk/c0t0d0s0 on /a
starting shell.
      .
      .
      .
# cd /a/etc
# vi shadow
(Remove root's encrypted password string)
# cd /
# umount /a
# reboot


例 18–3 x86: ルートパスワードを忘れた場合にシステムをブートする

Oracle Solaris 10: 次の例は、ルートパスワードを忘れた場合にネットワークからブートして回復する方法について説明します。この例では、ブートサーバーがすでに有効になっているものとします。システムのリブート後に、必ず新しいルートパスワードを適用してください。


Press any key to reboot.
Resetting...
.
.
.
Initializing system                                                             
Please wait...                                                                  
                                                                                
                                                                                
                     <<< Current Boot Parameters >>>                            
Boot path: /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:a                                
Boot args:                                                                      
                                                                                
Type    b [file-name] [boot-flags] <ENTER>     to boot with options            
or      i <ENTER>                              to enter boot interpreter       
or      <ENTER>                                to boot with defaults           
                                                                               
                  <<< timeout in 5 seconds >>>

Select (b)oot or (i)nterpreter: b -s
SunOS Release 5.10 Version amd64-gate-2004-09-30 32-bit
Copyright 1983-2004 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
Booting to milestone "milestone/single-user:default".
Hostname: venus
NIS domain name is example.com
Requesting System Maintenance Mode
SINGLE USER MODE

Root password for system maintenance (control-d to bypass): xxxxxx
Entering System Maintenance Mode
.
.
.
# mount /dev/dsk/c0t0d0s0 /a
      .
      .
      .
# cd /a/etc
# vi shadow
(Remove root's encrypted password string)
# cd /
# umount /a
# init 6

x86: システムリブート中に SMF ブートアーカイブサービスが失敗した場合の対処


注 –

この手順の対象は、Oracle Solaris 10 リリースを実行するシステムのみです。


Solaris 10 1/06: システムがクラッシュした場合、システムのリブート時に、ブートアーカイブ SMF サービスである svc:/system/boot-archive:default が失敗する場合があります。ブートアーカイブサービスが失敗した場合、svcs -x コマンドを実行すると、次のようなメッセージが表示されます。


svc:/system/boot-archive:default (check boot archive content)
 State: maintenance since Fri Jun 03 10:24:52 2005
Reason: Start method exited with $SMF_EXIT_ERR_FATAL.
   See: http://sun.com/msg/SMF-8000-KS
   See: /etc/svc/volatile/system-boot-archive:default.log
Impact: 48 dependent services are not running.  (Use -v for list.)

svc:/network/rpc/gss:default (Generic Security Service)
 State: uninitialized since Fri Jun 03 10:24:51 2005
Reason: Restarter svc:/network/inetd:default is not running.
   See: http://sun.com/msg/SMF-8000-5H
   See: gssd(1M)
Impact: 10 dependent services are not running.  (Use -v for list.)

svc:/application/print/server:default (LP print server)
 State: disabled since Fri Jun 03 10:24:51 2005
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: lpsched(1M)
Impact: 1 dependent service is not running.  (Use -v for list.)

問題を修正するには、次の処置を行います。

  1. システムをリブートし、GRUB ブートメニューからフェイルセーフアーカイブのオプションを選択します。

  2. システムが、ブートアーカイブを再構築するかを尋ねるプロンプトを表示したら、y キーを押します。

    ブートアーカイブの再構築後、システムはブートの準備が完了します。

  3. ブートを継続するには、次のコマンドを使用して SMF ブートアーカイブサービスをクリアします。


# svcadm clear boot-archive

このコマンドを実行するには、スーパーユーザーまたは同等の役割になっている必要があります。

GRUB ブートアーカイブの再構築の詳細については、『Solaris のシステム管理 (基本編)』「x86 システムをフェイルセーフモードでブートする方法」および bootadm(1M) のマニュアルページを参照してください。

システムがハングした場合の対処

ソフトウェアプロセスに問題がある場合、システムは完全にクラッシュせずに凍結、つまりハングすることがあります。ハングしたシステムから回復するには、次の手順に従ってください。

  1. システムがウィンドウ環境を実行していたかどうかを調べて、次の推奨事項に従ってください。これらのリストで問題が解決できなかった場合は、手順 2 に進みます。

    • コマンドを入力しているウィンドウの中に、ポインタがあることを確認します。

    • 間違って Control-s キー (画面を凍結する) を押した場合は、Control-q キーを押します。Control-s キーはウィンドウだけを凍結し、画面全体は凍結しません。ウィンドウが凍結している場合は、他のウィンドウを試します。

    • 可能であれば、ネットワーク上の他のシステムからリモートでログインします。pgrep コマンドを使用して、ハングしているプロセスを見つけます。ウィンドウシステムがハングしている場合は、そのプロセスを特定して強制終了します。

  2. Control-\ キーを押して、動作しているプログラムを強制終了します。コアファイルが書き出されることがあります。

  3. Control-c キーを押して、動作している可能性があるプログラムに割り込みをかけます。

  4. リモートからログインして、システムをハングさせているプロセスを特定して強制終了します。

  5. リモートからログインして、スーパーユーザーまたは同等の役割になり、システムをリブートします。

  6. システムがまだ応答しない場合は、強制的にクラッシュダンプしてリブートします。強制的にクラッシュダンプしてブートする方法については、『Solaris のシステム管理 (基本編)』「クラッシュダンプを強制してシステムをリブートする」を参照してください。

  7. システムがまだ応答しない場合は、電源を切ってから数分待ち、もう一度電源を入れます。

  8. システムがまったく応答しない場合は、ご購入先にお問い合わせください。

ファイルシステムが一杯になった場合の対処

ルート (/) ファイルシステムや他のファイルシステムが一杯になると、次のようなメッセージがコンソールウィンドウに表示されます。


.... file system full

ファイルシステムが一杯になる原因はいくつかあります。次の節では、一杯になったファイルシステムを回復する方法をいくつか説明します。ファイルシステムが一杯にならないように、古い使用されていないファイルを日常的に整理する方法については第 6 章ディスク使用の管理 (手順)を参照してください。

大規模ファイルまたはディレクトリを作成したために、ファイルシステムが一杯になる

エラーの原因 

問題の解決方法 

ファイルかディレクトリを間違った場所にコピーした。これは、アプリケーションがクラッシュして、大きなコアファイルをファイルシステムに書き込んだときにも発生する

スーパーユーザーとしてログインするか、同等の役割になり、特定のファイルシステムで ls -tl コマンドを使用し、新しく作成された大きなファイルを特定して削除します。コアファイルの削除については、コアファイルを見つけて削除する方法」を参照してください。

システムのメモリーが不足したために、tmpfs ファイルシステムが一杯になる

エラーの原因 

問題の解決方法 

これは、tmpfs に許可されているよりも多く書き込もうとした、または現在のプロセスがメモリーを多く使用している場合に発生する

tmpfs に関連するエラーメッセージから回復する方法については、tmpfs(7FS) のマニュアルページを参照してください。

コピーまたは復元後にファイルの ACL が消失した場合の対処

エラーの原因 

問題の解決方法 

ACL を持つファイルまたはディレクトリを /tmp ディレクトリにコピーしたり復元したりすると、ACL 属性が消失する。/tmp ディレクトリは、通常、一時ファイルシステムとしてマウントされ、ACL などの UFS ファイルシステム属性はサポートしない

代わりに、/var/tmp ディレクトリにファイルをコピーまたは復元する

バックアップ時の問題の解決

この節では、データをバックアップまたは復元するときのいくつかの基本的な問題の解決方法について説明します。

ファイルシステムのバックアップ中に、ルート (/) ファイルシステムが一杯になる

ファイルシステムをバックアップしている際に、ルート (/) ファイルシステムが一杯になる場合があります。このとき、媒体には何も書き込まれず、ufsdump コマンドは、媒体の 2 番目のボリュームを挿入するようにプロンプトを表示します。

エラーの原因 

問題の解決方法 

-f オプションに無効な宛先デバイス名を使用した場合、ufsdump コマンドはファイルをルート (/) ファイルシステムの /dev ディレクトリに書き込み、このファイルシステムが一杯になる。たとえば、/dev/rmt/0 ではなく /dev/rmt/st0 と入力した場合、バックアップファイルはテープドライブに送信されず、/dev/rmt/st0 としてディスクに作成される

/dev ディレクトリで ls -tl コマンドを使用して、新しく作成された異常に大きなファイルを特定して削除する

バックアップコマンドと復元コマンドが対応していることを確認する

ufsrestore コマンドを使用できるのは、 ufsdump コマンドを使用してバックアップしたファイルを復元する場合だけです。tar コマンドを使用してバックアップした場合は、tar コマンドを使用して復元します。ほかのコマンドで書き込まれたテープを ufsrestore コマンドで復元しようとした場合、テープが ufsdump 形式でないことを知らせるエラーメッセージが表示されます。

現在のディレクトリが間違っていないことを確認する

ファイルを復元する場合に、間違った場所に復元してしまうことがよくあります。ufsdump コマンドは、常にファイルシステムのルートからのフルパス名でファイルをコピーします。したがって ufsrestore コマンドを実行する前に、ファイルシステムのルートディレクトリに移動しなければなりません。それよりも下のディレクトリでファイルを復元すると、そのディレクトリの下に完全なファイルツリーが作成されます。

対話型コマンド

対話型コマンドを使用すると、次の例のような ufsrestore> プロンプトが表示されます。


# ufsrestore ivf /dev/rmt/0
Verify volume and initialize maps
Media block size is 126
Dump   date: Fri Jan 30 10:13:46 2004
Dumped from: the epoch
Level 0 dump of /export/home on starbug:/dev/dsk/c0t0d0s7
Label: none
Extract directories from tape
Initialize symbol table.
ufsrestore > 

Oracle Solaris OS での共通エージェントコンテナの問題解決

この節では、共通エージェントコンテナ共有コンポーネントで発生する可能性のある問題について説明します。この Oracle Solaris OS リリースでは、Oracle Solaris OS 内に共通エージェントコンテナ Java プログラムが含まれています。このプログラムは、Java 管理アプリケーション用のコンテナを実装します。通常、このコンテナはユーザーに表示されません。

発生する可能性のある問題は、次のとおりです。

ポート番号の衝突

共通エージェントコンテナは、デフォルトでは次のポート番号を占有します。


注 –

Oracle Solaris Cluster のインストールの問題を解決する場合は、ポートの割り当てが異なります。


インストール時にこれらのポート番号のいずれかがすでに予約されている場合は、次の手順に従って共通エージェントコンテナの占有するポート番号を変更してください。

Procedureポート番号をチェックする方法

この手順では、ポートを確認する方法を示します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 共通エージェントコンテナの管理デーモンを停止します。


    # /usr/sbin/cacaoadm stop
    
  3. 次の構文を使用してポート番号を変更します。


    # /usr/sbin/cacaoadm set-param param=value
    

    たとえば、SNMPAdaptor の占有するポートをデフォルトの 11161 から 11165 に変更するには、次のように入力します。


    # /usr/sbin/cacaoadm set-param snmp-adaptor-port=11165 
    
  4. 共通エージェントコンテナの管理デーモンを再起動します。


    # /usr/sbin/cacaoadm start
    

スーパーユーザーパスワードのセキュリティーの危殆化

Java ES が稼働しているホストで、セキュリティー鍵の再生成が必要になる場合があります。たとえば、スーパーユーザーパスワードが公開されたり危殆化した危険がある場合は、セキュリティー鍵を再生成するべきです。共通エージェントコンテナサービスで使用される鍵は、/etc/cacao/instances/instance-name/security ディレクトリに格納されます。次の手順では、Oracle Solaris OS のセキュリティー鍵を生成する方法を示します。

ProcedureOracle Solaris OS のセキュリティー鍵を生成する方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 共通エージェントコンテナの管理デーモンを停止します。


    # /usr/sbin/cacaoadm stop
    
  3. セキュリティー鍵を再生成します。


    # /usr/sbin/cacaoadm create-keys --force
    
  4. 共通エージェントコンテナの管理デーモンを再起動します。


    # /usr/sbin/cacaoadm start
    

    注 –

    Sun Cluster ソフトウェアの場合は、クラスタ内のすべてのノードにこの変更を伝達する必要があります。