【備忘録】ちょっとしたメモ書き【備忘録】

自分でやったこと調べてみた事とのメモ書きブログです
主に周辺機器の翻訳した取り説や故障修理の手順を記録しています。

Pstack

2024年10月21日 | UNIX忘備録

pstack コマンドは、Solarisや他のUNIX系オペレーティングシステム上で実行中のプロセスやコアダンプファイルのスタックトレースを表示するためのツールです。pstackを使うことで、指定したプロセスやコアファイルに関する各スレッドのコールスタックを確認できます。

出力の解説

  • core 'core_file' of 1234: myapp
    pstackが解析しているコアダンプファイルと、そのダンプが取られたプロセスID(ここでは 1234)、およびプロセス名(myapp)を表示しています。

  • lwp#thread#
    それぞれのスレッドのLight Weight Process (LWP)番号と、スレッド番号が表示されます。LWPは、SolarisのスレッドのOSレベルでの実装です。

  • コールスタック
    各スレッド(LWP)のスタックトレースが表示されます。各スタックフレームは以下の情報で構成されています:

    1. アドレス:
      各スタックフレームのメモリアドレスが表示されます。

    2. 関数名と引数:
      スレッドが呼び出している関数と、渡されている引数が表示されます。例えば、lwp_parkcond_waitなどのシステムコールやユーザー定義の関数がリストアップされています。

    3. ユーザー定義関数(アプリケーションコード):
      スタックの最下部に、アプリケーションコードで呼ばれた関数(例: myapp_func1, myapp_func2, myapp_func3)が表示されます。ここが通常、バグの発生源となる場所です。

  • pstackは、シンプルかつ強力なツールで、Solarisや他のUNIX系システムでクラッシュしたアプリケーションやプロセスのスタックトレースを解析するために使用されます。

   Pstackの利点

    簡単にプロセスやコアダンプのスタックトレースを取得できるため、デバッグやクラッシュ解析に非常に有効。

    追加のオプション設定が不要で、簡潔なスタックトレース出力を得られる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

mdb -k

2024年10月21日 | UNIX忘備録

mdb -k core_fileを実行した際に表示される出力は、カーネルクラッシュダンプファイルに依存しますが、一般的な例を示します。mdb -kコマンドは、カーネルモードでmdbデバッガを起動し、クラッシュしたカーネルのスタックやデータ構造を解析するために使用されます。

出力の解説

  • ::status
    クラッシュダンプのステータス情報を表示します。この出力では、クラッシュしたシステムのOSバージョンや、カーネルパニックメッセージ(Fatal error during execution)、ダンプ内容(kernel pages only)などが表示されています。

  • ::stack
    クラッシュしたスレッドのコールスタックを表示します。ここでは、各スタックフレームと関数がリストされています。

  • ::ps
    システム内のプロセスリストを表示します。PID(プロセスID)、UID(ユーザーID)、プロセスの状態(R = 実行中、S = スリープ中)などが含まれます。

  • ::cpuinfo
    CPUごとの詳細情報を表示します。各CPUのスレッドやプロセス、CPUの状態(RNRN = CPUが実行中かどうか)が表示されます。

  • ::findstack -v
    特定のスレッドのコールスタックを詳細に表示します。ここでは、スタックトレースの各関数呼び出しの詳細が表示されます。

  • ::cpu
    CPUの詳細をリストします。各CPUで現在実行中のスレッドやプロセス、CPUが現在スイッチするかどうかの情報が表示されます。

mdb -k core_fileの出力には、クラッシュしたカーネルやプロセスのスタックトレース、システム状態、スレッド、CPUの詳細が含まれています。この情報を利用して、システムクラッシュや異常動作の原因を突き止めることができます。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

iostat -Enの解説

2023年06月14日 | UNIX忘備録

iostat -En の表示項目の解説とエラーの種類を詳しく、そしてどの程度のエラーが出たらHDDが危険か表示の基準値をどのように探すのか。


iostat -Enコマンドは、Solaris環境でハードディスク(HDD)のエラー情報を表示するためのコマンドです。以下に、一般的なiostat -Enコマンドの出力項目とエラーの種類について説明します。

  1. cXtXdX: ディスクの識別子です。cはコントローラ番号、tはターゲット番号、dはディスク番号を示します。

  2. Soft Errors: ソフトエラーの数です。ソフトエラーは一時的なエラーであり、ディスクが再試行によって正常に処理されたことを示します。

  3. Hard Errors: ハードエラーの数です。ハードエラーは物理的な問題を示し、ディスクの読み書きに失敗したことを示します。

  4. Transport Errors: トランスポートエラーの数です。トランスポートエラーはディスクとの通信に関連するエラーであり、ハードウェアや接続の問題を示すことがあります。

  5. Manufacturer: ディスクの製造元です。

  6. Serial Number: ディスクのシリアル番号です。

  7. Size: ディスクの容量です。

  8. Product: ディスクの製品名やモデル名です。

  9. Revision: ディスクのファームウェアのバージョンです。

