Linuxでストレージ管理コマンドについてです。
ハードディスクのベンチマークを調べるときなど、使えそうなコマンドだったのでまとめました。
デバイスファイル
Linuxにおいては、ハードディスクやUSBなどの記憶装置へのアクセスは、デバイスファイルを通じて行われます。
Linuxの主なデバイスファイルは以下の通りです。
デバイスファイル | 説明 |
---|---|
/dev/sda | 1番目のSCSI・SATA・USB・IEEE1394デバイス |
/devsdb | 2番目のSCSI・SATA・USB・IEEE1394デバイス |
/dev/sdc | 3番目のSCSI・SATA・USB・IEEE1394デバイス |
/dev/sdd | 4番目のSCSI・SATA・USB・IEEE1394デバイス |
/dev/hda | IDEプライマリマスターに接続 |
/dev/hdb | IDEプライマリスレーブに接続されたドライブ |
/dev/sr0 | 1番目のSCSI・SATA・USB・CD/DVDドライブ |
/dev/sr1 | 2番目のSCSI・SATA・USB・CD/DVDドライブ |
Linuxで扱うハードディスクの種類
Linuxで扱うハードディスクの種類は以下の通りです。
・SATA(Serial ATA)
・SCSI
・SAS(Serial Attached SCSI)
・USB
・IEEE1394
さらに、LinuxではIDE以外のハードディスクは全てSCSIデバイスとして扱われるっぽい。
Linuxは、これらのデバイスに対し、転送モードや各種パラメータの確認、設定を行うことができるコマンドがあり、それが、hdparm・sdparmコマンドです。
hdparmコマンド・sdparmコマンドのインストール
hdparm
mint@mint-VirtualBox:~$ sudo apt install hdparm
sdparm
mint@mint-VirtualBox:~$ sudo apt install sdparm
hdparmコマンド
hdparmコマンドはハードディスクのパラメータを確認、設定することができます。
sudo hdparm /dev/sda /dev/sda: multcount = 128 (on) IO_support = 1 (32-bit) readonly = 0 (off) readahead = 256 (on) geometry = 2088/255/63, sectors = 33554432, start = 0
オプションは以下の通りです。
オプションなし | 現在の設定の表示 |
---|---|
-i | ハードディスクの詳細情報 |
-t | バッファキャッシュを使わずに読み込み速度を計測 |
-T | バッファキャッシュを使用して読み込み速度を計測 |
-c 数値 | 32bit I/Oサポートの有効/無効を設定 -c0 : サポートを無効 -c1 : サポートを有効 -c3:同期シーケンスをつけサポートを有効 |
-d数値 | DMAモードの有効/無効を設定 -d0:DMA無効 -d1:DMA有効 |
オプション-tTを使用して読み込み速度の計測をしてみます。
mint@mint-VirtualBox:~$ sudo hdparm -tT /dev/sda /dev/sda: Timing cached reads: 12382 MB in 2.00 seconds = 6203.85 MB/sec Timing buffered disk reads: 438 MB in 3.02 seconds = 145.16 MB/sec
IDEインターフェースに対しては、hdparmコマンドを使用しますが、
UBS/SATA/SCSIディスクに対しては、sdparmコマンドを使用します。
sdparmコマンド
sdparmコマンドは、UBS/SATA/SCSIディスクの転送モードの設定や確認を行うコマンドになります。
mint@mint-VirtualBox:~$ sudo sdparm /dev/sdb /dev/sdb: JetFlash Transcend 16GB 1100 Caching (SBC) mode page: WCE 0 [cha: n, def: 0, sav: 0] RCD 0 [cha: n, def: 0, sav: 0] Informational exceptions control mode page: EWASC 0 [cha: n, def: 0, sav: 0] DEXCPT 1 [cha: y, def: 1, sav: 1] MRIE 0 [cha: n, def: 0, sav: 0]
オプションは、hdparmと同じです。
オプションなし | 現在の設定の表示 |
---|---|
-i | ハードディスクの詳細情報 |
-t | バッファキャッシュを使わずに読み込み速度を計測 |
-T | バッファキャッシュを使用して読み込み速度を計測 |
-c 数値 | 32bit I/Oサポートの有効/無効を設定 -c0 : サポートを無効 -c1 : サポートを有効 -c3:同期シーケンスをつけサポートを有効 |
-d数値 | DMAモードの有効/無効を設定 -d0:DMA無効 -d1:DMA有効 |
例として、ディスクキャッシュを無効にしてみます。
mint@mint-VirtualBox:~$ sudo sdparm --clear=WCE /dev/sdb
補足:IDEの転送モード
メインメモリとハードディスクのデータ転送方法として、PIOモードとDMAモードの2種類あります。
PIO(Programmed I/O)モード
PIOモードはCPUがハードディスクに直接命令を送ってデータを転送する方法です。
この方法は、データの読み書きが実行されている間は、他の処理にプロセスを回せないという欠点があります。
DMA(Direct Memory Access)モード
DMAモードは、CPUに代わって他の専用コントローラチップがデータ転送の管理をするため、CPUの処理の占有をすることなく、データの読み書きを行うことができます。
一般的にはDMAモードが使用されます。(現在は、Ultra DMA)
参考にした資料
コメント
[…] 【Linux】ストレージ管理コマンド hdparm・sdparmLinuxでストレージ管理コマンドについてです。ハードディスクのベンチマークを調べるときなど、使えそうなコマンドだったのでまとめまし […]