[질문] [C언어] Dummy File 생성하는 코드에서 생성되는 파일용량과 사용한 HDD용량 불일치 문제

kimdongseol의 이미지

안녕하세요.

리눅스 서버 HDD Full 테스트를 위해서 C언어로 코딩을 했습니다.(코드 참조..)

생성되는 파일의 사이즈를 확인하면 아래와같이 Dummy_file_1이 생성되는걸 확인할 수 있습니다.

==================================================================
Every 1.0s: ls -alh Mon Sep 21 13:24:30 2015

total 8.1M
drwxr-xr-x 2 root root 4.0K Sep 21 13:24 .
drwxr-xr-x 22 root root 4.0K Jan 2 2015 ..
-rw-r--r-- 1 root root 2.0G Sep 21 13:24 Dummy_file_1
==================================================================

하지만 df 명령어로 파일시스템의 사용가능한 사이즈를 확인하면,
Used 목록의 사이즈가 Mbyte 단위로 증가하는걸 확인할 수 있습니다.

이론적으로는 한개의 파일이 생성될 때마다 2GB가 증가해야 하는게 맞는데,
뭐가 잘못된건지 잘 모르겠네요.

관련 정보나 이 현상에 대한 원인을 아시는분 조언좀 부탁드립니다.

#include
#include

int main(void)
{
int i, j;
int count=1;
char filename[100];
FILE *fp;

printf("Dummy File Create Count : ");
scanf("%d",&j);

while(count {
sprintf(filename, "Dummy_file_%d", count);
fp = fopen(filename, "w");
for(i=0;i {
fseek(fp,(1024*1024),SEEK_CUR);
fprintf(fp,"C");
}
printf("Dummy_file_%d \n", count);
count++;
fclose(fp);
}
return 0;
}

qiiiiiiiip의 이미지


이론적으로 만들어지는 파일 하나당 크기는
1024*1024*1024*1024 + 1024*1024 byte = 약 1T 네요.

제 64bit, ext4 머신에서는 ls 해보면 1.1T 로 나오네요.

그런데, 현재 파일크기 넘어서 fseek를 하고 있고,
이 경우 sparse file이 만들어진다고 하네요.
https://administratosphere.wordpress.com/2008/05/23/sparse-files-what-why-and-how/

Sparse files are basically just like any other file except that blocks that only contain zeros (i.e., nothing) are not actually stored on disk. This means you can have an apparently 16G file – with 16G of “data” – only taking up 1G of space on disk

위에 보여주신 ls 결과를 보면 파일 하나 크기는 2G 인데,
디렉토리 사이즈는 8.1M 네요. 이 크기만큼 늘어나고 있을듯.

그리고 1T가 아니라 2G 가 나오는 이유는 아마도 사용하고 계신 파일시스템의 최대치가 아닐까 싶네요.

댓글 달기

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