この空き領域の絶え間ない損失を停止するにはどうすればよいですか?


15

通常どおり、Ubuntuを実行していましたが、突然1.2 GBの空き領域しかないというダイアログボックスが突然表示されました。1時間前には、30 GBの空き容量がありました。

いくつかのものを削除し、空き容量を最大25 GBにしました。しかし、それは減少し続けています。古いログファイルを削除し、ログファイルなどを切り詰めましたが、減少し続けています!

ディスクアナライザーを使用して、このすべての空き領域の損失の原因を見つけようとしました。再起動し、最終的にUbuntuがディスクチェックを行って、空き容量を最大40 GBに戻しましたが、それでも1日あたり約10 GB減少し続けます。私はスペースを解放する新しい方法を探し続けていますが、それは私がやめられないディスクスペースを減らす自動プロセスのようなものです。

私は何をすべきかわかりません。原因を特定し、空き領域が減少しないようにするにはどうすればよいですか?

からの出力はsudo du -sh /var/* ~/.xsession-errors次のとおりです。

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors

2
sudo du -sh /var/* ~/.xsession-errorsplease の出力を追加するように投稿を編集できますか?(ばかげているものがある場合に爆破すると予想される2つの場所)。それ以外の場合、私はエリアと一緒です-これはディスクの問題を示しています。これを真剣に受け止めてください。
オリ

回答:


26

制御不能なログがいくつかあります。代わりに狂った日常のように削除するので、急成長しているファイルやファイル、および見つけるルックこれを引き起こす可能性のあるものを調査するために内部を。何らかのプログラムが何らかの条件を記録するループで回転している可能性があります。そのプログラムを無効にするか、ログを無効にするか、不平を言っている状態を修正してください。

ファイルが目の前で大きくなっていて、どのプログラムがそのファイルに書き込んでいるのかわからない場合、簡単に見つけることができます。以下に例を示します。誰が/var/log/syslog開いていますか?fuser次のコマンドを使用します。

# fuser /var/log/syslog
/var/log/syslog:      602

/var/log/syslog開いているプロセスは1つだけです。それはプロセス602です。それは何ですか?とpsを気にせずgrepに、/procファイルシステムを直接見てみましょう。

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

あは、そうですrsyslogd。開いたことrsyslogdに驚くことはありません/var/log/syslog/

この方法は機能することが保証されていません。その理由は、プログラムがファイルを開いたままにしておく必要がないからです。ファイルを開き、追加してから閉じるプロセスがあるとします。調査はやや難しくなります。fuser偶然 "red handed"プロセスをキャッチするまで何度も実行できます。そのプロセス自体が急速に存在し、存在しなくなる可能性があります。別の問題は、複数のプロセスがファイルを開くことができるが、1つだけがファイルを大きくしていることです。その場合、システムコールをトレースできます。

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

おっとっと!1234と23459の2つのプロセスが開いています。それらが何をしているのか見てみましょう。

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

それは何もしていません、ただselect呼び出しでブロックしています。Ctrl-Cを押してトレースを中断します。

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

次のものを確認してください:

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

おっと、1つは絶えず書いています。それは悪いものでなければなりません。プロセスが書き込むファイル記述子5が実際に大きなファイルであることも確認できます。

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

破損したファイルシステムがあるとは思わないが、完全なチェックを強制するために、DVDを起動する必要はない。

まず、ファイルシステムの最大マウントカウント設定を確認します。dfコマンドを使用してパーティションを特定します。ここにあるUbuntuシステムの例:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

/ファイルシステムがにマウントされていることがわかります/dev/sda1。そう/dev/sda1ルートパーティション(この特定のシステムでのみパーティション)の記憶装置です。

そのファイルシステムのいくつかの属性を見てみましょう。これはマウントされていても安全です。このコマンドは大量の出力を出力します。抜粋は次のとおりです。

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

ちょっと見て、マウント数は最大マウント数に等しい。次回リブートすると、ファイルシステムのチェックが行われます。重要なことは、マウント数が正の値であることです。yoursがゼロの場合、を使用して22などの正の値に変更しtune2fs -c 22 /dev/whateverます。ゼロは、パーティションがマウントされている回数に関係なく、チェックが強制されないことを意味します。まれに再起動されるシステムの値はここで低くする必要があります。1年に1度ダウンするサーバーは、リブートするたびにfsckを使用する可能性があります。日付ベースのチェック間隔も設定できます。

チェックを強制するために、実際のカウントをオーバーライドして、最大値以上にすることができます。その後、再起動します。これは資本で行われCますtune2fs -C 1234 /dev/whatever。これで、パーティションはチェックなしで1234回マウントされたように見えます。これは、1桁または2桁の最大値を超えています。


非常に有益が、問題が解決され、それは巨大なログファイルの書き込みファイアウォールだった
askcompuを

2
私が疑ったように、参照してください。不思議なディスクの破損は、スペースを上下に動かしません。つまり、孤立したインシデントを説明できますが、一度修復したら、修復する必要があります。また、ドライブに障害が発生した場合、カーネルログにいくつかのエラーが発生し、パニックが発生することが予想されます。
カズ

ええ、私はそれがドライブを波平考え出し、SMARTテストは、その古いドライブが、まだ動作可能と取り組んで言う
askcompu

すべてのファイルシステムをfsckする簡単な方法は、 'sudo touch / forcefsckを実行することです。sudo / sbin / shutdown -r now '。
ブレアザジャック

3

ディスクチェックによりスペースの一部が解放され、この問題(またはその一部)がファイルシステムの破損によるものである可能性が示唆されました。その場合、ファイルシステムをスキャンして修復することにより、より多くのスペースを解放できるはずです。ただし、破損が永続的に発生している場合(場合によってはそうでない場合もあります)、それは通常、ハードドライブが死にかけていることを意味します。(ドキュメントや他の重要なファイルの)バックアップが完全に最新ではない場合は、重要なものをすべてバックアップしてください!

ディスクをチェックおよび修復するために、マウントできません(少なくとも読み取り/書き込み不可)。したがって、ライブ環境(ライブCD / DVDまたはUSB)から修復ユーティリティを実行する必要があります。まず、ファイルを含むパーティションのデバイス名を見つける必要があります。

したがって、インストールされたシステムで、次を実行します。

mount | grep ' on / '

/との間のスペースを必ず含めてください'。)

次のようなものが得られます:

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

- on私のマシンの例では-の前のテキスト/dev/sda8は、ルートパーティションの完全なデバイス名です(/)。これを書き留めてください。必要になります。

次に、Ubuntuを最初にインストールしたときと同じように、UbuntuデスクトップCD / DVDまたはUSBフラッシュドライブからコンピューターを起動します。(これがWindowsインストーラーでインストールされたWubiシステムである場合、お知らせください。あなたが報告したことを考えると、私はそれを期待していませんが、その場合、手順は異なります。)

インストールせずにUbuntuを試すを選択しますUbuntuをインストールしません)。機能しているデスクトップが表示されたら、Ctrl+ Alt+ Tを押してターミナルウィンドウを開きます。次に、次のコマンドを実行します。

sudo e2fsck -fkccp /dev/sda8

ただし、上記の方法で取得したように/dev/sda8/パーティションの正しい完全なデバイス名に置き換えてください。

これは時間がかかる場合があります。このcコマンドに含まれるオプションにより、ディスクの表面上でエラーとファイルシステムをスキャンします(そして、不良エリアを不良としてマークし、使用されないようにします)。あなたは残すことができますcc(あなたがしなければ、あなたも出て残すことができますようにあなたかどうかk)が、私はそれらを保つことをお勧めします。

特定の問題e2fsckを修正しようとすると、データの損失を引き起こす可能性があると考えられる場合、特定の問題の修正についてプロンプトが表示される場合があります。(これpにより、合併症を引き起こすことなく修正できると確信している問題を修正できるようになります。)

とにかくバックアップが最新であることを確認してからこれ行う必要があるため、必要なものを修正できるようにすることを強くお勧めします。あなたはそれがあなたを促すなくても潜在的に危険な修正を試みるようにしたい場合は、交換してくださいpy

この後、Ubuntuシステムを再起動して、スペースが解放されているかどうかを確認します。そうでない場合、または問題が解決しない場合は、質問をコメントして編集し、詳細を提供してください。


バックアップするものがない場合はどうなりますか?
askcompu

1
@ user2045360盗む、略奪する、借りる、購入する。または、オンラインでプッシュします(Ubuntu One、Dropbox、Google Docs、S3など)。
オリ

@ user2045360持っている重要なファイルの数と種類に依存します。20のオフィス文書で構成されている場合(患者の場合は100の場合もあります)、自分宛にメールで送信できます。Ubuntu OneやDropBoxなどのクラウドストレージサービスを使用することもできます(注意してください-同期するように設定して、コンピューターでファイルを削除または変更すると、クラウドでも同じ変更が発生します)。一方、映画製作者で300ギガバイトの映像がある場合、おそらく唯一の選択肢は外付けハードドライブなどのストレージメディアを購入する(または、Oliが示唆するように借りる)ことです。
エリアケイガン

私にはお金がなく、借りる人もいませんが、このコマンドでデータが失われる可能性はどれくらいありますか?
askcompu

@ user2045360命令されたデータからデータが失われる可能性e2fsckは非常に低く、特にデータを失う可能性があるyことを警告するメッセージを押さない場合はそうです。ただし、そのコマンドを実行することは、データをバックアップする必要がある理由ではありません。データをバックアップする必要があるのは、空き領域が急速かつ継続的に低下するという性質から、ハードドライブが物理的完全に故障する可能性があることを強く示唆しているためです。その場合、データは失われ、ほぼ確実にデータを回復できなくなります。他のバックアップ方法には、ネットワークを介した別のマシンまたはCD / DVDへのバックアップが含まれます。
エリアケイガン

0

この問題は解決されました。大量のログとtvmobiliエンコードファイルを書き込むファイアウォールでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.