rhel 32비트 운영 체제의 최대 파일 크기 제한은 무엇입니까? 운영 체제의 파일 크기에 제한이 있습니까? 제한이 설정된 경우 루트 및 oaa에 대한 제한을 알려주십시오.
답변1
파일 크기는 운영 체제가 아닌 파일 시스템 유형에 따라 제한됩니다. 일반적으로 운영 체제는 여러 파일 시스템을 지원하므로 "운영 체제 파일 크기 제한"과 같은 것은 없습니다. 잘 알려진 파일 시스템에는 몇 가지 제한 사항이 있습니다.
FAT32 - 4Gib
NTFS - 16Eib
ext2/3 - 16Gib - 2Tib (depends from block size)
ext4 - 16Gib - 16Tib
XFS - 9Eib
ZFS - 16Eib
답변2
10년 넘게 32비트 Linux 애플리케이션은 다음 구현 덕분에 2GiB(2^31)보다 큰 파일에 액세스할 수 있었습니다.대용량 파일 지원. 현재 운영 체제 제한은 8EiB(2^63)이며 곧 더 이상 낯설지 않게 될 것입니다…
파일 크기에 대한 하한이 없는 파일 시스템이 필요합니다.
답변3
대용량 파일 지원(선형 FS)은 기본적으로 지원되지 않습니다.
- 32비트 커널
- 32비트 프로세스는 64비트 커널에서 실행됩니다.
아래에서 언급했듯이우편 엽서컴파일 타임에 커널에서 명시적으로 활성화되어야 합니다. 그렇지 않으면 파일 크기가 다음으로 제한됩니다.2147483647바이트= 2^31 - 1(1바이트는 커널 또는 FS용으로 예약될 수 있음)
당신이 가지고 있다면32비트 RHEL다음 명령을 사용하면 빠르게 확인할 수 있습니다.
dd if=/dev/zero of=./LargeFile bs=1024 count=3000000
당신이 가지고 있다면64비트 RHEL그리고 프로시저가 32비트 시스템용으로 컴파일되었으므로 동일한 문제가 발생합니다. 다음 프로그램을 실행하여 이를 확인할 수 있습니다.
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(int argc, char *argv[], char *envp[]) { int result; long long to_write = 3000000000; int file_descriptor = open("LargeFile" , O_CREAT | O_RDWR , 0600); char chunk[1024]; memset(chunk , 'A' , 1024); while(to_write > 0) { result = write(file_descriptor , chunk , 1024); if(result != 1024) { printf("***ERROR*** %d\n" , result); break; } to_write -= 1024; usleep(200); } close(file_descriptor); return 0; }
프로그램을 32비트 실행 파일로 컴파일해야 합니다.
gcc -m32 -Wall -g main.c -o main
파일 크기가 3GB에 도달하기 전에 두 프로그램 모두 중지됩니다.