Linux で iostat コマンドを使用するチュートリアル

Linux で iostat コマンドを使用するチュートリアル

序文

運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言われています。幸い、私は運用保守担当者ではありません。私はずっと開発者だと主張してきました。しかし、現在の勤務先の運用保守担当者はあまりにも無能で、開発者だと主張する私に、自分で袖をまくってやらせようとします。まあ、仕方がありません。以前の注文を引き継いで、もう一度やり直すしかありません~~~

運用・保守においては、監視ディスクが欠かせません。ディスク監視に関しては、iostat コマンドについて話す必要があります。この記事では、私がかつてよく知っていた iostat コマンドの詳細な概要を説明します。

コマンドの詳細

Linux システムの iostat は、I/O 統計の略語です。iostat ツールは、システムのディスク操作アクティビティを監視します。ディスクアクティビティ統計のレポート機能があり、CPU 使用率もレポートします。 vmstat と同様に、iostat にも弱点があり、特定のプロセスの詳細な分析を実行できず、システム全体の状況のみを分析する点です。

iostat の一般的なコマンド形式は次のとおりです。

iostat [パラメータ] [時間] [回数]

コマンドパラメータの説明は次のとおりです。

-c CPU使用率を表示する
-d ディスク使用量を表示
-k K単位で表示
-m M単位で表示
-N ディスクアレイ(LVM)情報を表示する
-n NFSの使用状況を表示
-pは各ディスクの各パーティションの使用状況を報告できます
-t 端末とCPUの情報を表示する
-x 詳細情報を表示する

以下は、弊社のよく使用される使用方法の詳細な概要です。

使用事例

コマンド: iostat -x

説明: 2秒ごとに表示を更新し、3回表示します

出力:

[user1@Test_Server ~]$ iostat -x
Linux 3.10.0-693.2.2.el7.x86_64 (jellythink) 2019 年 1 月 5 日 _x86_64_ (1 CPU)

平均 CPU: %user %nice %system %iowait %steal %idle
  1.83 0.00 0.31 0.09 0.00 97.77

デバイス: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
0.03 0.78 0.24 1.38 12.64 20.67 41.01 0.02 10.98 55.50 3.17 0.71 0.12

詳細な出力内容:

  • %user: CPUがユーザーモードになっている時間の割合
  • %nice: CPUがNICE値を持つユーザーモードになっている時間の割合
  • %system: CPUがシステムモードになっている時間の割合
  • %iowait: CPUが入力と出力の完了を待つのに費やす時間の割合
  • %steal: ハイパーバイザーが別の仮想プロセッサを維持している間に、仮想CPUが意図せず待機している時間の割合
  • %idle: CPUアイドル時間の割合

もちろん、iostat コマンドの目的は CPU を表示することではなく、ディスクのパフォーマンスを監視することです。

  • デバイス: デバイス名
  • rrqm/s: 1秒あたりにデバイスにマージされた読み取り要求の数
  • wrqm/s: 1秒あたりにデバイスにマージされた書き込み要求の数
  • r/s: 1秒あたりにディスクに対して開始された読み取り操作の数
  • w/s: 1秒あたりにディスクに開始された書き込み操作の数
  • rkB/s: 1秒あたりの読み取りバイト数
  • wkB/s: 1秒あたりKバイトの書き込み
  • avgrq-sz: デバイス I/O 操作あたりの平均データ サイズ
  • avgqu-sz: 平均 I/O キューの長さ
  • 待機: 各デバイス I/O 操作の平均待機時間 (ミリ秒単位)。通常、システム I/O 応答時間は 5 ミリ秒未満である必要があります。10 ミリ秒を超える場合は、比較的長い時間です。
  • r_await: 各読み取り操作に必要な平均時間。ハードディスク デバイスが操作を読み取る時間だけでなく、カーネル キューで待機する時間も含まれます。
  • w_await: 各書き込み操作に必要な平均時間。ハードディスク デバイスの書き込み時間だけでなく、カーネル キューでの待機時間も含まれます。
  • svctm: 各デバイス I/O 操作の平均サービス時間 (ミリ秒単位) (このデータは信頼できません)
  • %util: 1 秒間に I/O 操作に使用される時間の割合、つまり、IO によって消費される CPU の割合。通常、このパラメータが 100% の場合、デバイスがほぼフル稼働していることを意味します。

コマンド: iostat -d 2 3

出力:

[jelly@jellythink ~]$ iostat -d 2 3
Linux 3.10.0-693.2.2.el7.x86_64 (jellythink) 2019 年 1 月 5 日 _x86_64_ (1 CPU)

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
1.62 12.64 20.67 337375593 551756524

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
1.00 0.00 8.00 0 16

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
0.00 0.00 0.00 0 0

