Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

分散ストレージCephのデータ破壊検知修復機能は本当に動作するのか

 分散ストレージCephのデータ破壊検知修復機能は本当に動作するのか

以下動画のテキストです
https://youtu.be/uN_Gn-bfiSI

Satoru Takeuchi

December 11, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. 今回話すこと • 分散ストレージCephのデータ破壊検知&修復機能の動作確認 ◦ レプリカが2個以上ある状態で1つのレプリカが壊れても、正しいデータから修復できる ◦ …という触れ込みだが、本当なのだろうか ?  • 「その63

    ディスクI/O障害のエミュレーション ~既存ターゲット編~」を見ていると理解 しやすい ◦ 軽い事例紹介なので、難しいところは雰囲気を理解するだけで OK
  2. Cephのアーキテクチャ node node node disk OSD disk OSD disk OSD

    RADOS(独自インタフェースのオブジェクトストレージ ) ファイルシステム ブロックデバイス S3互換 オブジェクトストレージ
  3. オブジェクトを作成 $ cat /tmp/test.data Hello Ceph world! $ rados -p

    replicapool put test-object test.data RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ write write
  4. GETする場合に読むOSDを得る $ ceph pg ls-by-pool replicapool PG OBJECTS … UP

    ACTING … 1.a 1 … [1,0]p1 [1,0]p1 … オブジェクトを読み出すのは dust0上のOSD1から RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ read
  5. 疑似不良セクタを設定 $ sudo dmsetup message dust1 0 addbadblock 9016 0

    $ sudo dmsetup message dust1 0 enable RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ readするとI/Oエラー発生 データ
  6. オブジェクトをGETすると中身は正しい $ rados -p replicapool get test-object /tmp/out.data $ cat

    /tmp/out.data Hello Ceph world! RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ read データ readするとI/Oエラー発生 したはずだが…
  7. OSDのログにデータを修復した痕跡が出ている … _aio_thread got r=-5 ((5) Input/output error) … _aio_thread

    translating the error to EIO for upper layer … log [ERR] : 1.a missing primary copy of 1:5756f1fd:::test-object:head, will try copies on 0 RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ データ