如何修改Linux下WildFly 10服务器WAR及文件上传所用的tmp目录位置?
解决WildFly 10上传补丁时的"No space left on device"异常
针对你遇到的/opt分区空间不足导致大补丁上传失败的问题,结合tomahawk上传组件和WildFly的特性,我整理了几个实用的解决方案:
1. 调整tomahawk上传临时目录到剩余空间充足的分区
默认情况下,tomahawk的<t:inputFileUpload>会把上传文件存到系统的/tmp目录,而如果/tmp和WildFly安装目录都在/opt分区下,大文件很快就会占满空间。你可以通过修改应用的web.xml来指定新的临时目录:
在你的应用WEB-INF/web.xml中添加以下配置:
<context-param> <param-name>org.apache.myfaces.UPLOAD_TEMP_DIR</param-name> <param-value>/data/tomahawk_uploads</param-value> </context-param>
然后创建这个目录并设置正确的权限(确保WildFly运行用户有读写权限):
mkdir -p /data/tomahawk_uploads chown wildfly:wildfly /data/tomahawk_uploads
之后重启应用,上传的临时文件就会存到新目录,避开/opt分区的空间限制。
2. 修改WildFly的standalone临时目录位置
补丁最终会被复制到$JBOSS_HOME/standalone/tmp/appName.war,这个目录同样在/opt分区下。你可以把WildFly的临时目录迁移到其他分区:
方法A:用软链接迁移临时目录
# 先停止WildFly服务 systemctl stop wildfly # 备份原临时目录的内容(如果有需要保留的文件) mv /opt/wildfly/standalone/tmp /opt/wildfly/standalone/tmp_backup # 在剩余空间充足的分区创建新临时目录 mkdir /data/wildfly_tmp # 建立软链接指向新目录 ln -s /data/wildfly_tmp /opt/wildfly/standalone/tmp # 启动WildFly systemctl start wildfly
方法B:修改WildFly配置文件
编辑$JBOSS_HOME/standalone/configuration/standalone.xml,找到<paths>节点下的tmp路径配置,修改为新的目录:
<path name="tmp" path="/data/wildfly_tmp"/>
同样要确保新目录的权限正确,然后重启WildFly生效。
3. 清理/opt分区的冗余文件
如果暂时无法迁移目录,可以先清理/opt分区的无用文件释放空间:
- 清理WildFly的旧日志文件:
# 删除30天前的日志归档文件 rm -rf /opt/wildfly/standalone/log/*.log.* - 删除standalone/deployments目录下未使用的旧WAR/EAR包(比如已卸载的版本)
- 清理系统临时文件(注意不要删除正在使用的文件,建议在维护窗口操作):
# 清理超过72小时未访问的临时文件 tmpwatch 720 /tmp
4. 扩展/opt分区的存储空间
如果以上方法都只是临时解决,你可以考虑扩容/opt分区:
- 如果服务器有未分配的磁盘空间,可以通过LVM工具扩展/opt分区的容量
- 或者添加新磁盘,将WildFly整个安装目录迁移到新磁盘,然后用软链接指向原路径:
systemctl stop wildfly mv /opt/wildfly /data/wildfly ln -s /data/wildfly /opt/wildfly systemctl start wildfly
建议优先尝试调整临时目录的方案,这是最快解决问题的方式,之后再根据情况进行清理或扩容。
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

