Linux系统盘占满后解决办法

时间:2022-04-12 05:12:34

        昨天遇到一个感觉很坑的问题,今天总结了一下昨天遇到的问题和解决办法,希望以后的小伙伴,和我一样遇到坑项目后,能快速解决。

       遇到的问题如下,tomcat

                                    java.io.IOException: No space lefton device

                                   at java.io.FileOutputStream.writeBytes(Native Method)

                                   at java.io.FileOutputStream.write(FileOutputStream.java:282)

        日志信息不再打印,用户上传信息失败。果断的df –h查看了各分区的情况,当时我就吃惊了,系统盘50G满了,占用率100%,最伤心的是还看到197G的两个盘都没用,这还玩毛线啊,我开始以为日志打印过多导致的盘被占满了,查看了下日志才打了一个多G,又查看了各个文件的占有率,才发现用户所有在前端系统上传的资料也全放在Tomcat工程目录下,不满才怪,由于都是用户上传的信息图片,我不敢乱删,又由于系统已经上线,转盘后怕代码找不到图片路径,后面还要改代码,然后跑去发布更新,这样一来一去,不被骂死才怪。

       然后就想用重定向建立软连接的方法来解决这个问题,(软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;软连接可以跨文件系统;软链接有自己的inode,并在磁盘上有一小片空间存放路径名;软连接可以对一个不存在的文件名进行连接; 软连接可以对目录进行连接)就是不改变以前的配置,然后使用链接将所有的数据分配到剩下空间大的盘里面,实现后的效果如下,

Linux系统盘占满后解决办法

建立链接后的图片

Linux系统盘占满后解决办法

        由于昨天只是全速去解决问题去了,没有截图,今天只有处理过后的图片了。

        下面就教你们如何建立链接,在建立连接的时候,要把服务停掉,不然你操作的时候一边读取拷贝,用户还不停的上传,这个事情做起来就没玩没了了。

具体操作如下啊

cat  /proc/partitions

//先建立两个文件夹:

mkdir vdb2

mkdir vdc2

//进入到opt目录下

cd /opt/

//将vdb2挂做连接点

mount/dev/vdb2  vdb2/

mount/dev/vdc2  vdc2/

//将文件格式化为ext4

mkfs.ext4/dev/vdc2

//在opt目录下再讲文件改名

mvapache-tomcat-6.0.29  apache-tomcat-6.0.29-bak

mvapache-tomcat-6.0.29-task apache-tomcat-6.0.29-task-bak

//进入 vdb2

cd vdb2/

//创建文件夹

mkdir tomcat1

//使用ln –sf建立软连接

ln -sf tomcat1/../apache-tomcat-6.0.29

同上:

cd vdc2/

mkdir tomcat2

ln -sf tomcat2../apache-tomcat-6.0.29-task

cd ../

rmapache-tomcat-6.0.29

rmapache-tomcat-6.0.29-task

//将一个文件链接在另一个文件上

// 其中 vdb2/tomcat1就是源文件, apache-tomcat-6.0.29是链接文件名,其作用是当编辑 apache-tomcat-6.0.29,实际上是链接编辑vdb2/tomcat1。

ln -sf vdb2/tomcat1  apache-tomcat-6.0.29

ln vdc2/tomcat2 -sf apache-tomcat-6.0.29-task

cp  apache-tomcat-6.0.29-bak/*  apache-tomcat-6.0.29/

//强制复制文件

cp apache-tomcat-6.0.29-task-bak/*  apache-tomcat-6.0.29-task/ -fr

cp  apache-tomcat-6.0.29-bak/*  apache-tomcat-6.0.29/ -fr

复制完毕后进入tomcat原文件

cdapache-tomcat-6.0.29/bin

//启动tomcat

sh startup.sh

//查看进程是否启动成功启动成功就ok了

ps -ef |grep tom


        链接建立完毕后,你后面的操作就和以前操作tomcat一样操作就行了,不需要去管理链接,和目标文件。

        我只是写了大概的步骤和一些主要的操作的命令,有些简单的操作命名我删除了,也只是给你们一个思路,说不定你有更好的办法解决呢。