SANでのストレージに対する読み書きフローを調べた。
SANで使用されるプロトコル
SANではFC/FCoE/iSCSIといったプロトコルでストレージとブロックアクセスする。
※いづれのプロトコルもSCSIコマンドをカプセル化するもの。
内臓、外付け、NW経由のストレージアレイの制御
ストレージへの読み書きが必要な際はCPUが制御装置として命令する。(メモリ↔︎ストレージ)
※内蔵ストレージ、外付けストレージの場合はただの箱であるため、
内蔵または接続されたパソコンやサーバのCPUが制御して読み書きする。
NW経由で接続するストレージ(ストレージアレイ)はそれ自体が通信読み書きする機能をもち、
NW経由で流れてくるデータをドライブに書き込んだり、ドライブから読み出したデータをNW経由で送り出したりする。
まさにサーバとして動作する。
サーバからの書き込みアクセス例
①ファイルシステム上のファイルに書き込み保存するため、サーバがHBAから書き込み命令飛ばす。
SANストレージのLBA(論理ブロックアドレス)#10番にSCSIコマンド発行
(LBA#10に10111001010…を書き込んで〜!)
②ストレージのコントローラがフロントエンドポートでデータを受信し
キャッシュメモリに書き込む。
③コントローラは書き込み完了(ACK)をサーバに送信する。
④サーバはACKの受信でデータ書き込み完了を認識し、メモリないのデータを削除する。
⑤コントローラはキャッシュメモリに蓄えたデータを、サーバからのI/Oとは非同期で
バックエンドポートを介してドライブへ書き込む。
※データフローにキャッシュメモリを解することで、
サーバからの転送速度と物理ドライブの書き込み速度差を吸収する。
サーバからの読み込みアクセス例
①サーバが読み取り処理をHBAからネットワークへ送信する。
②コントローラはフロントエンドポートで読み取り処理を受信し、
要求データを判別する。
③コントローラは要求されたデータをバックエンドポートを介して
ドライブから読み取り、キャッシュメモリへ書き込む。
④コントローラはキャッシュメモリへ書き込んだデータを
フロントエンドポートからサーバのHBAへ送信する。
※読み取り処理の過程でキャッシュメモリへデータを配置するのは
再利用による高速化を実現するため。
・SCSIコマンド
→ストレージとコンピュータが通信/制御を行う際に利用されるコマンド群。