ネットが遅くてイライラしてない!?

Webシステムのセッションデータをファイルで持とうと思うのですが、
1ディレクトリに作れる最大ファイル数に上限はありますか?

無限という人もいれば、数千個くらいで辞めておいた方がいいという人も
いますが、どちらなんでしょう?

CentOS 5です。
(すいません。ファイルシステムは不明です。)

このQ&Aに関連する最新のQ&A

A 回答 (3件)

OS上の制約は#1さんの回答の通り事実上無限ですが、ディレクトリ中のファイル検索は、データベースじゃなくて、ディレクトリファイルをシーケンシャルに読み込んでの検索なので、既存ファイルのオープン処理はファイル数が増えるだけ遅くなります。


そういった意味では数千個くらいというのは目安でしょう。具体的な時間は実環境で実測するしかないです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。

> ディレクトリファイルをシーケンシャルに読み込んでの検索
勉強になりました。つまり、インデックスがないということですね?

> 既存ファイルのオープン処理はファイル数が増えるだけ遅くなります。
セッションはDBに格納する方向で検討してみます。

ありがとうございました。

お礼日時:2008/05/13 21:51

ext2 や ext3 はシーケンシャルに見ていきますが, その他のファイルシステムはほとんどもっと賢い方法を使ってると思います.

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考になりました。

セッションデータの保持が理由でしたので、DBに任せようと思います。

ありがとうございました。

お礼日時:2008/05/14 23:45

カーネル付属文書にext2の説明がありました。


以下引用です。
============================================
現行の単方向リンクのリストによるディレクトリの実装で、
一つのディレクトリ内のファイル数は、
実運用上約 10-15k 個が上限になります。
この制限はこのような大きなディレクトリ内のファイルを作成および削除 (さらに検索) する時のパフォーマンスの問題のためです。
ディレクトリインデックスのハッシング (開発中) を使用すれば、
パフォーマンスの問題なしに一つのディレクトリに 100k-1M+ 個のファイルが置けます (この時には RAM サイズが問題になります)。

一つのディレクトリ内のファイルの (無意味な) 絶対的な上限 (ファイルサイズによって課されるもので、
現実的な制限は明白にはるかに少ない) は 130兆ファイル以上です。
ユニークなディレクトリエントリを構築するための名前は 4 文字では足りないので、
8 文字のファイル名にしなければならないということを考慮しなければもっと多くできますが、
考慮してすらユニークなファイル名を使い果たしてしまいそうです。

参考URL:http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

> 現行の単方向リンクのリストによるディレクトリの実装で、
> 一つのディレクトリ内のファイル数は、
> 実運用上約 10-15k 個が上限になります。
やっぱり少ないんですね。

> ディレクトリインデックスのハッシング (開発中) を使用すれば、
こちらを検討するよりかは、ファイルでなくDBに格納する方を
考えて見ます。

ありがとうございました。

お礼日時:2008/05/13 21:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qディレクトリ内に作成できる最大ファイル数

Windows2000サーバでNTFSファイル システムを使用しています。
FAT16やFAT32では上限があるようですが、NTFSにはそのような情報が見つかりません。
理論的にも上限はないのでしょうか。

Aベストアンサー

NTFSは、ルートディレクトリ、サブディレクトリ共に、制限は無いようです。

フォーマットの種類 ルートディレクトリの制限数 サブディレクトリの制限数
NTFS               :制限無し           制限無し
FAT16              :512             65534
FAT32              :65536            65534

『Microsoft サポートオンライン:W98:FAT16、FAT32 でディレクトリ内に作成できる最大ファイル数』
http://support.microsoft.com/default.aspx?scid=kb;ja;436213

↓のFAT16、FAT32の所が、↑と違いますが・・・。

『Windowsのファイルシステム表』
http://www2s.biglobe.ne.jp/~system/doc/winfile.htm

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;436213,http://www2s.biglobe.ne.jp/~system/doc/winfile.htm

NTFSは、ルートディレクトリ、サブディレクトリ共に、制限は無いようです。

フォーマットの種類 ルートディレクトリの制限数 サブディレクトリの制限数
NTFS               :制限無し           制限無し
FAT16              :512             65534
FAT32              :65536            65534

『Microsoft サポートオンライン:W98:FAT16、FAT32 でディレクトリ内に作成できる最大ファイル数』
http://support....続きを読む

Qファイルシステムが「ext4」または「xfs」など

会社でCGI/perlの会員管理システムをレンタルサーバーに設置することになりました。

使用するCGIは、会員の数だけディレクトリが作成されます。
したがって、1つのディレクトリ内に 32,000個のディレクトリしか配置できないext3ファイルシステムでは会員数は3万2千人でが上限となり非常に困ります。(「.」や「..」が含まれるので実質的には、31,998個が上限)

調べたところ、ほとんどのLinux系のレンタルサーバーは「ext3」というファイルシステムでした。
ファイルシステムの種類を公表していないところがほとんどなので調べるのに苦労します。

当社はサーバー管理者が不在で、root権限付きの専用サーバーを借りてもサーバー構築ができません。
共有サーバーのように手軽に利用できて、ファイルシステムが「ext4」または「xfs」などを採用している専用サーバーはないでしょうか?

・今分かっていること
CentOS 5.5からは、ファイルシステムとしてext4が利用できる
「ext4」は64,000個まで可能
「xfs」は2,147,483,647(21億強) 個まで可能

会社でCGI/perlの会員管理システムをレンタルサーバーに設置することになりました。

使用するCGIは、会員の数だけディレクトリが作成されます。
したがって、1つのディレクトリ内に 32,000個のディレクトリしか配置できないext3ファイルシステムでは会員数は3万2千人でが上限となり非常に困ります。(「.」や「..」が含まれるので実質的には、31,998個が上限)

調べたところ、ほとんどのLinux系のレンタルサーバーは「ext3」というファイルシステムでした。
ファイルシステムの種類を公表していないところがほ...続きを読む

Aベストアンサー

> 使用するCGIは、会員の数だけディレクトリが作成されます。

システム構築の最初のデザインで、会員管理をどうデザインするかといった、SEにとっては、一番アイデアを出す箇所です。

単純には、ディレクトリ階層を2段階方式にする。
32,000の2乗できることになります。

この方式は、
NECのbiglobe会員管理にも使われています。
nnnn@xxx.biglobe.ne.jp
といった具合です。

そのほかアイデア次第でいろんな方式があると思います。


人気Q&Aランキング