Gparted 및 Gdisk의 최적 파티션 크기

Gparted 및 Gdisk의 최적 파티션 크기

4TB(4,000,225,165,312바이트) 드라이브를 1TB 짝수 파티션으로 자르려고 합니다.

이 파티션을 최소 1^3바이트(~1GB)(1000000000)의 파티션으로 더 분할하고 싶습니다.

글쎄요, 몇 시간 동안 검토한 끝에 저는 몇 가지 상충되는 결론을 발견했습니다.

  • Gparted를 사용하여 1000000000바이트(953.67431640625MB) 파티션을 생성할 수 없습니다.
  • KDEparted를 사용하여 1000000000바이트 파티션을 선택할 수 있었고 결국 1000341504가 되었습니다.
    • 954MB의 결과는 1000341504바이트입니다.
    • 1000341504*1000*4(~4TB)가 드라이브보다 크기 때문에 4001366016000이므로 확장되지 않습니다.
    • 1,000,000,000,000을 벌면 최종 결과는 1,000,000,716,800입니다.
    • 따라서 전체 크기가 증가할수록 추가 오버헤드는 감소합니다.
    • KDEparted는 섹터를 사용하지 않는 sfdisk 백엔드를 사용합니다.
    • Gparted는 MB 정렬을 사용합니다.
  • Gdisk를 사용하면 1953125000 섹터(각각 512바이트)를 사용하여 1000000000000(1000^4) B(~1TB) 파티션을 만들 수 있습니다.

이를 허용하려면 Gdisk를 사용하여 섹터가 있는 파티션을 만든 다음 Gparted를 사용하여 이동해야 합니다. 그러나 1000^4B 파티션을 삭제하고 Gparted를 사용하여 사용 가능한 공간을 채우기 위해 새 파티션을 생성하면 추가로 1,000,000,716,800바이트(143섹터)가 제공됩니다.

이는 Gdisk 경고 "파티션이 2048 섹터 경계에 정렬됩니다"와 관련이 있을 수 있지만 Gdisk의 공간을 최대화하고 있다고 생각합니다. 이제 Gdisk를 먼저 사용하고 Gparted를 사용하고 Gdisk를 다시 사용해야 할 것 같습니다..? 이 문제를 해결하는 더 최적화된 방법이 있습니까?

중요한 부분은 어떤 정렬(바이트, 실린더, MiB)이 가장 좋은지 이해하는 것입니다. 이 기사는 다음과 같이 도움이 됩니다. "많은 최신 파티셔닝 도구는 1M[i]B 경계를 따라 전체 드라이브를 정렬합니다. 이는 영리합니다. 512바이트 섹터, 4KB 섹터, 모든 블록 크기의 SSD 등 다양한 유형의 드라이브가 있습니다."https://superuser.com/questions/393914/what-is-partition-alignment-and-why-whould-i-need-it

분명히 최근 드라이브는 4096바이트 섹터 크기, SSD 512 제거 요구 사항 및 OG 512 섹터 크기를 사용하기 때문에 1MiB가 선택되었습니다. 나를 혼란스럽게 하는 것은 MiB(1,048,576바이트)가 4096바이트보다 얼마나 큰지입니다. 아직도 이유를 이해하지 못하지만 MiB가 지배적인 진영인 것 같습니다. 지금까지 일했습니다. "2048 섹터 경계"는 실제로 2048바이트에서 시작하는 것이 아니라 2048*512= 1MiB를 의미합니다("MiB 정렬"이 더 명확함). 다음 링크도 도움이 됩니다.https://www.rodsbooks.com/gdisk/advice.html

바이너리로 생각해야합니다. 10을 곱할 수는 없습니다. 최대 1TB까지 더할 수는 없습니다. 그렇다면 MiB가 4K 4096B 섹터 크기보다 훨씬 클 때 MiB 정렬을 사용하는 이유는 무엇입니까? 이것은 미래를 바라보려는 시도인가?

답변1

바이트 해상도로 분할하는 것은 불가능합니다. 가능하더라도 끝없는 정렬 문제가 발생할 수 있습니다.

섹터 크기는 512 또는 4096이며 모든 파티션 크기는 이 크기의 배수여야 합니다. 관례적으로, 그렇게 하지 않을 타당한 이유가 없는 한 MiB 정렬(1048576바이트의 배수)을 고수해야 합니다.

또 다른 문제는 파티션 테이블 자체에 약간의 공간이 필요하므로 어떤 파티션도 섹터 0에서 시작할 수 없다는 것입니다. 마찬가지로 드라이브의 마지막 섹터(GPT 백업 헤더에 사용됨)를 사용할 수 없습니다.