エラーの種類について、一般的な種類をいくつか説明します。

  1. Soft Errors: 一時的なエラーであり、通常は再試行によって解決されます。一時的な通信の問題や一時的なデータの破損が原因となることがあります。

  2. Hard Errors: 物理的な問題によるエラーであり、読み書きが正常に行えないことを示します。ディスクの物理的なダメージやセクタの欠陥が原因となることがあります。

  3. Transport Errors: ディスクとの通信に関連するエラーです。ハードウェアの障害、ケーブルの問題、接続の不良などが原因となることがあります。


エラーが出始めたらどうするべきか?

一般的に、ハードディスクが問題を抱えている可能性が高まる状況やシグナルには以下のようなものがあります:

  1. ハードエラーが頻繁に発生する:ハードエラーの数が増加し、読み書きのエラーが継続的に発生する場合、ディスクの物理的な問題がある可能性があります。この場合、ディスクの寿命や信頼性に関して懸念が生じます。

  2. トランスポートエラーが頻繁に発生する:トランスポートエラーが頻繁に報告される場合、ディスクとの通信に問題がある可能性があります。これは、ハードウェアの障害や接続の不良などの問題を示唆することがあります。

  3. ソフトエラーが増加する:ソフトエラーの数が増える場合、一時的な通信の問題やデータの破損が起きている可能性があります。一時的なエラーである場合は問題ない場合もありますが、増加が継続する場合は注意が必要です。

ハードディスクの危険度は、これらのエラーの頻度や重大性、ディスクの使用状況などによっても変化します。重要なデータを格納している場合や、ディスクがクリティカルなシステムの一部である場合は、早急なバックアップやディスクの交換を検討することが重要です。

エラーの具体的な解釈や対応については、ディスクの製造元のドキュメントやサポートリソースを参照することをお勧めします。また、ディスクの状態をモニタリングするための専門のツールやソフトウェアも利用することができます。


どの程度出たら危ないか判断するために情報を探すためには?

報を探す手段は。。。ハードディスクが具体的に危険とされるエラーの基準や閾値は、ディスクの製造元やモデルによって異なるため、一般的な基準を提供することはできません。エラーの深刻度や危険度は、ディスクの製品仕様や製造元のガイドラインによって定められることが多い。

HDDに関する正確な情報やドキュメントを入手するためには、以下の方法を試してみてください。

  1. 公式ウェブサイト: 製品の公式ウェブサイトやサポートページを訪れ、HDDに関するドキュメントや技術情報を探してみてください。ウェブサイトには製品のマニュアル、データシート、トラブルシューティングガイドなどが掲載されていることがあります。

  2. サポート連絡先: サポートチームに連絡し、製品に関する情報やドキュメントを問い合わせることができます。サポート連絡先は、ウェブサイトや製品のパッケージ、保証書などに記載されている場合があります。

  3. ユーザーコミュニティやフォーラム: 製品に関する情報を共有しているユーザーコミュニティやテクニカルフォーラムを探してみてください。こうしたコミュニティでは、他のユーザーが提供する情報や経験を通じて有益な情報を得ることができる場合があります。


 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

smartctlありの環境でHDDの状況を確認する

2023年06月13日 | UNIX忘備録

S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)情報を表示するためには、一般的にはsmartctlというツールを使用します。


  1. Solaris上でsmartmontoolsパッケージをインストールします。smartmontoolsにはsmartctlが含まれています。

インストールが完了したら、smartctlコマンドを使用してS.M.A.R.T.情報を表示します。以下は、例として/dev/rdsk/c0t0d0s0というデバイスに対してS.M.A.R.T.情報を表示する


smartctl -a /dev/rdsk/c0t0d0s0

上記のコマンドを実行すると、/dev/rdsk/c0t0d0s0デバイスのS.M.A.R.T.情報が表示されるはずです。ただし、実際のデバイス名に合わせてコマンドを適切に変更してください。

 


以下解説

