리눅스 디스크 풀 상태에서 write시 데이터에 쓰레기 값이..

06dorae의 이미지

OS : CentOS Linux release 7.5.1804
커널 : 3.10.0-693.11.6.el7.x86_64

안녕하세요. 좀 특이한 상황이 나와서 검색어도 잘 안떠오르고 해서...

이렇게 글을 올리게 되었습니다.

상황은

데이터 구조가 특정 구조체(char, int, double, 배열이 포함)를 헤더를 정의하고

헤더 뒤 부터 계속 write하는 형태의 데이터 구조를 작성하는 프로그램이 있습니다.
(정확히는 라이브러리화 되어 있고 해당 함수를 콜하는 프로그램입니다.)

근데 테스트로 계속 write시 디스크 풀까지 가는 상황이 오는데 이때가 문제입니다.

보통 디스크가 풀이 나면 더 이상 write를 하지 못해서 프로그램이 죽거나 해야하는데

계속 write하는 것으로 보입니다. 그래서 해당 데이터를 열어서 출력하는 프로그램으로

데이터를 출력해보면 디스크 풀인 시점부터 쓰레기 값들이 작성되어 있습니다.

이것이 리눅스의 특성인 것인지... 그냥 계속 강제적으로 write하는 것인지..

무엇이 문제인지 찾는 중인데 조언이나 도움을 좀 주시면 감사하겠습니다.

bushi의 이미지

cat /dev/zero > ./data.bin

가 종료되는 일 없이 무한하게 수행된다는 것이죠 ?
리눅스는 이런 특성을 가지고 있지 않습니다.
파일 시스템 드라이버의 버그일 가능성도 있고 디스크 드라이버의 버그일 가능성도 있지만 작성하신 프로그램의 버그일 가능성에 비하면 없는 거나 마찬가지라 생각합니다.
익명 사용자의 이미지

음 소스 흐름상 write 함수 콜 후 반환값이 해당 데이터 사이즈가 아니면 오류로 리턴 하도록 되어있는데
write함수가 디스크 풀 상태에서도 정상 사이즈 리턴하는 것처럼 보이네요. 상황을 만들고 테스트를 더 해봐야겠네요.
aix에선 디스크 풀이면 write 자체를 안한다고 하는데...

bushi의 이미지

세상에 이름을 알린 unix 계열 OS 들이 제공하는 write() 시스템 콜은
http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html
언저리를 벗어나지 못합니다.

김정균의 이미지

linux 상의 문제는 아니고 파일 시스템의 문제라 보입니다. 아마 ext4 로 해 보시면 원하시는 결과가 나오지 않을까 싶습니다.

RHEL/CentOS 7의 커널에서 xfs 상에서 100% 차게 되면 xfs filesystem 오류로 시스템이 먹통이 되는 경우도 많습니다. xfs가 disk full 이 되는 순간에 이상 동작을 하는 것으로 보입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.