따라서 모든 파티션의 크기가 동일하고 바이트 경계를 초과하지 않기를 원하는 경우 대략적인 내용을 도울 수 없습니다.

다음은 4TB 디스크에 있는 1TB 파티션의 예입니다.

(parted) unit b
(parted) print
Model: Loopback device (loopback)
Disk /dev/loop0: 4000225165312B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start           End             Size           File system  Name  Flags
 1      1048576B        999999668223B   999998619648B
 2      1000000716800B  1999999336447B  999998619648B
 3      2000000385024B  2999999004671B  999998619648B
 4      3000000053248B  3999998672895B  999998619648B

(parted) unit mib
(parted) print
Model: Loopback device (loopback)
Disk /dev/loop0: 3814912MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start       End         Size       File system  Name  Flags
 1      1.00MiB     953674MiB   953673MiB
 2      953675MiB   1907348MiB  953673MiB
 3      1907349MiB  2861022MiB  953673MiB
 4      2861023MiB  3814696MiB  953673MiB

이는 단지 예일 뿐이며 다른 경계를 선택할 수도 있습니다.

더 많은 파티션(1GB 언급)을 생성해야 하는 경우 이러한 경계를 결정하는 스크립트를 직접 작성해야 합니다. GPT에는 기본적으로 128개의 파티션 제한이 있습니다.

답변2

그것은아니요파티션 크기는 1'000'000'000의 배수가 되는 것이 좋습니다. 이 숫자는 4096으로 나눌 수 없습니다. 이는 많은 Linux 하위 시스템의 적절한 성능에 매우 중요합니다. 내가 당신이라면 대신 1024 * 1024 * 1024(1073741824바이트 또는 정확히 1GiB) 또는 이에 가까운 것을 사용합니다(그러나 많은 Linux 디스크 유틸리티는 1MiB 경계를 선호하므로 최소한 1024*1024로 똑같이 나눌 수 있습니다).

답변3

몇 가지 파티션 구성표를 추가하고 있습니다.

MiB로 내림:

999999668224 ~1TB    /2  953674MiB
499999834112 ~500GB  /2  476837
249999917056 ~250GB  /2  238418.5 ->  238418  249999392768
124999958528 ~125GB  /2  119209.25    119209  124999696384
62499979264  ~63GB   /2  59604.625 -> 59604   62499323904
31249989632  ~32GB   /2  29802                31249661952
15624994816  ~16GB   /2  14901.15625  14901   15624830976
7812497408   ~8GB    /2  7450.578125  7450    7811891200
3906248704   ~4GB    /2  3725.28.. -> 3725    3905945600
1953124352   ~2GB    /2  1862.64.. -> 1862    1952448512
976562176    ~1GB        931.32..  -> 931     976224256
1024 * 976224256 = 999653638144

조정당 최대 0.64MiB가 손실됩니다. 즉, 사용되지 않은 총 346030080B(330MiB)(999999668224-999653638144) 또는 총 1000^4-999653638144 = 346361856/1048576 = 330.31MiB입니다. 아마도 이것이 가장 좋은 방법 일 것입니다. 수용 가능한 손실입니다.

931MiB부터 빌드:

953334, 479672, 238336, 119168, 59584, 29792, 14896, 7448, 3724, 1862, 931 MiB

999643152384 ~1TB        953334 MiB
502972547072 ~500GB  *2  479672  
249913409536 ~250GB  *2  238336  
124956704768 ~125GB  *2  119168  
62478352384  ~63GB   *2  59584   
31239176192  ~34GB   *2  29792   
15619588096  ~16GB   *2  14896   
7809794048   ~8GB    *2  7448    
3904897024   ~4GB    *2  3724
1952448512   ~2GB    *2  1862
976224256    ~1GB    *2  931

953674-953334 = 340MiB..도 중간 크기 조정 없이 허용 가능한 손실입니다.

893760  ~960GB
446880  ~480GB
223440  ~240GB
111720  ~120GB
55860   ~60GB
27930   ~30GB
9310    ~10GB
4655    ~5GB
931 MiB ~1GB

이러한 크기는 SSD 및 OS 크기에 적합합니다. 953334-893760 = 59574MiB는 사용되지 않았지만 ~60GB 파티션에 충분합니다(남은 3714에 20MiB를 더하면 20971520B, 일반 HDD의 추가 바이트는 ~4GB 파티션에 충분함)(최종 정렬 문제에 따라 다름).