smartctlコマンドの出力に表示される一般的な項目について、さらなる詳細を説明します。

  1. Model Family: ディスクのモデルファミリーを示します。同じファミリー内のディスクは似た特性を持つことがあります。

  2. Device Model: ディスクの具体的なモデル名を示します。

  3. Serial Number: ディスクのシリアル番号です。ディスクを一意に識別するために使用されます。

  4. Firmware Version: ディスクのファームウェアのバージョンです。ファームウェアはディスクの動作や機能を制御します。

  5. User Capacity: ディスクのユーザーに利用可能な容量です。バイト単位で表示され、ディスクのサイズを示します。

  6. Sector Size: ディスクのセクターサイズです。一般的には512バイトですが、一部のディスクでは4KBなどの異なるセクターサイズを使用する場合もあります。

  7. Rotation Rate: ディスクの回転速度です。一般的なHDDでは回転速度が表示されます(例:7200 RPM)。

  8. SMART overall-health self-assessment test result: S.M.A.R.T.の全体的な健康状態の自己評価テストの結果です。通常は「PASSED」(合格)または「FAILED」(不合格)が表示されます。

  9. ID# ATTRIBUTE_NAME: 各S.M.A.R.T.属性の識別番号と名称です。

  10. FLAG: 属性のフラグ情報です。

  11. VALUE: 属性の現在の値です。この値が大きいほど良好な状態を示します。

  12. WORST: 属性の最悪値です。この値が低いほど良好な状態を示します。

  13. THRESH: 属性のしきい値です。この値を下回ると警告やエラーが発生する可能性があります。

  14. TYPE: 属性のタイプ(Pre-failやOld_ageなど)です。

  15. UPDATED: 属性の最終更新日時です。

  16. WHEN_FAILED: 属性の値がしきい値を下回ったときに表示される情報です。

  17. RAW_VALUE: 属性の生値です。ディスクの製造元やドキュメントによって解釈が異なる場合があります。

smartctlコマンドの出力には、さまざまなS.M.A.R.T.属性が含まれる場合があります。これらの属性は、ディスクの状態やパフォーマンスに関する情報を提供します。以下に一般的なS.M.A.R.T.属性の一部を示します。

  1. Raw_Read_Error_Rate: ディスクの読み取りエラーの数を示します。この値が高い場合、ディスクに問題がある可能性があります。

  2. Reallocated_Sector_Ct: 再割り当てされたセクタの数を示します。ディスクが物理的な欠陥を持つセクタを自動的に再割り当てすることで、データの損失を防ぎます。

  3. Spin_Retry_Count: 回転のリトライ回数を示します。ディスクが回転を開始する際に問題が発生した場合、リトライが試みられます。この値が増加すると、ディスクに問題がある可能性があります。

  4. Power_On_Hours: ディスクの稼働時間(パワーオン時間)を示します。長時間稼働しているディスクは、故障のリスクが高まる可能性があります。

  5. Temperature_Celsius: ディスクの温度を摂氏で示します。過度な温度はディスクの寿命やパフォーマンスに悪影響を与える可能性があります。

  6. Load_Cycle_Count: ディスクのロード/アンロードサイクル数を示します。ヘッドの駆動や停止が頻繁に行われると、ディスクの寿命に影響を与える可能性があります。

これらは一部の一般的な属性の例です。実際のディスクにはさまざまなS.M.A.R.T.属性があります。各属性の意味や重要性については、ディスクの製造元のドキュメントや公式リソースを参照することをお勧めします。

なお、ディスクの状態やS.M.A.R.T.情報の解釈には専門知識が必要な場合があります。異常な値や警告が表示された場合は、ディスクの製造元やサポートリソースに相談することをお勧めします。

 


UNIXシェルスクリプトコマンドブック 第3版

[改訂第4版] UNIXコマンドポケットリファレンス ビギナー編

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HDDの状態を確認する(smartctl無)

2023年06月13日 | UNIX忘備録

スクリプトを作成する場合の参考

このスクリプトでは、iostatコマンドを使用してディスクの統計情報を表示します。


#!/bin/bash

# iostatコマンドを使用してディスクの統計情報を表示
iostat -En


適切な権限を設定して実行すると、ディスクの情報が表示されます。

もしくは、以下のようにスクリプトを拡張して、特定のディスクの情報を表示することもできます。

#!/bin/bash

# ディスク名を指定
disk_name="c0t0d0"

# iostatコマンドを使用して指定したディスクの統計情報を表示
iostat -En "$disk_name"


上記の例では、disk_name変数に表示したいディスクの名前を指定しています(c0t0d0はディスク名の例です)。スクリプトを実行すると、指定したディスクの情報のみが表示されます。

どちらのスクリプトも、iostatコマンドを使用してディスクの統計情報を表示しています。-Enオプションは、ディスクの詳細な情報(エラーカウント、リトライカウントなど)を表示するためのものです。



iostat -Enコマンドの出力は、ディスクの状態や統計情報を示すテーブル形式のデータです。以下に、一般的なiostat -Enコマンドの出力の例を示します。

c0t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: XYZ     Product: ABC        Revision: 1234
Serial No: 1234567890     Size: 500.11GB <500107862016 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0

 

上記の例では、c0t0d0というディスクに関する情報が表示されています。Soft ErrorsHard ErrorsTransport Errorsはエラーカウントを示し、VendorProductRevisionはディスクの製造元や製品の情報を示しています。Serial Noはディスクのシリアル番号であり、Sizeはディスクの容量を示しています。その他の行では、デバイスの状態やエラー関連の情報が表示されます。

実際の環境でiostat -Enコマンドを実行すると、このような形式の情報が表示される


 

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする