如何编写脚本来创建使用整个设备的单个分区?

如何编写脚本来创建使用整个设备的单个分区?

我专门使用它在 Amazon EC2 实例上分区和挂载 EBS 卷,但实际上这应该普遍适用于初始化任何新驱动器。

正如问题所说,我想编写创建单个主分区的脚本,该主分区使用给定设备上的所有可用空间。我不会提前知道该设备有多大,而且可能非常大(即几 TB)。

在研究中,它似乎parted是用于脚本编写的最佳命令。我认为类似的东西parted /dev/sdf mkpart primary 0 END就是我想要的,但我很难找到一种优雅的方式来确定 END 应该是什么。有谁知道一个简单的方法来做到这一点?

答案1

你可以这样做:

parted /dev/sdf --script -- mkpart primary 0 -1

答案2

当我尝试使用其他答案时遇到了问题。对我有用的是使用像这样的百分比方法:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

parted分区对齐方式及其处理方式存在问题。这两篇文章稍微讨论了这个问题:

这些文章中概述的数学在我的场景中根本不起作用。埋在第二条评论中的一条评论中,链接有人建议使用百分比,这确实有效。

顺便说一句,您通常还需要为 HDD 贴上标签。要通过 CLI 执行此操作parted

$ parted /dev/sde --script -- mklabel msdos

-或者-

$ parted /dev/sde --script -- mklabel gpt

取决于您的硬盘。

答案3

你可以做...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

...对于 msdos 类型。对于 gpt 来说几乎同样的事情......

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

或使用sgdisk(非交互式gdisk):

sgdisk -n 1:0:0 /dev/disk

您可以在文件系统创建期间标记磁盘。

相关内容