Parallel I / O in Practic:Parallel File System(1-72)


My Reserches

INDEX

Introduction and I/O Software Stacks

I/Oシステムで必要なもの

  • データのマッピングとストレージの抽象化
  • 複数プロセスからのアクセス管理
  • 複数のI/Oデバイスを単一のI/Oスペースとして抽象化

パラレルI/Oで必要なもの

  • パラレルI/Oのためのソフトウェア
  • 複数のI/Oデバイスを単一のI/Oスペースとして抽象化
    • ストライピング
    • ネットワークリンクのleverage
  • 単純なバイトストリームファイルモデル
    • バイト単位でファイルの処理は困難。
    • 他のソフトウェアによる抽象化が必要

I/O for Computational Science

layer.jpg

Parallel file system(PFS)レイヤ

  • 論理空間の管理、ストライピングなどのデータへの効率的なアクセスの提供
  • ミドルウェアに効率的なインタフェースの提供
  • 例)PVFS, GPFS, Lustre

Middleware layerレイヤ

  • 複数プロセスからのアクセスを管理
    • 集団I/O、アトミック性
  • ミドルウェアの命令とPFSの命令の効率的なマッピング
  • スケーラブルなファイル名の名前解決
  • 例) MPI-IO, UPC-IO

High level I/O libraryレイヤ

  • domainとマッチしたファイルフォーマットの抽象化
  • ミドルウェアのためのインタフェース
  • ミドルウィアレイヤでできない最適化
    • 変数の属性のキャッシング
    • データセットのChunking
  • 例) HDF5, Parallel netCDF

Parallel File System

  • ストライピングを行う
    • concurrent I/O operationだけでなく、serialなoperationでもパフォーマンス向上
  • アクセス管理(同期)
    • coherenceのためには、これによるボトルネックはやむを得ない
  • ほとんどのファイルシステムではsequential consistencyを用いているらしい。

Parallel Fle System Architectures


Shared Storage Architectures

  • 物理/仮想ディスクブロックへ直接アクセスできる
  • クライアントはブロック単位で処理
    sharedArc.jpg

Parallel File/Object Server Architectures

  • ファイルデータを複数のサーバへ分散
  • クライアントはファイル単位で処理
    • ディスクブロックはクライアントには見えない
  • それぞれのサーバ(IOS)は自分のストレージ上のデータの構造を把握している
  • ロックの管理はたいてい他のサーバが行う
    parallelArc.jpg

Block-Oriented VS Region-Oriented Access Mechanisms

クライアントのデータをサーバ上のディスクへ保存する場合、2つのアプローチが存在

Block-Oriented Access

  • ネットワークを介してread-modify-writeをする必要がある
    block.jpg

Region-Oriented Access:こちらのほうが柔軟でオーバヘッドが小さい

  • read-modify-writeのような処理はサーバー側で処理される
    region.jpg

Example Parallel File Systems

  • 共通点(PVFS, GPFS, Lustre)
    • High performance & Scalabilityを実現する設計
    • グローバルネームスペースの提供
    • 耐障害性
    • 数GB/sec
    • クラスターやクラスターをまたいだ環境で使用

PVFS(Parallel Virtual File System)

概要

  • File-based storage model
    • ファイルを分割し分散して保存
    • byte-rangeで同期
    • Single server type also stores metadata
    • Servers assigned roles: metadata, data, or both
      pvfs.jpg

PVFS Architecture

  • TCP/IP, InfiniBand?, Myrinet上で動作
  • サーバーはローカルのファイルシステム上でデータを保存
  • カーネル空間とユーザ空間をMix
    • リンクやストレージを冗長化
      pvfsArc.jpg

ストレージ管理

  • ストレージはdataspaceと呼ばれるエンティティを持つ
    • Handle: ファイルシステム上のユニークな参照
    • byte granulatirtyでアクセス
    • keyword/value pair space

ファイルとディレクトリ

  • ディレクトリはMetafileへのHandleをもつ
  • Metafileは以下をもつ
    • Permission,ownerr,extended attributes
    • データを持つDataspaces(Datafiles)への参照
    • Distribution Functionのためのパラメータ
  • Datafileは実際のデータを持つ(たいていは、サーバー上で分散している)
  • DestributionfunctionはDatafileと論理ファイルのマッピングを決定
    pvfsFileDirec.jpg