詳細な出力内容:

  • tps: 1秒あたりのI/O数 (IOPS、ディスクへの連続読み取りと書き込みの合計)
  • kB_read/s: ディスクから1秒あたりに読み取られるデータのサイズ(KB/秒)
  • kB_wrtn/s: 1 秒あたりにディスクに書き込まれるデータのサイズ (KB/秒)
  • kB_read: ディスクから読み取られたデータの合計量(KB単位)
  • kB_wrtn: ディスクに書き込まれたデータの合計量(KB単位)

パフォーマンス監視指標

ここまで述べ、システム出力を見てきましたが、日常の運用と保守ではどのような分野に注意を払う必要があるのでしょうか。さて、この記事の要点についてお話ししましょう。このサーバーに IO パフォーマンスのボトルネックがあるかどうかを判断するには、どのような出力内容に注意を払うべきでしょうか。

  • %iowait: この値が高い場合、ディスク上に I/O ボトルネックがあることを意味します。
  • 待機: 通常、システム I/O 応答時間は 5 ミリ秒未満である必要があります。10 ミリ秒を超える場合は、長すぎます。
  • avgqu-sz: I/O 要求の圧力がディスク処理能力を超え続けると、この値が増加します。単一ディスクのキューの長さが連続して 2 を超える場合、通常、ディスクに I/O パフォーマンスの問題があると考えられます。ディスクがディスク アレイの仮想論理ドライブである場合、単一のハード ディスクの平均 I/O 待機キューの長さを取得するには、この論理ドライブを構成する実際の物理ディスクの数で値を割る必要があることに注意してください。
  • %util: 通常、このパラメータが 100% の場合、デバイスがほぼ最大容量で動作していることを意味します。

最後に、指標に注目するだけでなく、展開したビジネスと連動した分析も必要です。画像アクセス、データベース、メール サーバーなど、ランダム ディスクの読み取りと書き込みが頻繁に行われるビジネスでは、tps が重要なポイントになります。ビデオオンデマンドやファイル同期など、大量のデータブロックの転送を必要とする、頻繁な連続読み取りおよび書き込み操作を伴うサービスの場合、ディスク スループットに重点が置かれます。

要約する

これで iostat コマンドの概要は終了です。日々の運用・保守業務では、実際のシナリオに基づいた分析をさらに行う必要があります。ツールとして、iostat の基本的な使い方をマスターすることが基礎です。この記事を通じて、誰もが iostat コマンドの基本的な使い方をマスターできることを願っています。その後の昇華については、仕事でもっと使い、もっと探求し、もっとまとめる必要があります。

さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。

以下もご興味があるかもしれません:
  • Linux IOの詳細な紹介
  • Linux IO 多重化 epoll ネットワーク プログラミング
  • Linux のソケット IO モデルの興味深い説明
  • Linux の 5 つの IO モデルの詳細な紹介
  • Linux の高性能ネットワーク IO と Reactor モデルの分析

<<:  React で setInterval 関数を使用する例

>>:  And キーワードを使用した MySQL の複数条件クエリ ステートメント

推薦する

dockerプライベート倉庫の構築と利用の詳細説明

1. リポジトリイメージをダウンロードする docker プルレジストリ 2. プライベートウェアハ...

MySQL 更新セットとの違い

目次問題の説明原因分析解決問題の説明最近、奇妙な問い合わせを受けました。更新ステートメントはエラーな...

Linux システムでの Selenium クローラー プログラムの導入の概要

目次序文1. セレンとは何ですか? 2. 使用手順1. ライブラリをインポートする2. テストコード...

MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]

この記事では、MySQL のスロー クエリ操作について例を挙げて説明します。ご参考までに、詳細は以下...

CSS 透明ボーダー背景クリップマジック

この記事では、CSSの透明な境界線の背景クリップの素晴らしい使い方を主に紹介し、みんなと共有し、自分...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

MySQL データベースの操作とデータ型

目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...

Linux環境にJDK1.8をインストールする

目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

MySQLがデータの削除を推奨しない理由

目次序文InnoDB ストレージ アーキテクチャInnodb テーブルスペースインドストレージディス...

Centos7 に yum 経由で MySQL をインストールする方法

1. MySQLがインストールされているかどうかを確認する yum インストール済みリスト | gr...

MySql Installer 8.0.18 画像とテキストによるビジュアル インストール チュートリアル

目次1. MySQL 8.0.18のインストール2. 環境変数を設定する3. 接続テスト1. MyS...

Centos 7.4 サーバーの時刻同期設定方法 [NTP サービスに基づく]

この記事では、CentOS 7.4 サーバーで時刻同期を構成する方法について説明します。ご参考までに...

jQueryは動的タグイベントを実装します

この記事では、タグイベントを動的に追加するためのjQueryの具体的なコードを参考までに紹介します。...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...