labunix's blog

labunixのラボUnix

debianの「apt-get clean」で「/var/cache/apt*」ディレクトリを解放する。

■debianの「apt-get clean」で「/var/cache/apt*」ディレクトリを解放する。
 2台構成のsquidの片方が停止したので調べてみたら、「/var」がいっぱいになっていた。

# ps aux | grep squi[d]
# /etc/init.d/squid status
[FAIL] squid is not running ... failed!

■本質的な原因は1TBのディスクなのに、rootfsに10GBしか割り当てられていないこと。
 (多分、デフォルトインストールのまま)

 もう一台のsquid(同じバージョンのdebian)ではrootfsに50GBは割り当てている。

■また「/var」と「/」も分けていないマシン。
 他のchrootを載せる予定で、実際載ってるマシンは当然分けられている。

# du -hs /var/cache/apt*
2.0G	/var/cache/apt
119M	/var/cache/apt-xapian-index

■「/var/cache/apt-xapian-index」は、
 「purge」「install」で再インストールしても同じなのでスルー。

■「/var/cache/apt」のディスク容量を解放するには、
 「autoclean」ではなく、「clean」が必要。

# apt-get clean

■だいぶ減った。

# du -hs /var/cache/apt*
36M	/var/cache/apt
119M	/var/cache/apt-xapian-index

# df -h | awk '/[6-9][0-9]%/ {print $(NF-1),$NF}'
79% /
79% /

■squidも稼働した。

# /etc/init.d/squid restart
[ ok ] Restarting Squid HTTP proxy: squid.

■「autoclean」では削除されないパッケージも削除出来るのか。

# man apt-get | grep -A 16 "^  *clean\$"
       clean
           clean は、取得したパッケージのローカルリポジトリを掃除しま
           す。/var/cache/apt/archives/ と /var/cache/apt/archives/partial/ か
           らロックファイル以外すべて削除します。APT が dselect(1) から呼ばれ
           るときには、自動的に clean が実行されます。dselectを使用しない場合
           は、ディスクスペースを解放するため、時々 apt-get clean を実行したく
           なるでしょう。

       autoclean
           clean と同様に、autoclean は取得したパッケージのローカルリポジトリ
           を掃除します。違いは、もうダウンロードされることがないパッケージ
           ファイルや、ほとんど不要なパッケージファイルのみを削除することで
           す。このため、長い期間、キャッシュが管理できずに肥大化することな
           く、維持することができます。設定オプション APT::Clean-Installed に
           off をセットしていれば、インストール済のパッケージファイルが削除さ
           れるのを防げます。

■プロキシ経由のaptも成功。

$ for opt in update upgrade autoremove autoclean;do sudo apt-get $opt -y ;done

■ディスクの空いてる、他のマシンでも試してみる。。。

$ du -hs /var/cache/apt*
599M	/var/cache/apt
118M	/var/cache/apt-xapian-index

$ sudo apt-get clean;du -hs /var/cache/apt*
39M	/var/cache/apt
118M	/var/cache/apt-xapian-index

■もう一台。

$ du -hs /var/cache/apt*;sudo apt-get clean;du -hs /var/cache/apt*
1.4G	/var/cache/apt
79M	/var/cache/apt-xapian-index
22M	/var/cache/apt
79M	/var/cache/apt-xapian-index

■更にもう一台。

$ du -hs /var/cache/apt*;sudo apt-get clean;du -hs /var/cache/apt*
339M	/var/cache/apt
78M	/var/cache/apt-xapian-index
22M	/var/cache/apt
78M	/var/cache/apt-xapian-index

■1GB超えたらcleanで解放というスクリプトでも書けば良いのかも。
 という、想定テスト。

# echo -e "1.0G\t/var/cache/apt" | \
    awk '/[0-9]G/{print}' | \
    grep apt && apt-get clean && echo "ok"
1.0G	/var/cache/apt
ok

■結論

ただのサブプロキシサーバだと思って過去の私がサイジングしなかったのでしょう。。。