2014-11-13 5 views
1

우리의 생산 Linux 상자에서 "장치에 남아있는 공간이 없습니다"라는 메시지가 FileNotFoundException이됩니다.FileNotFoundException - 장치에 남은 공간 없음

나는 웹상에서이 문제가 inodes의 수와 관련되어있을 수 있지만 여기에는 문제가없는 것으로 보입니다. 시스템 관리자가 inodes이 충분 함을 확인합니다.

그 밖의 무엇입니까?! 나는 이것을 2 일 동안 파고 들었다.

필요한 경우 추가 정보를 제공 할 수 있습니다. 미리 감사드립니다.

정확한 스택 추적은 다음과 같습니다.

13 Nov 2014 10:09:32 ERROR error:113 - Failed to move file: /wr/data/import/xml/YC00210097_ba7b688c-6b46-11e4-b8e8-07cc96f6b24f_1415891227642.xml. 
java.io.FileNotFoundException: /wr/data/import/processeddir/YC00210097_ba7b688c-6b46-11e4-b8e8-07cc96f6b24f_1415891227642_2014_11_13_10_09_32_241.xml (No space left on device) 
    at java.io.FileOutputStream.open(Native Method) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:194) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:145) 
    at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:671) 
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:653) 
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:607) 
    at org.apache.commons.io.FileUtils.moveFile(FileUtils.java:1818) 
    at com.yellowbook.util.YBFileIterator.finished(YBFileIterator.java:105) 
    at com.yellowbook.diadexchange.exchangejob.ImportJob.execute(ImportJob.java:279) 
    at com.yellowbook.scheduling.diadexchange.JobExchangeScheduler.executeImportJob(JobExchangeScheduler.java:34) 
    at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273) 
    at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311) 
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529) 
+0

장치에 충분한 공간이 남아 있습니까? – Sizik

+0

많은 inode를 사용할 수 있으며 아직 공간이 없습니다 (예 : 단일 100gig 파일을 가진 100gig 드라이브는 inode의 톤을 가지며 전혀 공간이 없습니다. –

+0

@Sizik 그렇습니다. sys 관리자가 확인한 첫 번째 예입니다. 충분한 디스크 공간과 충분한 inode가 있습니다. –

답변

1

processeddir에있는 파일의 수는 문제가 있었다. 따라서 대상 디렉토리에 너무 많은 파일이 있었기 때문에 (겉으로보기에는 혼란 스럽습니다) FileNotFoundException이 표시되었습니다. 압축 된 (그러나 단일) 파일에이 파일의 큰 하위 집합을 저장 한 후에 예외가 사라졌습니다.

관련 문제