1、デバイスファイル
Linuxでは、ハードディスクなどの記憶装置へのアクセスはデバイスファイルを通じて行われます。
主な記憶装置のデバイスファイルは次の表のとおりです。
主な記憶装置のデバイスファイルは次の表のとおりです。
主なデバイスファイル
デバイスファイル | 説明 |
/dev/hda | プライマリマスターに接続されたドライブ |
/dev/hdb | プライマリスレーブに接続されたドライブ |
/dev/hdc | セカンダリマスターに接続されたドライブ |
/dev/hdd | セカンダリスレーブに接続されたドライブ |
/dev/sda | 1番目のSCSI/SATA/USB/IEEE1394デバイス |
/dev/sdb | 2番目のSCSI/SATA/USB/IEEE1394デバイス |
/dev/sdc | 3番目のSCSI/SATA/USB/IEEE1394デバイス |
/dev/sdd | 4番目のSCSI/SATA/USB/IEEE1394デバイス |
/dev/sr0 | 1番目のSCSI CD/DVDドライブ |
/dev/sr1 | 2番目のSCSI CD/DVDドライブ |
/dev/st0 | 1番目のSCSIテープドライブ |
/dev/st1 | 2番目のSCSIテープドライブ |
なお、カーネル2.6.21以降はlibataが導入され、IDEデバイスもSCSIデバイスと同じ扱いになりました。
つまり、IDEハードディスクも/dev/sda、/dev/sdbといったデバイスファイル名になります。
つまり、IDEハードディスクも/dev/sda、/dev/sdbといったデバイスファイル名になります。
2、ハードディスクの管理
ハードディスクは、大きく分けて以下のタイプに分かれます。
ハードディスクは、大きく分けて以下のタイプに分かれます。
- IDE(ATA)
- SATA(Serial ATA)
- SCSI
- SAS(Serial Attached SCSI)
- USB
- IEEE1394
LinuxではIDE以外のハードディスクはすべてSCSIデバイスとして扱います。
つまり、SATAハードディスクもSCSIハードディスクとして扱われます。
前述のとおり、カーネル2.6.21以降では基本的にすべてのハードディスクが"/dev/sd"として扱われます。
つまり、SATAハードディスクもSCSIハードディスクとして扱われます。
前述のとおり、カーネル2.6.21以降では基本的にすべてのハードディスクが"/dev/sd"として扱われます。
IDEの転送モードには、メインメモリとハードディスクとのデータ転送方法として、
PIO(Programmed I/O)モードとDMA(Direct Memory Access)モードがあります。
PIOモードは、CPUがハードディスクに直接命令してデータを転送する方法です。
そのため、データの読み書きが行われている間は、CPUは他の作業ができないという欠点があります。
DMAモードでは、CPUに代わって専用のコントローラチップがデータの転送を管理します。
このため、CPUへの負担は少なくなるので、現在ではDMAモードを使うのが一般的です。
PIO(Programmed I/O)モードとDMA(Direct Memory Access)モードがあります。
PIOモードは、CPUがハードディスクに直接命令してデータを転送する方法です。
そのため、データの読み書きが行われている間は、CPUは他の作業ができないという欠点があります。
DMAモードでは、CPUに代わって専用のコントローラチップがデータの転送を管理します。
このため、CPUへの負担は少なくなるので、現在ではDMAモードを使うのが一般的です。
Ultra DMAは、従来のDMAを拡張した規格で、高速な転送速度をサポートしています。
Ultra DMAを利用するには、ハードディスク、マザーボードのチップセット、BIOSがそれぞれ
Ultra DMAに対応している必要があります。DMAモードなどIDEハードディスクのパラメータを確認したり、
設定したりするには、hdparmコマンドを使います。
Ultra DMAを利用するには、ハードディスク、マザーボードのチップセット、BIOSがそれぞれ
Ultra DMAに対応している必要があります。DMAモードなどIDEハードディスクのパラメータを確認したり、
設定したりするには、hdparmコマンドを使います。
- hdparmコマンド
次の例では、/dev/hdaに適用されているパラメータを表示します。
# hdparm /dev/hda /dev/hda: multcount = 61 (on) IO_S\support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 24792/255/63 , sectors = 203928109056, start = 0
32ビットI/Oサポートは、PCIバスからIDEインターフェースへのデータ転送方法を表します。
using_dmaはDMAの有効/無効を意味し、DMAモードが有効になっていれば、ディスクのパフォーマンスは大きく向上します。
using_dmaはDMAの有効/無効を意味し、DMAモードが有効になっていれば、ディスクのパフォーマンスは大きく向上します。
※ハードウェア的に対応していない項目を有効にすると、システムがハングアップすることがあります。
また、システム構成に照って最適な値は異なります。
実際利用するにあたっては、ハードウェアの対応を確認し、manマニュアルを熟読してください
また、システム構成に照って最適な値は異なります。
実際利用するにあたっては、ハードウェアの対応を確認し、manマニュアルを熟読してください
次は、32ビットI/Oサポートを有効にしています。
# hdparm -c3 /dev/hda /dev/hda: setting 32-bit IO_support flag to 3 IO_support = 3 (32-bit w/sync)
次は、読み込み速度を計測するによって、性能評価をしています。
# hdparm -tT /dev/hda /dev/hda: Timing cached reads: 1572 MB in 2.01 seconds = 783.77 MB/sec Timing buffered disk reads: 174 MB in 3.02 seconds = 57.62 MB/sec