주어진 파일에 맞는 FAT 파티션의 최소 크기를 계산하는 방법은 무엇입니까?

주어진 파일에 맞는 FAT 파티션의 최소 크기를 계산하는 방법은 무엇입니까?

파일(또는 특정 크기의 여러 파일)에 맞게 파티션의 크기를 계산하는 방법이 있습니까?

USB 드라이브에 FAT32 파티션을 만들고 거기에 1Gb 파일(또는 500Mb 파일 두 개 등)을 저장하고 파티션을 가능한 한 작게 만들고 싶다고 가정해 보겠습니다.

시행착오 외에 이 파티션의 크기를 계산하는 알고리즘은 무엇입니까?

답변1

이는 클러스터 크기(일반적으로 4KB이지만 포맷 시 다른 값을 선택할 수 있음)와 이 1GB가 저장되는 파일 수에 따라 다릅니다. 모든 파일은 최소한 하나의 클러스터를 사용하고 클러스터보다 큰 파일은 정수의 클러스터를 사용하여 매우 드문 예외를 제외하고 파일 끝 부분의 불필요한 공간을 차지합니다. 각 파일의 클러스터 크기로 반올림(ceil)하면 됩니다.

from math import ceil

def calculate_fat32_used_space(file_sizes, cluster_size=4096):
    clusters_used = [ceil(size / cluster_size) for size in file_sizes]
    total_clusters = sum(clusters_used)
    return total_clusters * cluster_size
print(calculate_fat32_used_space([536870912, 536870912])) # For two 500MB files

모든 크기는 바이트 단위입니다(무엇이든 쉽게 변환할 수 있음). 파일 크기 배열을 매개변수로 얻으면 그게 전부입니다. 다른 단위 크기와 함께 작동하도록 이를 조정하는 것은 쉽지 않습니다. 또한 FAT32 fs 자체의 공간 측면에서 일부 오버헤드도 설명하겠습니다. 아마 5MB 정도?

관련 정보