ggaoedに見るLinux I/O戦略 の0
ggaoedはLinuxのモダンなI/O戦略のいくつかを活用して書かれたATA over Ethernet daemonで、当然Linuxに特化している。
ATA over Ethernet (AoE)
AoEは、読んで字のごとく"ATAパケットをEthernet経由で転送する"プロトコルとなっている。位置的にはiSCSIやLinuxのnbd(Network Block Device)に近いが、
- iSCSIやNBDはTCPを使うが、AoEはEthernetを直接使う
- ATAコマンドを直接扱うので、read/writeやはATAのものを使う(原理的にはPacketコマンドとしてSCSIコマンドを転送することも出来る)
- iSCSIに比べれば圧倒的にシンプル。nbdよりは多少複雑(ATAデバイスのエミュレーションは依然必要なため)。
という違いがある。
ggaoedは"ターゲット実装"であり、ATA接続のHDDをエミュレーションして、Linux-PCをネットワーク接続されたATAドライブに見せる。
ggaoedのソースコード
AoEはかなりシンプルなプロトコルなので、ggaoeのソースコード構成も相当にシンプルなものになっている。
- http://code.google.com/p/ggaoed/source/browse/trunk/device.c
- http://code.google.com/p/ggaoed/source/browse/trunk/mem.c
- パケットバッファを確保する。バッファはページ単位となる。
- http://code.google.com/p/ggaoed/source/browse/trunk/network.c
他に、daemonの設定のためのインターフェースなどが有る。