디스크 공간이 가득 차서 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
- 나는
mv /var/log/*gz /var/log/*.0 /home/backup/var/log
yum clean packages
또는 /var/cache에서 항목을 제거하려면 apt-get clean- 예 /var/www를 /home으로 이동하세요.
- 아마도 /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