파일 크기 제한

파일 크기 제한

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에 도달하기 전에 두 프로그램 모두 중지됩니다.

관련 정보