file size
글쓴이: dreamer / 작성시간: 화, 2004/02/24 - 2:08오후
if ((fp = fopen("aaa", "wb")) == NULL) { perror("open error"); exit (1); } length = 0x8000000; fseek(fp, length - 1, SEEK_SET); fwrite(&zero, 1, 1, fp);
처럼 해서 128M 파일을 만들었습니다.
/hddb에 100개를 만들었습니다.물론 파일 이름은 다르게요
그런데
df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdb1 39516244 283796 37225128 1% /hddb
처럼 실제로 사용된 것 처럼 나오지는 않는데, 왜 이런가요.
is -l을 해 보면 실제 128M의 파일이 만들어 져 있습니다.
Forums:
# df -h또는# df -m등을 해보시기 바랍니다./hd
# df -h
또는
# df -m
등을 해보시기 바랍니다.
/hddb에 만들어진 파일말고 다른 파일은 없었는지도 한번 체크해보시고요...
근데 무엇이 문제인지 정확하게 질문을 하시지 않는것 같네요.
128M짜리 파일이 100개있는데 실제로 사용된것처럼 나오지 않는다는 소리는
원래 283M는 사용중이었다는 수리인지...아니면 무슨의도로 위와같은 테스트를 하신건지가
궁금하군요.
그에따른 답변은 많이 틀릴 수가 있으니 테스트를 해야겠다고 생각한 이유와 초기의
디스크 상태와 파일이 만들어진 이후의 디스크 상태등을 좀더 구분해서 올려놓으시는게
어떨까 생각합니다.
------------------------------
좋은 하루 되세요.
128M위치에 기록을 한다고 해서 실제로 0~128M까지의 공간을 할당하
128M위치에 기록을 한다고 해서 실제로 0~128M까지의 공간을 할당하지는 않습니다.
중간에 기록하지 않은 부분은 비워두고 실제로 기록한 곳만 공간을 할당하기때문에 파일사이즈와 사용공간이 차이가 나는것입니다.
linux에서 ext2는 저런식으로 사용합니다만
vfat에서는 실제 공간을 모두 할당하는듯 하더군요..
실제 파일을 128M만큼 쓴것이 아니라, 파일의 크기만을 128M로 만든
실제 파일을 128M만큼 쓴것이 아니라, 파일의 크기만을 128M로 만든 것입니다
파일의 맨 마지막에만 '0'으로 채워 넣으면 파일의 크기는 원하는 것 만큼 만들 수 있는 트릭을 사용 했지요.
실제 'ls -l'을 해도 파일의 크기는 원하는 만큼 커짐을 알 수 있음니다.
그런데 df를 하면 그 파티션에서 차지 하는 파일의 크기만큼이 사용 된것으로 나타나야 되는데 그렇지가 않군요. 파티션에서 사용한 사이즈와 남은 사이즈를 체크할때 파일의 크기를 이용 하는것이 아니라 다른 방법을 쓰나 봅니다.
혹시 df 할때 적용 하는 방법은 무엇인가요?
그런 종류의 파일을 sparse file 이라고 합니다.뛰어다니면
그런 종류의 파일을 sparse file 이라고 합니다.
뛰어다니면서 기록한 놈들은 사실 파일 크기를 늘어나게하여도 정작 기록된 데이터는 크지 않습니다.
그 파일을 tar 한다고 가정합시다. tar는 압축이 아니므로 거의 크기가 비슷한 파일로 나오는데..
tar cvf aa.tar aaa
와
tar cvSf aa2.tar aaa
로 생성되는 aa.tar, aa2.tar 를 비교해보세요.
압축한것이 아님에도 크기는 훨씬 작게 나옵니다.
---
http://coolengineer.com
http://www-903.ibm.com/kr/techinfo/pseri
http://www-903.ibm.com/kr/techinfo/pseries/tech/techdoc5.html
이것도 괜찮은 참고가 되겠네요 :)
---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D
댓글 달기