centos 100%disk full-ログファイル、履歴などを削除する方法


8

ディスク領域がいっぱいのため、mysqldは起動しません。

101221 14:06:50 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
101221 14:06:50 [ERROR] Can't start server: can't create PID file: No space left on device

実行中df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              16G  3.2G   12G  23% /
/dev/sda5             4.8G  4.6G     0 100% /var
/dev/sda3             430G  855M  407G   1% /home
/dev/sda1              76M   24M   49M  33% /boot
tmpfs                 956M     0  956M   0% /dev/shm

du -sh */var

12K     account
56M     cache
24K     db
32K     empty
8.0K    games
1.5G    lib
8.0K    local
32K     lock
221M    log
16K     lost+found
0       mail
24K     named
8.0K    nis
8.0K    opt
8.0K    preserve
8.0K    racoon
292K    run
70M     spool
8.0K    tmp
76K     webmin
2.6G    www
20K     yp

/dev/sda5、にWebサイトファイルがあります/var/www

これは初めてなので、/var/www他のパーティションに移動する以外にどのファイルを削除するかわかりません

そしてもう一つ、ログファイルや履歴などを削除する正しい方法は何/dev/sda5ですか?

回答:


2

すばやく汚い:に移動/var/www/home/www、シンボリックリンクを作成します。

rsync -a /var/www /home &&
rm -r /var/www &&
ln -s /home/www /var/www

長期的には、/var/www/var/logディレクトリを専用のパーティションに配置する可能性があります。おそらく縮小/homeして、解放されたスペースを使用して適切なパーティションを作成できます。


2
  1. 私は...するだろう mv /var/log/*gz /var/log/*.0 /home/backup/var/log
  2. yum clean packages またはapt-get cleanを実行して/ var / cacheから内容を削除します
  3. はい/ var / wwwをeg / homeに移動します
  4. おそらく/ varパーティションを削除してください。

FWIW:パーティションが実際に使用されていないときにパーティションを使用するのはあまり好きではありません。あなたが管理境界としてそれらを使用したい場合は、より良いLVM / ZFSまたはそれらを拡張するための簡単な方法のいくつかの種類を持っている...
エリック・ヨハンソン

パーティションの使用もあまり好きではありません...
kopeklan

1

内訳は/var/lib何ですか?それが私のシステムのようなものであれば、そのほとんど(たとえば500 MB)は/var/lib/mysql

他の数字すべてのかなりの正常かつ合理的な外観は、その移動/var/lib/mysqlおよび/var/www唯一の現実的な長期的なソリューションです。

古いログファイルを削除するために、ログがローテーションされている、例えばあなたが持っている/var/log/messages/var/log/messages.1/var/log/messages.2.gz、など、または多分/var/log/messages-20101221/var/log/messages-20101220.gzなど?

それらを削除する明白な方法は、年齢などです。

# find /var/log -type f -mtime +14 -print
# find /var/log -type f -mtime +14 -exec rm '{}' \;

また、logrotate設定/etc/logrotate.confが適切であることを確認してください。それらはあなたの主な問題ではないので、それらを変更すべきではないと思いますが、おそらく1週間のログを保持したいだけかもしれません。その場合、次のようなことを試してください:

daily
rotate 7
create
compress
include /etc/logrotate.d

次に、syslog、mysql、apacheなどの各サービスのファイルがあり、それぞれのログローテーションを構成します。DebianおよびRed Hatシステムでは、すでに設定されているはずです。

logrotateがまだない場合は、少し難しくなります。grepまたはtailを使用して最近のエントリを保存し、ファイルを削除してsyslogdを再起動する(例:service syslogd restartまたはpkill -HUP syslogd

最後に、私がこの状況で作成したスクリプトはdiskuseです。

# test -d ~/bin || mkdir ~/bin
# svn cat http://svn.mikelward.com/svn/scripts/diskuse > ~/bin/diskuse
# chmod +x ~/bin/diskuse
# ~/bin/diskuse -A /var > ~/biggest-files-in-var.txt
# head ~/biggest-files-in-var.txt
# ~/bin/diskuse -T -A /var > ~/biggest-dirs-in-var.txt
# head ~/biggest-dirs-in-var.txt
# ~/bin/diskuse -a 1d /var > ~/biggest-files-in-var-that-changed-today.txt
# head ~/biggest-files-in-var-that-changed-today.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.