parted + Linux에서만 백분율로 디스크 파티션을 만드는 것이 맞습니까?

parted + Linux에서만 백분율로 디스크 파티션을 만드는 것이 맞습니까?

parted 명령을 통해 각각의 새 디스크에서 2개의 파티션을 생성하려고 합니다.

예를 들어:

sdg                  8:96   0    50G  0 disk
├─sdg1               8:97   0    25G  0 part
└─sdg2               8:98   0    25G  0 part

위의 예와 같이 디스크 크기는 50G이고 각 디스크마다 2개의 파티션을 생성하려고 합니다.

우리는 이것을 통해

parted --script /dev/sdg mklabel msdos
parted --script /dev/sdg mkpart primary 0% 50%
parted --script /dev/sdg mkpart primary  50% 100%

요청한 2개의 파티션을 생성하기 위한 위의 내용이 맞습니까? 같은 크기를 가지고

GB 단위로 값을 주는 게 아니라 0% 50%와 로 값을 사용하고 있어서 이렇게 묻는 겁니다.100%

참고 - 기타 관련 링크 https://askubuntu.com/questions/507274/how-to-create-two-partitions-with-exactly-the-same-size

답변1

언제나 그렇듯, 컴퓨터에 있는 문서부터 시작해야 합니다 man parted.

mkpart [part-type name fs-type] start end새 파티션을 만듭니다. 및 파티션 테이블로만 지정할 part-type수 있으며 , 또는 중 하나 msdos여야 합니다 . dvh파티션 테이블은 GPT에 필수이며 선택사항입니다. , , , , , , , , , , , , , , 또는 그 중 하나일 수 있습니다.primarylogicalextendednamefs-typefs-typebtrfsext2ext3ext4fat16fat32hfshfs+linux-swapntfsreiserfsudfxfs

start아무것도 없으므로 end문서를 더 검색해야 합니다. 마침내 우리는 다음을 발견했습니다:

unit unit위치와 크기를 표시할 때뿐만 아니라 명시적인 단위 접미사 없이 사용자가 지정한 단위를 해석할 때 사용할 단위를 설정합니다. (섹터), (바이트), (장치 크기의 백분율), (실린더), (실린더, 헤드, 섹터) 또는 (입력의 경우 메가바이트, unit출력의 경우 친숙한 형식 중 하나인 인간의 형식)일 수 있습니다.sBkBMBMiBGBGiBTBTiB%cylchscompact

unit이는 실제로 사용되지 않도록 의도되었지만 mkpart모든 측정에 사용 가능한 단위 유형을 정의하기도 합니다("명시적인 단위 접미사 없이 사용자가 제공한 콘텐츠 해석").

디스크 비율을 사용하여 파티션 크기를 결정합니다. 0% / 50% / 100%를 사용하여 동일한 크기의 파티션 두 개를 제공할 수 없으므로 정확한 크기로 지정하는 것이 좋습니다.

# Identify disk OR see the next step for a test scenario
dsk=/dev/sdg

# If you prefer, try with this loopback device
dd if=/dev/zero bs=1M count=1024 >/tmp/img
dsk=$(losetup --show --find /tmp/img)

# Create partition table on target disk/device
parted --script "$dsk" mklabel msdos

# MiB on the disk
mib=$(parted "$dsk" unit MiB print | awk '/^Disk/{print $NF+0; exit}')
printf "Size of %s is %d MiB\n" "$dsk" $mib

# Two identically sized partitions using the entire disk
psz=$((mib/2 -1))
printf "Partition size is %d MiB\n" $psz

parted "$dsk" unit MiB mkpart primary 1 $((1+psz))
parted "$dsk" unit MiB mkpart primary $((1+psz)) $((1+psz +psz))

# Show what we have (change "s" to "MiB" for better readability)
parted "$dsk" unit s print

그런데, 백분율 기반 할당을 사용한 결과는 다음과 같습니다. 보시다시피 파티션은거의크기는 동일하지만 정확하지는 않음:

dd if=/dev/zero bs=1M count=1024 >/tmp/img
dsk=$(losetup --show --find /tmp/img)
parted --script "$dsk" mklabel msdos
parted "$dsk" mkpart primary 0% 50%      # Notice 0% isn't sector zero
parted "$dsk" mkpart primary 50% 100%
parted "$dsk" unit s print               # Count by sectors

Model: Loopback device (loopback)
Disk /dev/loop0: 2097152s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start     End       Size      Type     File system  Flags
 1      2048s     1048575s  1046528s  primary
 2      1048576s  2097151s  1048576s  primary

관련 정보