因此,我检查了我的服务器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 等创建单独的文件系统。
首先,以 root 身份运行以下命令,找出正在占用磁盘空间的内容
cd /; du -sh * 2> /dev/null
看起来您已经运行了该命令。
我可以看到 /var 占用了太多空间,将其放在单独的文件系统上可能是个好主意。您可以分享“vgs”命令的输出吗?
以下是您需要采取的步骤;详细步骤看这里
- 重新启动系统,在 grub 菜单中按任意键并将以下内容附加到内核行
systemd.unit=rescue.target
- 它会要求输入 root 密码,输入 root 密码
lvchange --activate y
lvreduce -r -L 800G /dev/mapper/centos-home
您可以指定新尺寸700G、800Glvextend -r -L 100G /dev/mapper/centos-root
假设你想将 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
3.备份我的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