ホテルを選ぶとき、これだけは譲れない条件TOP3は?

linuxの特定のディレクトリ(ファイル数が多い)での読み書きの速度が遅いようなのですが、改善方法など教えていただけないでしょうか?
windowsの場合デフラグなどがありますが、linuxの場合デフラグは必要ないようで、メモリを増設するなど何か対応をご存知の方よろしくお願いいたします。
HDDのエラーにつきましてはsmartで簡単にですが確認したところエラーはありませんでした。
よろしくお願いいたします。

質問者からの補足コメント

  • ありがとうございます。
    メモリ増設の件ですが、CentOSを使っております。メモリは4Gです。
    HDDはWDの4TBを2枚設置しております。
    よろしくお願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/06/22 10:10

A 回答 (6件)

#3です。



>メモリは4Gです
CentOSでそれだけあったら普通は楽勝です。

もしメモリ関連で原因があるとすれば、起動時に実行されているアプリケーション、もしくは質問者さんが通常立ち上げているアプリケーションの中に、大きくメモリを消費しているものが存在する可能性です。
お使いのCentOSにもシステムモニター的なアプリケーションがあると思いますので、それを使って各アプリケーションがどのくらいメモリを消費しているか確認してみてください。
もし大きくメモリを圧迫しているアプリケーションが見つかったら、そのアプリケーションを一時的に終了させてどうなるか実験してみてください。
それで状況が改善されるようなら、問題となったアプリケーションに関しては使用を中止することも考えたほうがいいでしょう。

特に問題と思える部分がなく、メモリ全体の使用量で1GB以下なら極めて普通の状態です。
其の場合、メモリに関しては問題がないということになり、増設の必要もないということになります。
    • good
    • 0
この回答へのお礼

メモリの可能性は低そうですので、やはり他の方もおっしゃられる通り別ディレクトリを作成し、そちらに一部データの移動をして様子をみてみようと思います。
補足にも対応いただきありがとうございました。

お礼日時:2018/06/23 10:51

遅いというのはどれほど遅いのでしょうか。

可能性としては、No.4の方がおっしゃるように、ディレクトリ自体へのアクセスに時間がかかっている可能性はあるかもしれません。

「ディレクトリ」という言葉が独り歩きしていますが、ディレクトリとは一覧表という意味で、少なくともLinuxでは特別な形式のファイルです。ディレクトリには、ファイル名とそのディスク上の格納場所(のようなもの)、その他の情報が文字通り一覧表として格納されています。ファイルにアクセスする場合は、この一覧表から目的のファイルを探し出し、場所を割り出して実際にアクセス、また状態が更新されたら一覧表の中の該当ファイルの状態部分を更新します。ファイル数が多くなれば、一覧表も当然肥大化し、一覧表から目的のファイルを探し出すための計算量が多くなるため、遅くはなります。ちなみにlsコマンドが遅くなる理由は、表示順を並べ替えるからです(具体的なソート方法は知りませんが、ファイル数nならば一般的にO(nlogn)の計算量を要します)。

細かいことは知らないので外れているかもしれませんが、もしかすると一覧表自体が断片化しているかもしれません。つまり、ファイルの一覧を得るためにディスクのあちこちからデータをかき集める、などといったことが起きているかもしれないということです。

なお、上記に関しては、実感できるのは数万~数十万ファイルが同一ディレクトリ直下にフラットに配置されている(つまり、一覧表に数万~数十万のファイルの情報が書かれている)場合にやっと実感する程度だと思います。数百とか数千とかでは体感するほど遅くはならないと思います。

もし、数万以上のファイルが特定ディレクトリ直下にあるということであれば、試しに、別のディレクトリを作成し、そこにファイルをすべて移し替えてみると若干改善するかもしれません。この操作の目的は、一覧表を新たに作り直すことにあります。なお、そのディレクトリ名をmvで変更しても無駄です、その上位のディレクトリの一覧表の中のファイル名(ディレクトリ名)を変更するだけなので。
    • good
    • 0

本当に”読み書き”が遅いのですか?


ファイル数が多い場合、ファイル作成や"ls"のコマンド応答が遅くなることはありますが、
読み書き自体が遅くなるのは聞いたことがありません。

ファイル数が多いことによる上記パフォーマンス劣化は避けられません。
改善方法はファイル数を減らすしかないです。
おそらくファイル数が多いのはログ等、大量のファイルを出力する
システムによるものなのでしょうが、
結局、システムの問題であって、出力するファイル数を減らす、
出力をファイル以外のもの(例えばDBMSにBlobで格納する)とかにする等、
システムを変更しないと改善しないと思います。

以上、参考になりますでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ファイル数が膨大で、おそらく数万以上はあると思われますので、一度ディレクトリを別に作成し試してみようと思います。

お礼日時:2018/06/23 10:52

ファイル数が多いことが原因ではないかと思われるのでしたら、実験的にそのディレクトリを分割してみてはいかがでしょう。


現在ディレクトリ1のみのところを、ディレクトリ2やディレクトリ3を作成してディレクトリ1内のファイルをそれぞれに分けるってことです。
これで改善すれば質問者さんの診断が正しかったことになりますし、改善されなければ他のところに原因があるということになって、原因箇所の切り分けが前に進むことになりますので特に損はありません。

メモリ増設で解決されることは確かに多いのですが、それについてコメントを出すにはお使いのLinuxのディストリ名と現在の搭載メモリのスペックが知りたいところなので、補足をいただければと思います
この回答への補足あり
    • good
    • 0

これはあくまで案の1つにすぎませんが、そのディレクトリの内容をを別のHDD(できればSSD)に移動し、マウントしてみてはいかがでしょうか。


以前、virtualBoxで多数の仮想PCを作成し、運用していましたがあるときから不具合が多発しました。
原因はHDDに対する物理的なアクセス(HDD内部の動作)が処理に追いつかなくなったためでした。
テスト環境などでお試しいただければ幸いです。
    • good
    • 0
この回答へのお礼

ご提案いただきありがとうございます。
HDDの中身を整理出来たら速度の改善などあるのかと思いましたが、おっしゃられる通りまずはそのデータを移動して結果を見てみたいと思います。
それで物理的な問題か、利用しているHDDの種類やプラッタ数などによる速度低下など原因がはっきりしそうです。
ありがとうございました。

お礼日時:2018/06/22 10:05

これはあくまで案の1つにすぎませんが、そのディレクトリの内容をを別のHDD(できればSSD)に移動し、マウントしてみてはいかがでしょうか。


以前、virtualBoxで多数の仮想PCを作成し、運用していましたがあるときから不具合が多発しました。
原因はHDDに対する物理的なアクセス(HDD内部の動作)が処理に追いつかなくなったためでした。
テスト環境などでお試しいただければ幸いです。
    • good
    • 0

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