
파일(또는 특정 크기의 여러 파일)에 맞게 파티션의 크기를 계산하는 방법이 있습니까?
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 정도?