Disk Full 과 fopen 의 연관관계?

befoed의 이미지

이번에 삽질 하다가 발견한건데 , 리눅스에 이런 제한이 있는지
혹은 다른 문제 인지 확인이 되지 않아 여러 고수님들에게
도움을 요청 합니다.

간단히 말씀 드리면 Disk가 100% 사용중인 상태에서 ( "/" 파티션은 아니고 , "/home" 파티션에 Wirte할 영역이 전혀 없습니다. )
fopen 및 fputs 를 이용하여 계속 HDD에 정보를 write 하는 시험 입니다.
그런데 Disk가 100%라고 할지라도 fopen및 fputs가 정상적으로 실행이 되는것 처럼 보이더군요. ( 실제 기록은 안되더라도 return 값은 정상 ). 그러다가 어느 순간부터 fopen 이 되지 않습니다. 별도의 테스트 프로그램을 만들어 확인을 해봤더니
fopen 이 606번째 되는 시점 부터 fopen이 되지 않더군요.
몇 Byte를 Write 하는지는 전혀 상관이 없지만 , 몇번을 확인해도 606번째 부터는 fopen이 되지 않습니다.
혹시 606번째라는 무슨 상관 관계가 있나요?

사용하고 있는 시스템은 RedHat 7.3 입니다.

befoed의 이미지

지금 다시 해보니 fputs는 전혀 상관이 없네요..
fopen 하고 fclose 만 해도 동일한 현상이 나타나네요..

싸인문구;;남들은 멋있게 쓰던데..난 멀해야 할까..

fromdj의 이미지

제 생각엔 open 되고 fputs 가 되는건 버퍼링 한계까지 버퍼링이 되기
때문에 성공적으로 write한다고 리턴은 되는거 같네요,
정말 0 프로의 기억공간이라면 inode 를 추가할수가 없을 지경이라면
메모리 공간에 만들어 지기는 하는데 그것이 실제 디스크에 기록되지
못해서 다시 open 이 안되는게 아닐까.. ^^;

^^ be cool ~
http://fromdj.pe.kr

befoed의 이미지

자문 자답 :
헉 .. 아무래도 삽질 한듯 합니다. ㅜㅜ
테스트 한 프로그램이
파일명을 1번부터 +1씩 증가하면서 파일을 계속 만드는 것을 했었습니다.
그런데 파일이 이미 있는 것들은 open시에 에러가 나지 않고 ,
새롭게 파일을 만들려고 할때 에러가 발생 하는 군요.

처음 테스트시에 df -k로 확인해본 결과가 아래와 같았고 , 또한 File은 만들어 지지만 내용을 적을수 없기에 파일 생성이 안된다는것에 대하여는 생각을 안했던 미스 인듯 합니다.
df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda3 10080520 5248448 4320004 55% /
/dev/sda1 1004024 21368 931652 3% /boot
/dev/sda6 259561216 25756092 220620180 11% /export
/dev/sda2 10080520 10080520 0 100% /home
none 1032828 0 1032828 0% /dev/shm

결론적으로 보자면
만약 Available이 0 이라면
어느정도까지는 파일 생성은 가능 하지만 ( 어느정도까지인지 또한 왜 가능한지 혹시 아시는분 있으면 알려 주시면 감사하겠습니다. ) 파일의 내용은 더이상 들어 갈 수 없다.
이네요..

틀린점 있으면 지적 부탁 드리겠습니다.
여러 고수님들께 감사 드립니다.

싸인문구;;남들은 멋있게 쓰던데..난 멀해야 할까..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.