Consistency

  • writesとreadはアトミックには行わず他のソフトウェアに管理をゆだねる
  • Metadataに対する操作はアトミックに行う。
    • ロックは必要ない

File Creation

pvfsFileCreation.jpg
  • File Writeにおける同期は別のレイヤのソフトウェアに任せる
  • クライアント側でメタデータのキャッシュする
    • 一貫性は保たない

GPFS(IMB's General Paralles File System)

概要

  • Tiger Shark multimedia file systemから発展
  • ブロック単位で行う
  • Asymmetricな実装
    • Symmetric: 全てのノードが同一のタスクを行う
    • Asymmetric: 役割を分担

Architecture

  • VSD(Virtual Shard Disk)やNetwork Shared Disk(NSD)によりサーバへのアクセスが可能
  • RAIDはリンクの冗長性により障害を隠蔽
    gpfsArc.jpg

ストレージ管理

  • RAIDにより並列アクセス
  • それぞれのRAID loopは二つのI/Oサーバーからアクセス可能

Consistency

  • ファイルシステムへPOSIX1インタフェースを提供
  • 分散byte-rangeロックがデータのコンシステンシーを提供
    • トークンはToken Managerによって管理
    • node1:0...EOF→node2:1024-2048のロックをリクエスト→node1:1024-EOFを解放
  • メタデータの一貫性はディレクトリレベルで行う

Client Caching

  • Page Poolがクライアント側のキャッシュを助ける
    • データをスイッチを介して転送しないのでパフォーマンスの向上

Lustre


概要

  • Linuxクラスタ上で動作
  • オブジェクト指向パラレルファイルシステム
    • データストレージはオブジェクトで構成
    • このオブジェクトはバイトストリームとしてアクセスや操作が可能

Lustre Architecture

  • OSDと共有ストレージが結びつきOSDのFail Overが可能
    • ストレージに冗長性はない
  • 既存のネットワークを使用
    • Fail Overのために二つ目のMDSが存在する。
      lustreArc.jpg

オブジェクト指向パラレルファイルシステム

  • I/Oとメタデータ操作の分離
  • I/Oをネットワーク上のOSDに任せる
    • Low-level allocationや同期は保存されるデバイスによって処理される
    • 高い並列性を提供
  • OSから独立したパラレルファイルシステム

メタデータ

  • 単一のMDSがメタデータを管理
  • MDSがネームスペースを管理
    • name, owner, permission. locks, OSD上のlocation
  • Fileのメタデータ(attributes, status)とデータ(content)は独立に保存/ 操作される
  • MDSはメタデータをクライアントへ提供するだけで、その他の処理をOSDに任せる

ストレージ管理

  • MDSがファイルの場所を教える
    • どのOSDがファイルの断片を持っているか?など
  • データはOSDを介してストライピングされる
    • デフォルト: 4-way
    • 自分の環境に合わせて手動で設定する必要あり

Consistencyとロック

  • データやメタデータのロック
    • OSD: オブジェクト(ファイル)のロックを管理
    • MDS: メタデータのロックを管理
  • intent-basedロックを使用
    • 操作に必要なメッセージを減らす
  • byte-rangeロックを提供

POSIX I/O Interface

概要

  • OSとのインタフェースを提供
    • アプリケーションがOSの基本的なサービスを容易に利用できるようにするためのもの
  • 集団I/Oのための機能はない
  • クラスタ共有ファイルのためのPOSIXの保障はvery expensive
    posix1.jpg

Reading, Writing

Cライブラリ fcntl.h unistd.h

  • open(file, status)
  • read(fd, buf, num)
  • write(fd, buf, num)
  • close(fd)

IOR Access Patterns for Shard Files

posix2.jpg

IOR POSIX Segmented Results

posix3.jpg
posix4.jpg
posix5.jpg

結論

  • 基本的なI/Oでは有用
  • しかしパラレルI/Oでは力不足
  • パフォーマンスを上げるなら、並列アプリケーションで使用すべきではない