linux

Linux、Macでハードディスクが一杯になった時の対処

投稿日:2019年5月7日 更新日:

「いつの間にかハードディスク一杯になってた・・・」

運用側が10:0で言い訳出来ない障害の一つなんじゃないでしょうか。

怖い先輩(上役)に体育館裏(会議室)に連れていかれる恐怖を思い出します。

運管ミドルを入れて監視していても監視データを長く保存過ぎたのが原因で一杯になったりすると「ブルータス、お前もか」と思ってしまいます。

こんなことが起こらないように本番環境に移行する前にリスクは取り除いておきたいところです。

メジャーなHDD枯渇原因として挙げならこんなケースがあります。

  1. 運用中システムのファイルアップロード機能
  2. 立ち上げっぱなし運用ミドルのログ(loglotateしていない)
  3. HDDパーテーション見積もりミス
  4. Zabbix等の運管ミドルでデータ保持期間見積もりミス
  5. 長期間運用による塵積もり

不幸にも一杯になった時はどこのディレクトリがディスクを喰っているのかコマンドを実行して調べます。

ディスクを喰っているルートディレクトリの特定

「du -sh /*」コマンドで大まかなあたりをつけます。

# du -sh /*
0       /bin
191M    /boot
0       /dev
43M     /etc
73M     /home
0       /lib
0       /lib64
0       /media
0       /mnt
332M    /opt
0       /proc
270M    /root
178M    /run
0       /sbin
0       /srv
0       /sys
68K     /tmp
3.9G    /usr
450.0G  /var  <-- 怪しい

ディレクトリを一つずつ掘り下げていく

サイズの大きいディレクトリにcdしながら「du -h –max-depth=1」して容量を喰っている箇所をを突き留めます。

(*)macの場合、コマンドは「du -h -d 1」。

# du -h --max-depth=1
4.0K    ./tmp
223M    ./lib
449.0G  ./log   <-- 怪しい
0       ./adm
1.8G    ./cache
8.0K    ./db
0       ./empty
0       ./games
0       ./gopher
0       ./local
0       ./nis
4.0K    ./opt
0       ./preserve
124K    ./spool
0       ./yp
0       ./kerberos
0       ./crash

原因を見つけたら

原因となる大きなファイルを見つけたら削除可否を鑑みて削除するか他PCにバックアップ。DBファイルなら保存量の設定をチューニングするかHDD追加します。

ログとDBファイルが大抵犯人

本番運用環境ではディスク容量監視していてもdevelopmentやstagingの開発環境は監視していないケースは結構あったりします。

tomcatを内包したミドルはlogrotate設定されていなくて/var/logが肥大しがちで、ZabbixのDBデータなども保存期間を設定しないと肥大しがちです。

ステージング環境でシステムに負荷をかけてドッグフーディングしたらディスク容量を確認、本番環境での保存量を見積もるのが肝要ですね。

開発環境で傾向が分かっていれば本番の閾値を設定するのも楽になります。

あとzabbixやnagiosみたいな無料運管ミドルを入れていれて警告メールを出すようにしていても、あまり危機感の無い開発環境の場合は形骸化してしまうので、本当にまずい閾値を超えたケースはチャットに投げるようにするなどの工夫をしておいた方が良いですね。

ちょっと面倒でも体育館裏に行くことは避けられます。

-linux
-,

執筆者:

関連記事

Android版ChromiumをVirtualBoxにインストールしたUbuntuでビルドしてみる

「Chromium」はChromeの開発ソースが公開されたプロジェクトです。 www.chromium.org  1 UserGet the Code: Checkout, Build, & …

テキストファイル内の改行コード差異を見つけるワンライナー

ファイル内容は同じなのにdiffで違いが出るWeb上でソースレビューする時に同じ内容の行なのに差分が出て紛らわしい これらの原因はWindows、Mac、Linuxが入り混じった開発環境にあるかも知れ …

podman + docker-comopseでwordpressを起動

前回podmanをdockerとして使えるようになりました。 One IT Thing  1 Pocketpodmanをdockerとして使うhttps://one-it-thing.com …

各種OSでのインデックスを使用した高速ファイル名検索と全文検索【Linux編】

目次1 目的2 環境3 使用コマンド4 ファイル名検索5 全文検索6 補足とインデックス更新7 まとめ 目的 CentOS上に存在する全ての「~.java」ファイルをリストアップします。上記の内「Sy …

CentOSで暗号鍵用のパスワードを生成

そこそこ長くて文字種の入り混じった強度の高いものを自分で考えるのは面倒です。 暗号化処理を使う際に必要なパスワード文字列を、mkpasswdコマンドでいい感じに生成出来るようにしておきます。 目次1 …

 

shingo.nakanishi
 

東京在勤、職歴2n年中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めたアウトプット用プライベートWeb日記数が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけど仲間が居なくて孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。