人気コンテンツ今日: |
ハードディスクの使用率が100%になってしまったsasaki 土曜, 2008-10-11 15:25
/export/homeにマウントしたハードディスクが100%の使用率になったというアラートを受けた。 なぜだろう...と調べることに。
色々と調べたあげく、意外な結末が待っていた...。
■ファイル容量の大きいディレクトリを探す# cd /export/home towns4は、SiteTrackerが稼働しているので確かに巨大になってしまう。 Oracleが入っているu01は、50GBは大きすぎるので調べてみる。
■1日以内に更新されたファイルを調べる急激にハードディスクを圧迫したので、以下の対象のファイルを探す。 ・1日以内に更新された。 -mtime -1 ・ファイルのみ対象で、ディレクトリは表示しない。 -type f ・まずは、u01ディレクトリのみを対象に探す。 u01 # find u01 -type f -mtime -1 | more
更にファイル容量を表示する。 ・別のコマンドに引数として渡す。 xargsコマンド ・ファイル容量を表示する。 ls -lコマンド # find u01 -type f -mtime -1 | xargs -i ls -l {} | more
ファイル容量の大きい順に表示する。 ・5番目のフィールドを対象にソートする。 +4 ・大きい順にソートする。 -r (reverse) ・数字として取り扱う。 -n (numeric) # find u01 -type f -mtime -1 | xargs -i ls -l {} | sort +4 -rn | more redo01.logが50MBを使っていた。 あまりたいした大きさでないので、とにかく容量が大きいものを探すアプローチを次に実行してみた。
■ファイル容量が大きいものを調べるとにかくファイルサイズが大きいものを探す。 今回はファイルサイズが50MBよりも大きいものを検索する。 ・ファイルのみを対象にする。 -type f ・50MB以上。 -size +50000k ・対象ディレクトリは、u01とする。 # find u01 -type f -size +50000k | more
更にファイル容量を表示する。 ・別のコマンドに引数として渡す。 xargsコマンド ・ファイル容量を表示する。 ls -lコマンド # find u01 -type f -size +50000k | xargs -i ls -l {} | more
ファイル容量の大きい順に表示する。 ・5番目のフィールドを対象にソートする。 +4 ・大きい順にソートする。 -r (reverse) ・数字として取り扱う。 -n (numeric) # find u01 -type f -size +50000k | xargs -i ls -l {} | sort +4 -rn | more135MBのOracleそのものと、ライブラリ、Oracleデータ等のファイルで、これといって大きすぎるものが無かった。 ってことは、たいしたサイズではないファイルがたくさん集まって、53GBも容量を使っているということか...。 念のためにもう一度確認してみた。 # du -sh u01
恐るべしOracleの容量。
そんなにたくさんのファイルがあるのか?
調べてみた。 # find u01 -type f | wc -l 4万6千ファイルか...。 1つのファイルが1MBだったら、46GB。 そんなもんかな...。
でも気になるので、全く同じマシンで、同様にインストールしたOracleを調べてみた。 # du -sh u01 容量が13GBってことは、3〜4倍程度の違い。 ファイル数が2万4千ってことは、2倍程度の違い。
またも違うアプローチをとってみた。
■ファイルの数を調べる大きいファイルが見つからなかったら、ファイルの数がものを言う。 小さいサイズのファイルでもたくさん集まれば、容量を食ってしまう。
100%使用率のマシンを調べた。 # find u01 -type f | wc -l 50MB x 20 = 1GB 10MB x 83 = 830MB 1MB x 26004 = 26GB (なんと26GB!)
同じ仕様のSolarisで、バックアップ用のマシンを調べた。 # find u01 -type f -size +50000k | wc -l 50MB x 13 = 650MB (問題マシンと350MBの差) 10MB x 76 = 760MB (問題マシンと70MBの差) 1MB x 5751 = 5GB (なんと21GBの差!)
検索した結果が全て同じ容量の50MBだったら、、、 検索した結果が全て同じ容量の10MBだったら、、、 検索した結果が全て同じ容量の1MBだったら、、、 というかなりいい加減な計算だけど、1MB〜10MBのファイルがかなり多く存在していて、それがハードディスクを圧迫しているということが分かった。
つまり、Oracleにcoreとか余計なファイルがある訳ではなく、データの追加等によって容量が使われている正常使用と考えた方がよさそう。
Oracleは、余計なファイルを消すことが難しいので、ログ解析SiteTrackerで利用しているログファイル等を圧縮してしのぐという結末になった。
追加ハードディスクが欲しい。。。
なんて考えいた後にメールを見たら、Oracleのエラーがたくさん出てるので見てみろということで調べてみた。
■Oracleのエラーファイルを調べる$ ls $ORACLE_HOME/ホスト名_SID名/system/recv/errors/ なんと、25,000以上のエラーファイルが...。 しかも1ファイル2MBなので、合計すると50GB!
こいつが原因だったのか...。
OracleのSYSMAN processによるものらしい。ウチの会社ではOEM (Oracle Enterprise Manager) によるモニタリングを使わないらしいので、データベースの再作成時に「管理オプション - Enterprise Managerを使用してデータベースを構成」のチェックを外すことにした。
印刷用 | カウント(21)
|
Solarisamazon広告英語お勧め教材! 英語の学校でも使っているのですが、1つのストーリーを3分で読めて、内容も面白く、もっと早く出会いたかった本です。 Apple好きで英語も勉強したいならこの一冊! 天気情報ブログパーツ |