• ベストアンサー

1ディレクトリに作れるファイル数(CentOS 5)

Webシステムのセッションデータをファイルで持とうと思うのですが、 1ディレクトリに作れる最大ファイル数に上限はありますか? 無限という人もいれば、数千個くらいで辞めておいた方がいいという人も いますが、どちらなんでしょう? CentOS 5です。 (すいません。ファイルシステムは不明です。)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.2

OS上の制約は#1さんの回答の通り事実上無限ですが、ディレクトリ中のファイル検索は、データベースじゃなくて、ディレクトリファイルをシーケンシャルに読み込んでの検索なので、既存ファイルのオープン処理はファイル数が増えるだけ遅くなります。 そういった意味では数千個くらいというのは目安でしょう。具体的な時間は実環境で実測するしかないです。

sweepea
質問者

お礼

ご回答ありがとうございました。 > ディレクトリファイルをシーケンシャルに読み込んでの検索 勉強になりました。つまり、インデックスがないということですね? > 既存ファイルのオープン処理はファイル数が増えるだけ遅くなります。 セッションはDBに格納する方向で検討してみます。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

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

sweepea
質問者

お礼

ご回答ありがとうございます。 参考になりました。 セッションデータの保持が理由でしたので、DBに任せようと思います。 ありがとうございました。

noname#136147
noname#136147
回答No.1

カーネル付属文書にext2の説明がありました。 以下引用です。 ============================================ 現行の単方向リンクのリストによるディレクトリの実装で、 一つのディレクトリ内のファイル数は、 実運用上約 10-15k 個が上限になります。 この制限はこのような大きなディレクトリ内のファイルを作成および削除 (さらに検索) する時のパフォーマンスの問題のためです。 ディレクトリインデックスのハッシング (開発中) を使用すれば、 パフォーマンスの問題なしに一つのディレクトリに 100k-1M+ 個のファイルが置けます (この時には RAM サイズが問題になります)。 一つのディレクトリ内のファイルの (無意味な) 絶対的な上限 (ファイルサイズによって課されるもので、 現実的な制限は明白にはるかに少ない) は 130兆ファイル以上です。 ユニークなディレクトリエントリを構築するための名前は 4 文字では足りないので、 8 文字のファイル名にしなければならないということを考慮しなければもっと多くできますが、 考慮してすらユニークなファイル名を使い果たしてしまいそうです。

参考URL:
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/filesystems/ext2.txt.html
sweepea
質問者

お礼

ご回答ありがとうございました。 > 現行の単方向リンクのリストによるディレクトリの実装で、 > 一つのディレクトリ内のファイル数は、 > 実運用上約 10-15k 個が上限になります。 やっぱり少ないんですね。 > ディレクトリインデックスのハッシング (開発中) を使用すれば、 こちらを検討するよりかは、ファイルでなくDBに格納する方を 考えて見ます。 ありがとうございました。

