그래서 서버를 확인해 df -h
보니 centos-root 용량이 99%였습니다.
불과 며칠 전만 해도 뿌리수는 87%에 불과했다. 어떤 이유에서인지 너무 빨리 증가합니다. 공간을 적게 사용하는 방법에 대한 제안이 있으십니까?
[root@host ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 50G 713M 99% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 401M 3.4G 11% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/mapper/centos-home 873G 136G 738G 16% /home
/dev/sda1 494M 172M 323M 35% /boot
[root@host ~]# du -csh /*
0 /bin
146M /boot
0 /dev
23M /etc
136G /home
0 /lib
0 /lib64
0 /media
0 /mnt
24K /nginxweblog
990M /opt
du: cannot access `/proc/61778/task/61778/fd/4': No such file or directory
du: cannot access `/proc/61778/task/61778/fdinfo/4': No such file of directory
du: cannot access `/proc/61778/fd/4': No such file of directory
du: cannot access `/proc/61778/fdinfo/4': No such file of directory
0 /proc
41M /root
401M /run
0 /sbin
0 /srv
0 /sys
376K /tmp
2.6G /usr
14G /var
153G total
[root@host ~]# cd /; du -sh * 2> /dev/null
0 bin
146M boot
0 dev
23M etc
136G home
0 lib
0 lib64
0 media
0 mnt
24K nginxweblog
990M opt
0 proc
41M root
401M run
0 sbin
0 srv
0 sys
376K tmp
2.6G usr
14G var
[root@host ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 931.02g 0
[root@host ~]# cd /var/log
[root@host log]# ls
anaconda cron dmseg lastlog maillog-20160201 messages-20160124 ppp secure-20160124 spooler-20160124 yum.log
audit cron-20160111 dmesg.old maillog mariadb messages-20160201 samba secure-20160201 spooler-20160201 yum.log-20150101
boot.log cron-20160117 firewalld maillog-20160111 messages nginx secure spooler tallylog yum.log-20160101
btmp cron-20160124 grubby maillog-20160117 messages-20160111 ntpstats secure-20160111 spooler-20160111 tuned
btmp-20160201 cron-20160201 httpd maillog-20160124 messages-20160117 php-fpm secure-20160117 spooler-20160117 wtmp
[root@host ~]# du -csh /var/*
0 /var/adm
1.3M /var/cache
0 /var/crash
36K /var/db
0 /var/empty
0 /var/games
0 /var/gopher
0 /var/kerberos
13G /var/lib
0 /var/local
0 /var/lock
90M /var/log
0 /var/mail
0 /var/nis
0 /var/opt
0 /var/preserve
0 /var/run
51M /var/spool
4.0K /var/tmp
0 /var/var
4.0K /var/www
0 /var/yp
14G total
[root@host andi]# du -csh /var/lib/*
64K /var/lib/alternatives
8.0K /var/lib/authconfig
0 /var/lib/cs
0 /var/lib/dav
0 /var/lib/dbus
0 /var/lib/dhclient
0 /var/lib/dnsmasq
0 /var/lib/games
0 /var/lib/initial-setup
0 /var/lib/initramfs
4.0K /var/lib/logrotate.status
0 /var/lib/misc
13G /var/lib/mysql
8.0K /var/lib/NetworkManager
40K /var/lib/nginx
0 /var/lib/ntp
0 /var/lib/os-prober
320K /var/lib/pear
64K /var/lib/php
0 /var/lib/phpMyAdmin
4.0K /var/lib/plymouth
0 /var/lib/polkit-1
4.0K /var/lib/postfix
4.0K /var/lib/rhsm
58M /var/lib/rpm
0 /var/lib/rpm-state
4.0K /var/lib/rsyslog
0 /var/lib/samba
0 /var/lib/stateless
16K /var/lib/systemd
0 /var/lib/tpm
0 /var/lib/udisks2
0 /var/lib/upower
0 /var/lib/virtuoso
13M /var/lib/yum
13G total
답변1
산출뒤그리고df사용된 디스크로 정렬하지 말고 기록 중인 삭제된 파일을 검색하세요. 파일 쓰기 프로세스를 중지(다시 시작)하거나 상자를 다시 시작하십시오.
lsof | awk '/deleted/ && $5 ~ /w/'
로그 회전을 구현하고 로그가 그렇게 놀라운 속도로 계속 증가하는 이유를 알아내고 근본 원인을 수정합니다.
답변2
짧은 대답은 데이터를 삭제하거나 루트 파일 시스템의 실제 크기를 늘려 공간을 추가하는 것입니다.
긴 대답;
이렇게 큰 디스크가 있고 lvm도 사용하는 경우 /var, /tmp, /var/log, /opt 등에 대해 별도의 파일 시스템을 생성하는 것이 좋습니다.
먼저 루트로 다음 명령을 실행하여 무엇이 디스크 공간을 차지하고 있는지 알아보세요.
cd /; du -sh * 2> /dev/null
이미 명령을 실행한 것 같습니다.
/var가 너무 많은 공간을 차지하고 있으므로 별도의 파일 시스템에 저장하는 것이 좋을 수도 있습니다. "vgs" 명령의 출력을 공유할 수 있습니까?
수행해야 할 단계는 다음과 같습니다.자세한 단계는 여기를 참조하세요.
- 시스템을 재부팅하고 grub 메뉴에서 아무 키나 누른 다음 커널 줄에 다음을 추가합니다.
systemd.unit=rescue.target
- 루트 비밀번호를 묻는 메시지가 나타나면 루트 비밀번호를 입력하세요.
lvchange --activate y
lvreduce -r -L 800G /dev/mapper/centos-home
새로운 크기 700G, 800G를 지정할 수 있습니다.lvextend -r -L 100G /dev/mapper/centos-root
루트를 100G 파일 시스템으로 설정하려는 경우 -r 옵션을 잊지 마십시오. 그렇지 않으면 resize2fs /dev/mapper/centos-root를 실행해야 합니다.
답변3
질문 작성자는 다음과 같은 해결책을 제시합니다.
최종 편집: 해결책을 찾았습니다(적어도 일시적으로).
service php-fgm restart
저장공간을 99%에서 34%로 줄이는 기능 을 수행했습니다 . 하지만 보다 영구적인 솔루션을 얻으려면 내 서버에서 로그 회전 및 기타 작업을 수행해야 할 것 같습니다.
답변4
너 큰 것 같아mysql재파티셔닝을 사용할 수 있도록 데이터베이스와 작은 파티션고팟아니면 장소를 바꾸든지mysql데이터를 /home에 저장합니다. 이는 때때로 안전하지 않거나(해커) 버그가 있습니다.
무엇을 바꿔야 할까요?mysql데이터를 저장합니다.
새 디렉토리가 다음과 같다고 가정합니다./home/mynewsqldir
1.충분히 명백합니다.
service stop mysql
2.데이터베이스를 새 위치에 복사
cp -R /var/lib/mysql /home/mynewsqldir
cp -R /var/lib/mysql/users /home/mynewsqldir
삼.지원내 cnf문서
cp /etc/mysql/my.cnf /home/my.cnf.backup
4.원본 텍스트 수정내 cnf파일 및 찾기데이터 디렉토리그리고소켓줄을 그은 다음
datadir=/home/mynewsqldir
socket=/home/mynewsqldir
5.보안을 위해 디렉터리 권한 업데이트
chown -R mysql:mysql /home/mynewsqldir
6.이름을 바꿔라mysql디렉토리/var/lib/혹시라도 문제가 발생할 경우를 대비해 모든 것이 예상대로 작동하면 제거할 수 있습니다.
7.업데이트 예정인 보안 문제아파모어
ln -s /home/mynewsqldir/ /var/lib/mysql
echo "alias /var/lib/mysql/ -> /home/mynewsqldir/," >> /etc/apparmor.d/tunables/alias
8.새로고침아파모어파일 구성 및 시작하기mysql
sudo /etc/init.d/apparmor reload
start mysql