我们想通过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 个分区,以上是否正确?具有相同尺寸
我问这个是因为我使用值 as0% 50%
和100%
,而不是给出 GB 中的值
注意 - 其他相关链接 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 分区表是必需的,并且 是可选的。可以是, , , , , , , , , , , ,或之一。primary
logical
extended
name
fs-type
fs-type
btrfs
ext2
ext3
ext4
fat16
fat32
hfs
hfs+
linux-swap
ntfs
reiserfs
udf
xfs
没有任何内容start
,end
因此我们需要进一步搜索该文档。最终我们发现:
unit unit
将单位设置为显示位置和大小时使用的单位,以及在不带有明确单位后缀时解释用户给出的单位。可以是(扇区)、(字节)、、、、、、(设备大小的百分比)、(柱面)、 (柱面、磁头、扇区)或(用于输入的 兆字节,以及人类友好的形式unit
之一)用于输出)。s
B
kB
MB
MiB
GB
GiB
TB
TiB
%
cyl
chs
compact
这实际上是为了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