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

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

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

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

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

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

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

問題の解決方法 

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

SPARC システムの PROM 内の boot-device 設定を変更しなければならない。デフォルトのブートシステムの変更については、『Solaris のシステム管理 (基本編)』の「SPARC: システムのブート (手順)」を参照してください。

IA システムで、デフォルトのブートデバイスが存在しない。「Not a UFS filesystem.」というメッセージが表示される 

Configuration Assistant/Boot (構成用補助) フロッピーディスクを使用してシステムをブートし、ブートするディスクを選択する 

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

無効な passwd ファイルから復元する方法については、『Solaris のシステム管理 (基本編)』の「SPARC: システムのブート (手順)」または『Solaris のシステム管理 (基本編)』の「IA: システムのブート (手順)」を参照してください。

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

ハードウェアの接続を確認する 

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

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

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

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

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

SPARC: 64 ビット Solaris のブートで発生する問題の解決

64 ビット Solaris リリースを UltraSPARC システムにインストールすると、次のどの条件も該当しない場合は、64 ビットカーネルが自動的にブートされます。

32 ビット Solaris システムで 64 ビット Solaris オペレーティング環境をブートすることはできません。

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

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

この手順の詳細については、『Solaris のシステム管理 (基本編)』の「SPARC: システムのブート」および『Solaris のシステム管理 (基本編)』の「IA: システムのブート」を参照してください。

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

SPARC: 例 — ルートパスワードを忘れた場合の対処方法

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


(キーボードのシステム停止シーケンスを使用します
— Stop-A キーを押してシステムを停止します。)
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

x86: 例 — ルートパスワードを忘れた場合の対処方法

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


(キーボードのシステム停止シーケンスを使用して、システムを停止します。)
Type any key to continue

SunOS Secondary Boot version 3.00


Solaris Intel Platform Edition Booting System

Running Configuration Assistant...
Autobooting from Boot path: /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:a

If the system hardware has changed, or to boot from a different
device, interrupt the autoboot process by pressing ESC.

Press ESCape to interrupt autoboot in 5 seconds.
      .
      .
      .
Boot Solaris

Select one of the identified devices to boot the Solaris kernel and
choose Continue.

To perform optional features, such as modifying the autoboot and property
settings, choose Boot Tasks.

An asterisk (*) indicates the current default boot device.

> To make a selection use the arrow keys, and press Enter to mark it [X].

[X]  NET : DEC 21142/21143 Fast Ethernet
on Board PCI at Dev 3                                                
[ ]  DISK: (*) Target 0, QUANTUM  FIREBALL1280A
on Bus Mastering IDE controller on Board PCI at Dev 7, Func 1
[ ]  DISK: Target 1:ST5660A
on Bus Mastering IDE controller on Board PCI at Dev 7, Func 1
[ ]  DISK: Target 0:Maxtor 9 0680D4
on Bus Mastering IDE controller on Board PCI at Dev 7, Func 1
[ ]  CD  : Target 1:TOSHIBA  CD-ROM XM-5602B  1546
on Bus Mastering IDE controller on Board PCI at Dev 7, Func 1

F2_Continue   F3_Back   F4_Boot Tasks   F6_Help
      .
      .
      .
               <<< Current Boot Parameters>>>
Boot path: /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:a
Boot args: kernel/unix -r

Select the type of installation you want to perform:

1 Solaris Interactive
2 Custom JumpStart
3 Solaris Web Start
 
Enter the number of your choice followed by <ENTER> the key.
 
If you enter anything else, or if you wait for 30 seconds,
an interactive installation will be started.
 
Select type of installation:  b -s
      .
      .
      .
# mount /dev/dsk/c0t0d0s0 /a
      .
      .
      .
# cd /a/etc
# vi shadow
(Remove root's encrypted password string)
# cd /
# umount /a
# init 6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


.... file system full

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

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

エラーの原因 

問題の解決方法 

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

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

システムのメモリーが不足したために、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: Thu Aug 30 10:13:46 2001
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> 

ufsrestore> プロンプトでは、『Solaris のシステム管理 (基本編)』の「UFS バックアップおよび復元コマンド (参照情報)」にリストされているコマンドを使用して、ファイルの検索、復元するファイルのリストの作成、ファイルの復元を行うこともできます。