コマンドラインでディスクIOを簡易的に調べる(hdparm/dd)

Linux

みなさまこんにちは、ウチイダユウゴです!

先日書いたディスクIO調査のこちらの記事。

VPSごとの比較がメインでしたので、調査に利用したコマンドについて軽くまとめておくことにしました。

ウチイダ自身、わからなくなって調べるのはたいていコマンドの使い方ですからね。

検証した環境

ウチイダが実際に操作したのは、Cent OS 7.6.1810 です。

どのディストリビューションでもあまり変わらないと思いますが念のため…

まず初めに:調査対象のディスク名を調べる

今回の調査に利用するコマンドはhdparm、ddの2つです。

いずれもどのディスクについて処理を行うかを指定する必要があります。

なので、まずは調査する環境のディスクを把握しておきます。

fdisk -l でディスク一覧を表示する

調べるとは言っても、コマンドひとつ実行するだけです。

fdisk -l で、マウントされているディスクの名称やサイズを一覧で表示します。

[root@vps-name ~]# fdisk -l

Disk /dev/sda: 68.7 GB, 68719476736 bytes, 134217728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b294d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux

だいたいこんな感じの出力になると思います。ここではディスク名はsda1ですね。

以降のコマンド実行例では、処理対象のディスク名としてこれを指定していきます。

ディスク読込速度を調べる(hdparm -t)

読込速度の調査にはhdparmを使います。

初期状態だと使えないコマンドだと思いますので、

yum install hdparm

でパッケージをインストールします。

インストールできたら、-t オプションをつけて実行してください。

[root@vps-name ~]# hdparm -t /dev/sda1
/dev/sda1:
 Timing buffered disk reads: 444 MB in  3.05 seconds = 145.78 MB/sec

ディスクの読込速度は145.78MB/secとわかりました。簡単ですね~

ちなみに、 -T オプションを使うとキャッシュ読込速度がわかります。

ディスク書き込み速度を調べる(dd)

ddコマンドは、ファイルの変換と複製を行うコマンドです。…と、manには書いてあります。
シンプルゆえに、いろいろ用途のあるコマンドなのです。

詳細は以下のページをご覧ください。

https://linuxjm.osdn.jp/html/GNU_coreutils/man1/dd.1.html

ddはファイルを作成した際の処理結果を表示してくれるので、ファイルの書き込み速度の測定に利用することができます。

標準で利用できるコマンドなので、特にインストールは必要ありません。

[root@vps-name ~]#dd if=/dev/zero of=/tmp.data bs=1M count=3000 oflag=direct
3000+0 records in
3000+0 records out
3145728000 bytes (3.1 GB) copied, 1.81975 s, 1.7 GB/s

bs(ブロックサイズ)1MBをcountで指定した3000回、/tmp.dataに書き込みを行うよ、という処理です。

大きなファイルを扱って、負荷が上がった時の様子を見たかったのでこの設定にしてみました。

当然、1MB × 3000 = 約3GBのtmp.dataファイルが出来上がるわけなので、ディスク空き容量には気を付けてくださいね。

本番環境として運用中のサーバでやるときは、負荷かかるのでそこもお気を付けくださいね…
ユーザーから動作遅いって怒られちゃうかも。

ちょっと速度を調べたいな~っという目的なら、bsとcountの値を小さくして試していただくとよいかと思います。

調査が終わったら、出来上がったファイルは削除してよいです。

rm -f /tmp.data

ディスク容量、無駄遣い禁止です!

まとめ:ディスクIOはネックになりがちなので気にかけたい

上記のコマンドを何回か実施してみて、平均でどのくらいの速度が出るのかでスペックを計るとよいと思います。

ネットワークトラフィックとディスクIOは処理速度のボトルネックになりがちなので、とりあえず疑ってかかってみるようにしようと思ったのでした。

それでは、最後までお読みいただきありがとうございました(/・ω・)/

コメント

タイトルとURLをコピーしました