centos 100% disk full - 로그 파일, 기록 등을 제거하는 방법은 무엇입니까?

centos 100% disk full - 로그 파일, 기록 등을 제거하는 방법은 무엇입니까?

디스크 공간이 가득 차서 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웹사이트 파일이 있습니다 /var/www.

/var/www처음이라 다른 파티션으로 옮기는 것 외에는 어떤 파일을 제거해야 할지 모르겠습니다.

그리고 한 가지 더, 에서 로그 파일, 기록 등을 제거하는 올바른 방법은 무엇입니까 /dev/sda5?

답변1

빠르고 더티: /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또는 /var/cache에서 항목을 제거하려면 apt-get clean
  3. 예 /var/www를 /home으로 이동하세요.
  4. 아마도 /var 파티션을 제거하세요..

답변3

고장은 무엇입니까 /var/lib? 내 시스템과 같은 경우 대부분(예: 500MB)은 /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원하는 것인지 확인하십시오. 주요 문제는 아니기 때문에 변경해서는 안 된다고 말하고 싶지만 일주일 동안의 로그만 보관하고 싶을 수도 있습니다. 이 경우 다음과 같이 시도해 보세요.

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

관련 정보