ふと思いついたのでメモ。個人ユースだとVPSの容量とかって余るじゃないですか。
特にHDDで提供されてる奴とか、ちょっとブログ動かしたり、軽いウェブサービスを走らせているぐらいだと全然使いきらないわけです。
ライトなサービスであっても、重要度が高いデータとかはS3に逃したりするので余計に。
んでまぁ余った容量を何に使うかという話になった時に、オンラインストレージというか、ファイルサーバにするというのはまぁまぁありがちな話。
で、その時に空き容量をP2P(とか、周辺)の技術でシェアすることで冗長性を高めることはアリじゃないかと思ったのです。
P2Pといえば、NapsterとかSkypeとか、WinMXとかWinnyとか、Bittorrentとかが多分有名。
で、こういうものに共通する問題として、ネットワークがすごくアドホックで、しかも多くの末端はフルコーンじゃない。
どういうことかというと
- ネットに繋がったり切れたりする(アドホック)
- フルコーンじゃない(NAT越えの必要あり)
っていうこと。一つ目は常時接続の普及でマシになったと思ったら、テザリングでスプラトゥーンやる勢とか居るらしいので、古くて新しい問題になるかもしれない。
でもまぁ、インターネット上のサーバ機ならこの辺りはほぼ完全に解決されている。あたりまえだけど。
あとは各サーバに、データを送受信するための端末をインストールする。
そしてネットワークのために供給できるディスク容量の上限値を指定する。まぁこんなところだろう。
で、後は自分のファイルを指定したフォルダにいれると、適当なノードに転送されて保存される。まぁmogileFSみたいなもの。
十分な鍵長で暗号化しておけば、まぁ預け先で解読されることはないと思うが、ついでに何分割化していくつかのノードに分散して預けるカタチにすればいい。
あとは預け先をどう管理するかだけども、中央集権的に、どのファイルのどのパーツがどこのノードにあるかを管理するサーバがある方がいいかな。
各端末で預かったデータが破損する以外に、意図的に消す場合もあると思うので、ちょくちょく適当なソルト混ぜたファイルハッシュ値を各ノードに尋ねて、本当にファイルを保持しているかを確認しつつ、あからさまにファイル消してたらペナルティを科しながら他のあいてるノードにレプリカを作りなおす、みたいな処理が必要だけど。
一言で言えば、暗号化されつつ、開かれたmogileFSということになるのかも。
どうだろうか。
コメント