服务器日志空间解决方案-外挂磁盘

最近 PHP 项目和 JAVA 项目放置在同一台服务器,但是 tomcat 日志过大导致空间爆满; PHP 项目用户数量比较大,每天早上用户6点准时开单,这个时候突然登录不了了,我登录服务器发现日志已经占满了空间;

本身 Tomcat 项目已经做了切割日志,日志按天输出,但是有些 JAVA 开发人员,为了定位问题将大批量 SQL 写在日志上,缺忘了删除,导致某天的日志突然间过大, 达到了 15G 以上;

方案:

在删除日志之后,进过商量考虑到的解决方案有两个:

  1. 使用 logrotate 对日志进行压缩限制; 这个方案觉得不合理,因为日志每天都要用来定位问题,如果压缩日志显得非常不方便,这个方案排除;

  2. 外挂磁盘,将日志导出到磁盘,这样磁盘满了也不影响应用; 外挂磁盘,然后日志目录建立软链接,指向外挂磁盘,这样日志满了,也不影响应用,只是无法继续生成日志而已,另一方面也方便定位日志;


步骤:

一、购买外挂磁盘,登录 Ubuntu 服务器,然后查看:

1
df -h

目前这样看不到磁盘,因为还没挂载;

二、查看磁盘:

1
2
3
4
5
fdisk -l

> Disk /dev/vda: 40 GiB, 42949672960 bytes, 8388680 sectors
> ...
> Disk /dev/vdb: 100 GiB, ...

可以看到有另外的 100G 磁盘 /dev/vdb;

三、建立新分区:

1
fdisk /dev/vdb
  • n = 创建新分区
  • 1 = 成为磁盘上的首个分区
  • P = 直接创建主分区 (e是扩展分区,扩展分区无法直接用,需要在新建逻辑分区)

我们选择 P PS:如果之前是重新建立分区,要先 unmount 磁盘,然后对磁盘删除,选择 d,然后再创建主分区;

可以选择创建多少个分区,根据提示填写相应数字即可;

四、格式化分区:

创建完分区 /dev/vdb 之后 mkfs.ext4 直接格式话新建的分区就行

1
mkfs.ext4 /dev/vdb

五、挂载:

将磁盘挂载到 /opt 目录下,原有/opt 下的内容将会看不见,因为被覆盖住了,需要 unmount 才能看到;

1
mount /dev/vdb /opt

最后查看挂载磁盘

1
df -h

六、创建软链接:

已经挂载上了,我们在这里建立一个 tomcat-logs/ 目录,然后到 tomcat 下,把原有 logs/ 目录删除, 建立软链接 logs/ 指向 tomcat-logs/

1
2
mkdir -p /opt/tomcat-logs/
ln -s /xxx/tomcat/logs /opt/tomcat-logs/

Comments