大量の画像ファイルを配信するサーバーを作ろうと思っています。


調べていくと、
◆大量のファイルを一つのディレクトリで管理するのはディスクアクセスの低下を招き良くない
◆ext3などでは一つのディレクトリ内に大量のファイル(1万個とか)を作ると、動作が遅くなる
◆ReiserFSはext3の欠点が解消されている
など、大量のファイルを配信する難しさがわかりました。。

そこで質問です。

◇ReiserFSだと一つのディレクトリ下に(/images/)に10万個×10kbのファイルを保持していても、安定したディスクアクセスを維持できるのでしょうか?出来ない場合は解決策を教えて下さい。


よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/06/25 21:20:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:nurse No.2

回答回数13ベストアンサー獲得回数2

ポイント35pt

ReiserFSは知らないので解決策だけ。

ファイルのMD5なりSHA1ハッシュなりを取って、

最初の何バイトかで分けるとよろしいかと。

1バイトなら均等に 00 ~ FF の 256個に分かれますから、

全部で100万ファイルくらいになるまではこれでいけるでしょう。

00/00 ~00/FF ~ FF/00 ~ FF/FF

と2段にすれば数億ファイルくらいまでいけるかと。

# その前にディスクの容量を使い切るでしょうが、

# その場合は 00-7F をディスク1などとすればよいでしょう

id:ikasamt

ありがとうございます。ハッシュで分けるのって便利ですね。256×256=65536個のディレクトリってことは、1ディレクトリあたり1万個入れて合計6億個って事ですか?つまり1ディレクトリに1万ファイルくらいなら余裕だと言うことですかね。

勉強になりました。

2006/06/23 07:17:07

その他の回答1件)

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155

ポイント35pt

非常に小さなファイルをランダムに配信する場合

ファイルシステム上の安定性より単一ディスク上に

保存される事になるためディスクの同時ランダム

アクセス時の性能の揺らぎが問題になると思われる。

確実に安定して常に一定した速度で大量の小さな

画像ファイルを配信する目的であれば合計データ量

が高々1Gなのでディスク上のファイルに頼らず

全てメモリー上に展開した状態で配信する事をお勧め

します。

安定性とは関係ないですが、

1.局所的にアクセスが集中するので、

  障害が発生した場合全滅する可能性がある。

2.コマンド処理時の動作が異常に遅い

  /異常動作の弊害が考えられる。

============================================

ベンチマーク

http://www.wikihouse.com/linuxfs/index.php?%C0%AD%C7%BD%C8%E6%B3...

http://www.namesys.com/benchmarks/v4marks.html

ファイルシステム比較

http://lc.linux.or.jp/lc2002/papers/sugaya0920h.pdf

http://www.osdl.jp/osdl/docs/ks4-200304/ks4_jfs.pdf

ext2/3 診断ツール

http://www.ipa.go.jp/software/open/forum/development/download/da...

ReiserFS

http://www.atmarkit.co.jp/flinux/rensai/fs05/fs05a.html

id:ikasamt

なるほど。メモリを多く積むべしと。教えていただいたpdfやurlによるとXfsやReiserFSの方がext3より大量のファイルを扱うに適しているようです。信頼性に不安はあるみたいですが。

勉強になります。

2006/06/23 07:19:19
id:nurse No.2

回答回数13ベストアンサー獲得回数2ここでベストアンサー

ポイント35pt

ReiserFSは知らないので解決策だけ。

ファイルのMD5なりSHA1ハッシュなりを取って、

最初の何バイトかで分けるとよろしいかと。

1バイトなら均等に 00 ~ FF の 256個に分かれますから、

全部で100万ファイルくらいになるまではこれでいけるでしょう。

00/00 ~00/FF ~ FF/00 ~ FF/FF

と2段にすれば数億ファイルくらいまでいけるかと。

# その前にディスクの容量を使い切るでしょうが、

# その場合は 00-7F をディスク1などとすればよいでしょう

id:ikasamt

ありがとうございます。ハッシュで分けるのって便利ですね。256×256=65536個のディレクトリってことは、1ディレクトリあたり1万個入れて合計6億個って事ですか?つまり1ディレクトリに1万ファイルくらいなら余裕だと言うことですかね。

勉強になりました。

2006/06/23 07:17:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません