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出力の場合はおなじみの形式の1つである人間の形式)です。sBkBMBMiBGBGiBTBTiB%cylchscompact

unitこれは実際には使用されないように意図されていますが、mkpartすべての測定に使用可能な単位タイプを定義することもあります("明示的な単位サフィックスなしでユーザーが提供したコンテンツの解釈")。

ディスク比率を使用してパーティションのサイズを決定します。 0%/ 50%/ 100%を使用して同じサイズの2つのパーティションを提供することはできないため、正確なサイズで指定することをお勧めします。

# 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

おすすめ記事