5.3. 記憶装置へのアクセス

5.3.1. デバイスファイル

記憶装置のデバイスファイルは以下の通り。

デバイスファイル説明
/dev/hdaIDEプライマリマスタに接続されたドライブ
/dev/hdbIDEプライマリスレーブに接続されたドライブ
/dev/hdcIDEセカンダリマスタに接続されたドライブ
/dev/hddIDEセカンダリスレーブに接続されたドライブ
/dev/sda1番目のSCSI/SATA/USB/IEEE1394デバイス
/dev/sdb2番目のSCSI/SATA/USB/IEEE1394デバイス
/dev/sdc3番目のSCSI/SATA/USB/IEEE1394デバイス
/dev/sdd4番目のSCSI/SATA/USB/IEEE1394デバイス
/dev/sr01番目のSCSI/SATA/USB CD/DVDドライブ
/dev/sr12番目のSCSI/SATA/USB CD/DVDドライブ
/dev/st01番目のSCSIテープドライブ
/dev/st12番目のSCSIテープドライブ

カーネル2.6.21以降はIDEデバイスもSCSIデバイスと同じ扱いになったため、IDEハードディスクも/dev/sdNといったデバイス名になる。

5.3.2. ハードディスクの管理

ハードディスクは5つのタイプに分かれる。

  • SATA(Serial ATA)
  • SCSI
  • SAS
  • USB
  • IEEE1394

Linuxの場合、SATAハードディスクもSCSIハードディスクとして扱われる。
なおKernel 2.6.21以降では基本的にすべてのハードディスクは/dev/sd*と扱われる。

IDEの転送モードにはメインメモリとハードディスクとの転送方式としてPIOモードDMAモードがある。

  • PIOモード … CPUがハードディスクに直接命令してデータを転送する方式。欠点はデータ読み書き中はCPUは他の処理を実行できない点がある
  • DMAモード … CPUとは異なり専用のコントローラがデータの伝送を管理する。現在一般的な手法

Ultra DMA は従来のDMAを拡張した企画で高速転送速度をサポートしている
なおUltra DMAの利用はハードディスク/マザーボードのチップ/BIOSが対応している必要がある。

hdparmコマンド

DMAモード、IDEハードディスクのパラメータを確認/設定できるコマンド。
オプションなしでは適用されているパラメータを表示する。

hdparm [オプション] [デバイスファイル]
オプション説明
-iハードディスクの詳細情報確認
-Iドライブから直接情報を得る
-c数値32bit I/Oサポート(0:無効化、1:有効化、3:同期シーケンス付きで有効化)
-d数値DMAモードの使用不使用を指定 (0:無効化,1:有効化)
-W数値ライトキャッシュのON/OFF(0:無効化,1:有効化)
-tバッファキャッシュを使わずに読み込み速度を計測する
-Tバッファキャッシュの読み込み速度をテストする

sdramコマンド

SCSI/SATA/USBディスクに対してDMAモード、IDEハードディスクのパラメータを確認/設定できるコマンド。
オプションなしでは適用されているパラメータを表示する。

sdparm [オプション] [デバイスファイル]

sdparm --conmmand=stop [デバイスファイル] # ディスク回転の停止
sdparm --clear=WCE [デバイスファイル] # ディスクキャッシュの無効化

scsi_idコマンド

SCSI接続の記憶装置のWWIDの確認を行えるコマンド。

scsi_id

5.3.3. SSDの管理

SSDはHDDと異なりフラッシュメモリであるためHDDと削除動作が異なる。
SSDはデータを削除しても削除フラグが付けられるだけでデータは削除されない。
削除した箇所に再度書き込みを行う場合は、データを消去して書き込みを行う必要がある。
そのため長時間SSDを利用すると再利用ブロック(削除フラグが付いたブロック)が増えていくにつれてパフォーマンスが低下する。

なおNVMeという新しい規格がSSDでは利用できる。
またNVMeはPCI Express バスから SSD に接続するための規格である。

Trimという機能を使うことでブロックデータも削除するため速度低下が起こりにくくなる。
Trimの実行にはfstrimコマンドを実行する。
Trimの確認は以下コマンドで行う。

hdparm -I /dev/sda | grep TRIM

また、SSDには書き換え回数の上限があるため頻繁に書き込まないように以下内容に注意する。

  • スワップ領域をSSD上に作成しない
  • noatimeオプションをつけてファイルシステムにマウントする
  • 頻繁に書き込まれる/tmpなどはRAMディスクを利用する

fstrimコマンド

Trimの実行を行うコマンド。
ファイルシステムで使用していない領域を破棄できる。

fstrim -v /

NVMe

NVMeはSSD接続のための PCI Expressベースのインターフェイス規格
AHCIと比べ、SSDの性能を十分に発揮できる。

AHCI

AHCIは、IDEに比べてはるかに高速なSATAを活かせるインターフェース仕様として登場した規格。
インテルが策定している。
IDEとの互換性を重視したSATAの規格SATA1.0では速度より互換性が重視され、性能は犠牲となったが、SATA2.0でAHCIは規格化され、SATA本来の機能・性能を満たすことができるようになった。

5.3.4. iSCSI

iSCSIはTCP/IP上でSCSIプロトコルを利用できるようにする仕組み
クライアント/サーバモデルを採用している。
iSCSIによりネットワーク上のストレージをローカルストレージのように利用できる。 SANを構築できる。

LinuxにおいてはIETLIO TargetでiSCSIターゲット(iscSIストレージ)を構築できる。
なおデータの要求端末(クライアント)はiSCSIイニシエータと呼ばれる。

用語説明
ターゲットiSCSIストレージ
イニシエータiSCSIクライアント
LUNストレージ内の論理ドライブ番号(記憶装置の識別番号)
HBANICに相当するインターフェイスアダプタ
WWID / WWNMACAddressに相当する識別ナンバー

なお設定ファイルはiscsid.confとなる。

iscsiadmコマンド

iscsiadm [オプション]
オプション説明
-m / –mode [モード]モードの指定(discovery: 接続先のiSCSIターゲットの取得, node: 登録済みisCSIターゲットの取得, session: セッション一覧の取得)
-l / –loginiscsiターゲットにログイン
-u / –logoutiscsiターゲットからログアウト
-t / –typeタイプの指定
-p / –portal=IPアドレス[:ポート]接続先の指定
-T / –targetname=IQNiSCSIターゲットの指定

SAN

SAN(Storage Area Network)はストレージ専用のネットワークを使用してストレージにアクセスする技術。
物理接続にファイバチャネル、接続にSANスイッチが使用される。