[질문] [C언어] Dummy File 생성하는 코드에서 생성되는 파일용량과 사용한 HDD용량 불일치 문제
안녕하세요.
리눅스 서버 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;
}
이론적으로 만들어지는 파일 하나당
이론적으로 만들어지는 파일 하나당 크기는
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/
위에 보여주신 ls 결과를 보면 파일 하나 크기는 2G 인데,
디렉토리 사이즈는 8.1M 네요. 이 크기만큼 늘어나고 있을듯.
그리고 1T가 아니라 2G 가 나오는 이유는 아마도 사용하고 계신 파일시스템의 최대치가 아닐까 싶네요.
댓글 달기