Q : 리눅스에서 2GB를 넘는 파일을 사용할 수 있나요?
A : x86에서 2.2.x 버전의 커널까지는 파일 크기가 2GB를 넘을 수 없다는 제한이
있습니다. 이는 리눅스에서 사용하는 EXT2 파일시스템의 문제가 아니라 리눅스에서
파일시스템을 추상화한 계층인 VFS(Virtual File System)와 glibc의 문제입니다. EXT2
파일시스템에서는 이미 파일 크기를 나타내는데 64비트를 사용하고 있기 때문에
문제가 되지 않습니다. 그러나 VFS에서는 그냥 long을 사용하고 있기 때문에 32비트
시스템에서는 2GB(32비트로는 4G까지 표시할 수 있지만, signed이기 때문에 2G가
됩니다)의 제한이 생깁니다. 그렇지만 알파같은 시스템에서는 long이 64비트이기
때문에 이런 제한은 없습니다.

커널 외에도 C Library인 glibc의 문제도 있습니다. glibc에서는 파일 크기와
offset을 나타내는데 모두 long을 쓰기 때문에 여기서도 2GB의 제한이 발생합니다.

2.4.x 커널부터는 파일 크기와 offset을 나타내는데 long long을 사용합니다. 따라서
커널 자체에서의 제한은 사라졌습니다. 프로그램에서 2GB를 넘는 파일을 사용하려면
glibc를 2.1.3 버전 이상을 사용해야 합니다. 이 버전부터 64비트 offset을
지원합니다.

2.2.x 버전에서도 커널 패치를 하면 2G를 넘는 파일을 사용할 수 있습니다. 이 패치는
LFS(Large File System)이라고 부르며 http://www.scyld.com/software/lfs.html에서
구할 수 있습니다. 여기서는 LFS와 관련된 이슈들을 다루고 있습니다.

  dbtown-rchwin.jpg
 이 글의 권한은 dbtown.net 에 있습니다.
자료를 스크랩하실땐 출처를 밝혀주세요 ^^