예를 들어, 내 4TB 드라이브에는 225,165,312B의 추가 공간, 즉 53.68MiB가 있습니다. 내 2TB 드라이브에서는 2x893760, 2x55860, 2x3724, 1x931(총 1907619)을 수용할 수 있었고 256MiB가 남았습니다(109, 88로 변경, 아마도 GPT 테이블에 사용됨). 나는 처음부터 끝까지 이것을 채웠습니다. 마지막에는 0.7MiB(90113 B)가 사용되지 않았고 처음에는 1MiB가 있었습니다. 그러나 내 파티션 번호는 거꾸로 되어 있습니다(fdisk에 거꾸로 나열되어 있음에도 불구하고 아마 그대로 사용할 수 있을 것입니다). 또 다른 접근 방식은 미리 계산하는 것입니다. 먼저 MiB에서 가능한 가장 큰 파티션을 만들어 최종 정렬 수를 읽습니다. 위와 동일하게 1907728-1907619=109MiB여야 합니다.

그러나 Gparted에서 허용되는 최소 크기는 256MiB입니다. ..아하하, 기본 유형을 btrfs로 남겨두었기 때문에 256을 사용하고 ext4는 8MiB만 사용합니다. 그래서 이것은 실제로 작동합니다. 예!

편집: 931MiB를 930으로 조정하면 더 균일한 고장을 얻을 수 있다는 것을 깨달았습니다.

892800  ~960GB
426400  ~480GB
223200  ~240GB
111600  ~120GB
55800   ~60GB
27900   ~30GB
18600   ~20GB
9300    ~10GB
4650    ~5GB
930 MiB ~1GB
465

그러다가 465를 464로 바꾸면 "7MiB"까지 더 나눌 수 있다는 것을 깨달았습니다.

890880  ~960GB
445440  ~480GB
223720  ~240GB
111360  ~120GB
55680   ~60GB
27840   ~30GB
9280    ~10GB
4640    ~5GB
928 MiB ~1GB
464
232
116
58
26
14
7 MiB

위의 두 가지 중 어느 것이 더 마음에 드는지 잘 모르겠습니다. 또는 900으로 더 반올림하면 더 읽기 쉬운 청크가 생성됩니다.

864000  ~960GB
432000  ~480GB
216000  ~240GB
108000  ~120GB
54000   ~60GB
27000   ~30GB
18000   ~20GB
9000    ~10GB
4500    ~5GB
900 MiB ~1GB
450
275

이는 3.2%의 공간(30/931)만 손실하고 더 기억에 남고 읽기 쉬운 크기를 제공합니다.

또는 800,000MiB까지 반올림할 수 있지만 그렇게 하면 11% 손실(833.3/931)이 발생하고 ~1GB 블록은 833.33MiB로 고르지 않게 됩니다. 25000에서 5를 십진수로 나누어 ~5GB를 5000MiB 크기로 만들 수 있지만 5000MiB는 5GB USB 드라이브에 맞지 않기 때문에 혼란스러울 수 있습니다. 그러나 1GB와 같은 더 작은 드라이브의 경우 "930" 또는 "900" 계획을 사용할 수 있습니다. 실제로 1GB는 953.67MiB이므로 950MiB가 적합합니다. 그러면 끝 정렬에 3.67MiB가 남고 시작 GPT 파티션 테이블에 2048개의 섹터가 남습니다(예: 1MiB).

800000  ~960GB
400000  ~480GB
200000  ~240GB
100000  ~120GB
50000   ~60GB or 64GB drive
25000   ~30GB or 32GB drive
15000   ~15GB part or 16GB drive
5000    ~5GB  part or 8GB  drive
smaller drives (and backups as partitions):
950 MiB ~1GB    (4750 ~5GB)
425

또는 중간 크기를 균일하게 유지하면 최대 120GB SSD까지 대부분의 드라이브에 적합합니다. 더 작은 1GB 파티션도 일반적으로 USB 스틱에 맞도록 50MiB만큼 줄어들 수 있으므로 HDD에서 1000MiB로 유지할 수 있습니다.

800000  ~960GB
400000  ~480GB
200000  ~240GB
100000  ~120GB
60000   ~60GB or 64GB drive
30000   ~30GB or 32GB drive
15000   ~15GB part or 16GB drive
5000    ~5GB  part or 8GB  drive
1000    ~1GB  part or 1GB  drive
smaller drives (and backups as partitions):
950 MiB ~1GB    (4750 ~5GB)
425

관련 정보