読者です 読者をやめる 読者になる 読者になる

消えないLogファイル



皆さんこんにちは。
13新卒 厄年 年男、カンノと申します。
 
編集長の御膝元で予約トップ10というサービスに関わらせて戴いています。

 
せっかくなので編集長の偉業の数々について熱く語ろうかと思いましたが、到底尺が足りないので、本日は僕が業務上で体験した出来事についてお話します。

 
---------------------------------------------------------------------------
 
それはつい先日の事です。
僕の元にディスク容量が監視の設定値を超えたというメールが届きました。
 
善は急げです。
早速サーバに入り、dfコマンド・・・
 
df


なるほど、確かにディスクの使用量が上がっています。
 
原因はすぐにわかりました。
ログファイルのサイズが大きく膨らんでしまっていたのです。
 
削除するわけにもいきませんので、ここは・・・
 
一度別名にして・・・
mv
 

圧縮。
gzip



これで良いはずです。
それでは、再度ディスクの使用量を確認しましょう。

df




はい。
全く変わってません
 

dfの結果は変わらないままです。
 
 
何かしらの霊的現象である可能性も捨て切れませんが、
僕も技術職の末席を汚す者として、科学的にそれを証明しなければなりません。

 
ということで今度は以下のコマンドで見てみます。

du

こちらだと、圧縮したファイルサイズと同程度の容量が減少している事がわかりました。
 
混乱した僕は編集長に次いでお世話になっているGoogle先生に理由を尋ねる事にしました。

 
その結果、

dfコマンド: ファイルシステムについて、使用「領域」と空き領域のサイズを表示する
duコマンド: 指定したファイルやディレクトリの使用「容量」を集計する
 
※あるプロセスが対象ファイルを開いている状態でファイルを削除しても、
   プロセスがcloseしない限り使用領域は変動しない。

 
なるほど、よくわかりません。  

 
ですが今回の場合は、ファイルの圧縮によってディレクトリの使用「容量」(duの結果)は減少したものの、そのLogファイルを掴んでいたプロセスが存在したため、OS上での使用「領域」(dfの結果)は変わっていなかったということらしいです。



どうやら/proc以下を見ると該当プロセスがわかるらしいとの事で以下のコマンドを・・・
 
lsof
すると

lsofans


こいつです。
PIDから参照すると、どうやらワーカーの1つが掴んでいたようです。



再起動して再びdfをすると・・・
 
df2

ということで、無事ディスクの使用領域が減少しました。

---------------------------------------------------------------------



どうでしょう。
皆さん一度は体験した事があったのでは無いでしょうか。

え?logrotateをいれてるからこんな作業した事無い?
あ、そうですよね。




もし、また記事を書かせて戴く機会があれば、
次こそは1ヶ月分枠を獲得して、編集長の魅力について語らせて戴こうかと思います。 

 
それでは皆さん、その日を楽しみにお待ち下さい。



カンノさん、logrotate の設定よろしく!
 
編集長より