関連するQ&A

  • linux上の総ディレクトリ数

    どこで質問しようかと思いましたが 当方、perlを使用しておりますのでこちらで質問させて頂きます。 ファイルシステムはext3を使用しております。 総ファイル数の上限にはinodeで指定しますが、 総ディレクトリ数に関しては上限は無いのでしょうか。 1ディレクトリ内(サブディレクトリ)のディレクトリ数上限は32768 個までと情報がありますが 総ディレクトリ数が解りませんのでご存知の方がいらしたら宜しくお願い致します。 また、上限はあるけどパフォーマンス上、いくつ位までで止めておいたほうが良いなどの情報やアドバイス等も頂けますと嬉しいです。

  • Linuxのディレクトリーとファイル数の上限

    Linuxのディレクトリー数上限が約32,000、ファイル数上限が約10,000とありますがサブディレクトリーでも同様の制限でしょうか。例として Aディレクトリーの下にBサブディレクトリーとCサブディレクトリーが有る場合ですが、 Bサブディレクトリー:ファイルを10,000作成 Cサブディレクトリー:ファイルを10,000作成 Aディレクトリーから見るとサブディレクトリー経由ですが ファイルを20,000作成している事になりますが問題は無いという事でしょうか。 単純な事ですが、確認しておきたいので宜しくお願い致します。

  • CentOS5内ディレクトリをサブ含めて全てコピペ

    お世話になります。 Java6のサーブレット、JSP、Tomcat6、Apache2.2などを利用して、 Eclipseで動的Webサイトを開発中です。 そこで、ご質問内容ですが、 Java6を利用して、 CentOS5内ディレクトリを サブディレクトリや、その中にある全ファイルを含めて、 別名ディレクトリにして、 丸ごとコピペする方法(やり方)を教えてください。 (例えば、   etc/cron.dailyディレクトリと、そのディレクトリ内の全ファイルを丸ごとコピーして、   etc/cron.backupディレクトリとしてペーストする方法を教えてください) 以上になります。 お手数をおかけいたしますが、 よろしくお願い致します。

    • ベストアンサー
    • Java
  • ファイルシステムが「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億強) 個まで可能

  • FTP速度はディレクトリ数にも依存しますか?

    毎日のデータのやりとりにFTPを使用しています。回線はADSL。この回線は「このデータのやりとり専用の回線」なので、他の通信などにはいっさい使用されません。 毎日、2万のディレクトリ(その中には10,000のファイルがあります)をアップロードしていました。FTPにはだいたい1時間30分程かかっていました。 先日システムを改修しました。毎日のファイル転送の内容のうち、ディレクトリ数は2万で変わらないのですが、ファイル数が1,000と、以前に比べてファイル数が十分の一になりました。(その為ディレクトリはカラッポのモノが殆どになりました。) ファイル数の減少により、ファイル数が減ったのは勿論ですが、ファイルサイズと、ディスク上のファイルサイズも十分の一ほどになりました。 そこで、ファイル転送(FTP)の通信にかかる時間も、大幅に変わるかと思ったのですが、通信時間は変更前と殆ど変わりません。1時間30分かかっていたものが、1時間15分程度に変わっただけです。ファイル転送の速度は、データのサイズだけではなく、ディレクトリの数にも大きく依存するものなのでしょうか。なんとなく「そうかな?」とは思うのですが、確実な情報を教えて頂きたい次第です。すみませんが、どうぞよろしくお願い致します。

  • CentOS6のファイル共有サーバー

    CentOS6のファイル共有サーバーに関して教えて下さい。 【状況】 元々、CentOS5でSambaでファイル共有していました。 社内で使うだけのものなので、GUI的な操作で雑に簡単に作っていました。 余った機器で、Windowsとmacのファイル共有をしているという感じです。 「ソフトウェアの追加/削除」で、サーバーのところにある「Windows ファイルサーバー」を選択してインストール。 その後、2,3の設定を行うと、完了。 運用では、メニューから、 「システム」「管理」 「サーバー設定」 「samba」 でGUI的に設定可能。 同じような事をして、新しく作り変える事になりました。 今更CentOS5より、新しいCentOS6でと思いCentOS6をインストールしてみましたが、あまりにも勝手が違うので困っています。 「ソフトウェアの追加/削除」で、サーバーのところに「Windows ファイルサーバー」は無く、 「CIFS ファイルサーバー」 「NFS ファイルサーバー」 などがあります。 うーん、samba自体、もしかして時代遅れで、違うものに変わったのか?呼び名が変わったのか? 「CentOS6 samba」でネット検索してみましたが、cui的にインストール設定する方法しかヒットせず。 とりあえず、yum install sambaでインストールしてみました。 CentOS5 では、メニューから、 「システム」「管理」 「サーバー設定」 「samba」 でGUI的に設定可能できましたが、 「システム」「管理」には、「サーバー設定」が存在しません。 「システム」「管理」「サーバー設定」に同居していた「サービス」は「システム」「管理」の直下にいました。 CentOS6では、sambaのGUI的操作はなくなってしまったのですか? 【質問】 CentOS6でファイル共有するのにオススメな方法を教えて下さい。 sambaであってもなくてもOK。 WindowsとMacのファイル共有ができて、あと複合機のデータスキャン先に指定可能であれば何でもOK。 初期設定はCUI的であったり、多少面倒であったりしても大丈夫ですが、運用はGUI的操作で出来るものが有難いです。 でないと、他の人が操作できなくなるので。。 以上、よろしくお願いします。

  • JSでの特定ディレクトリでのファイル数の取得

    ご覧いただきありがとうございます。 主題の件にてご質問させていただきます。 JSで特定ディレクトリ内のファイル数を取得を現在試みております。 目的としては、特定ディレクトリ内のファイル名と現在のファイル数が一致しており、 デイレクトリ内のファイルを呼び出すための前提条件を達成することです。 JSでの相対pathの指定はできましたが、 ディレクトリ内のファイル数を調査する関数など、 使わなければいけないものが皆目見当がつきません。 有識者の方、ご教授いただければと思います。

  • 【PHP】ディレクトリ内のファイル数を高速で数えたい

    レンタルサーバーのPHP5利用者です。 ディレクトリ内にhtmlファイルが3000件ほどあり、そのファイル数を数える方法を考えています。 現状、scandir() を利用していますが5秒ほどかかります。 scandir() はファイル名まで拾ってくるので時間がかかるのだと思いますが数だけでいいので高速で数えられないものでしょうか? できればデータベースではなくPHPだけの処理ならありがたいのですが。 お詳しい方、よろしくお願いいたします。

    • 締切済み
    • PHP
  • Windowsエクスプローラ上にある特定ディレクトリ直下にあるファイル数をカウントする方法

    Windowsエクスプローラ上にある特定ディレクトリ直下にあるファイル数をカウントする方法 を教えてください。 さらに ・特定ディレクトリ直下のサブフォルダも含め、ファイル数をカウントする ・サブフォルダも含めるが、任意に指定したディレクトリ直下及びサブフォルダ内に存在するファイルについてはカウント除外する ・隠しファイル及び隠しフォルダはカウント除外する という条件も満たして、カウントしたいです。 この条件を完璧に満たさなくてもよいので、 何か方法がありましたら教えていただければ幸いです。 意味不明でしたら加筆しますのでよろしくお願いします。

  • centosでディレクトリごと転送したい

    知り合いの管理していたサーバーが壊れてヘルプ要請があり見ているのですが CentOSが正常起動せず repairモードでログインはできるものの各種サービスが起動できない状態です。またディスクが読み込み専用になってしまっており書き込みができません。 ググると復旧できるかも?という方法は載っていたのであとで試してみるつもりですが まずはアクセスできるうちにデータのバックアップをしたいです。 ftpコマンドは使えたので 自分の管理する別のサーバーにmputでファイルを転送して・・・とやっているのですが 当たり前ですがftpにはディレクトリごと移動のコマンドはないので一発で送信ができません。 手作業でcd してmput *.*とやっていたのですが フォルダだらけの項目があり心が折れました 普段ならtarで固めて送ればいいのに ディスク書き込みできないからできないし フォルダごと送れるftpソフト入れたり shell書ければいいのですがディスク保存ができないため難しい状況だし。 うまくパイプでつなげば一行で書けそうな気もしますが 自分の実力では無理です。 そこでファイル保存ができない前提でフォルダごと全データを別サーバーに転送できるような方法を教えてください。うまくパイプつなぐのでも他の方法でもいいのでお願いします。 なお某大手のVPSなので実機の直接の操作はできませんので USBブートでとか ハードディスク抜き出して・・・といった手は使えません。 なおVPS業者にはわからんってさじなげられたそうです。