鱒身(Masu_mi)のブログ

知った事をメモする場所。

minio周辺の調査

minio は単なるS3互換ObjectStorageだと思っていたけどそうじゃないらしい。 モダンなクラウドシステムならSANやRAIDみたいな事を要請しないという事だった。 きっと彼らはクラウド上で上手く分散するオブジェクトストレージを目指している。 ただ詳細を追ったところ直近は追いかけないでいる事にした。

Minio 概要と期待したい事

minio はsimpleを心がけている。その1つとしてminio はImmutableデータを強調している。 “Delete, Updateなどの処理はトランザクションが必要となりアプリケーションで非常に多様なトランザクション単位が考えられるのでアプリケーションで行うべき” という立場だ。 そして管理が複雑になるためIAMも敢えて実装しない方針をとっている。 なので今後minio はコンテナやPaaS上で上手く協調するオブジェクトストレージに向かっていくのだろう。 (と思ってたら書いている記事を見つけた)

またインタフェースは単純なものだけを提供する方向にしている

参考にしたい事は、レプリケーション・データリペア・ディスク障害検知の実装と運用しやすい設計とコマンドラインインタフェースの3つ。

以下に詳細を追ってみて気になった箇所をメモする。

なんかDeleteが実装されてる

blogとかでDeleteとか、あえて実装していないって謳っているのに見つけてしまった。分散管理で不都合はないと思い返したのだろうか? 経緯が気になる。

このコードだと素朴な削除しているので、操作ログまたはメタ情報が管理されてないとレプリケーション・データリペア時に削除済みオブジェクトが復活しまう。 削除済み or 未作成を判断する仕組みは見つけられなかった。

なんかネットで見つかったコンポーネント概要が実装されていない

オブジェクトを保存するFS, ブロックデバイスはDonutと呼ばれるコンポーネントで抽象化・管理する らしいが詳細は不明。 ところが現状はDonutなどでgrepしても何も出てこない。

感想

コミュニティを少し眺めただけだとDelete機能が追加されている経緯がわからなかった。 またIAMを拒否しているけどIssueでIAM の一部機能の実装が提案されていた。本筋の分散管理は全体像が読めなかった。 6ヶ月から12ヶ月で大枠が決まるらしいし(リンク先ではコミュニティに参加するなら今だよって提案されてるけど)一旦は追わず全体像を待ってからで良いと思った。 分散管理部分をmc とかクライアント側でやる方針に転換したかも知れないので他リポジトリは眺めても良さそう。

補足だけど、入力に一致するサブコマンドがない場合に候補を表示する機能を実現するためにTrie木を使ってた